Merge branch 'Lime3DS:master' into master

This commit is contained in:
LimeGradient 2024-04-14 23:01:36 -04:00 committed by GitHub
commit 487b60faad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
184 changed files with 474 additions and 201 deletions

View File

@ -46,20 +46,8 @@ function pack_artifacts() {
tar czvf "$ARCHIVE_FULL_NAME" "$REV_NAME"
fi
mv "$ARCHIVE_FULL_NAME" artifacts/
if [ -z "$SKIP_7Z" ]; then
# Create .7z
ARCHIVE_FULL_NAME="$ARCHIVE_NAME.7z"
mv "$REV_NAME" "$RELEASE_NAME"
7z a "$ARCHIVE_FULL_NAME" "$RELEASE_NAME"
mv "$ARCHIVE_FULL_NAME" artifacts/
# Clean up created release artifacts directory.
rm -rf "$RELEASE_NAME"
else
# Clean up created rev artifacts directory.
rm -rf "$REV_NAME"
fi
# Clean up created rev artifacts directory.
rm -rf "$REV_NAME"
}
if [ -n "$UNPACKED" ]; then

View File

@ -284,4 +284,4 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
asset_paths: '["./**/*.tar.*","./**/*.AppImage","./**/*.7z","./**/*.zip","./**/*.apk","./**/*.aab"]'
asset_paths: '["./**/*.tar.*","./**/*.AppImage","./**/*.zip","./**/*.apk"]'

View File

@ -19,9 +19,25 @@
Download the latest release from [Releases](https://github.com/Lime3DS/Lime3DS/releases).
---
### Android
Download the latest `.apk` release from [Releases](https://github.com/Lime3DS/Lime3DS/releases). (A F-Droid/IzzyOnDroid release is planned to drop soon)
The recommended method of downloading Lime3DS on Android is via Obtainium:
1. Download and install Obtainium from [here](https://github.com/ImranR98/Obtainium/releases) (use the file named `app-release.apk`)
2. Open Obtainium and click 'Add App'
3. Type `https://github.com/Lime3DS/Lime3DS` into the 'App Source URL' section
4. Click 'Add'
5. Click 'Install' (or 'Update' if you have an existing APK install)
6. Lime3DS is now ready to use
Using Obtainium will allow for quick and easy installation of updates.
\
\
\
Alternatively, you can install the latest APK from the [Releases](https://github.com/Lime3DS/Lime3DS/releases) page.
This will require a new APK to be manually downloaded each time an update is released.
---
### Linux
Lime3DS is available as an AppImage on the [Releases](https://github.com/Lime3DS/Lime3DS/releases) page.
@ -30,6 +46,9 @@ We are also on Flathub:
<a href=https://flathub.org/apps/io.github.lime3ds.Lime3DS><img width='180' alt='Download on Flathub' src='https://dl.flathub.org/assets/badges/flathub-badge-en.png'/></a>
# Build Instructions
Please refer to our website's [wiki](https://lime3ds.github.io/pages/wiki.html) in order to find building instructions for Windows, Linux, Android and MacOS
# Contribute
If you believe you can help with this project, please lend us your talent! We're a team of passionate enthusiasts who need all the help we can get.

View File

@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonym data bliver indsamlet&lt;/a&gt;for at hjælpe med at forbedre Citra.&lt;br/&gt;&lt;br/&gt;Har du lyst til at dele din brugsdata med os?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3895,6 +3895,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>Möchten Sie &lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;anonyme Nutzungsdaten&lt;/a&gt; an das Citra Team senden und so helfen, Citra weiter zu verbessern?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3894,6 +3894,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Συλλέγονται ανώνυμα δεδομένα&lt;/a&gt; για τη βελτίωση του Citra. &lt;br/&gt;&lt;br/&gt;Θέλετε να μοιραστείτε τα δεδομένα χρήσης σας με εμάς;</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3896,6 +3896,11 @@ Por favor, compruebe la instalación de FFmpeg usada para la compilación.</tran
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Se recogen datos anónimos&lt;/a&gt; para ayudar a mejorar Citra. &lt;br/&gt;&lt;br/&gt;¿Quieres compartir tus datos de uso con nosotros?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonyymiä tietoa kerätään&lt;/a&gt;parantaaksemme Citraa. &lt;br/&gt;&lt;br/&gt;Haluaisitko jakaa käyttötetoa meidän kanssa?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3896,6 +3896,11 @@ Veuillez vérifier votre installation FFmpeg utilisée pour la compilation.</tra
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Des données anonymes sont collectées&lt;/a&gt; afin d&apos;aider à l&apos;amélioration de Citra. &lt;br/&gt;&lt;br/&gt;Souhaitez vous communiquer vos données avec nous ?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3892,6 +3892,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3895,6 +3895,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Data anonim dikumpulkan&lt;/a&gt;untuk membantu Citra menjadi lebih baik. &lt;br/&gt;&lt;br/&gt;Apakah Anda ingin membagikan penggunaan data Anda dengan kami?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3896,6 +3896,11 @@ Verifica l&apos;installazione di FFmpeg usata per la compilazione.</translation>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Vengono raccolti dati anonimi &lt;/a&gt; per aiutare lo sviluppo di Citra. &lt;br/&gt;&lt;br/&gt;Vuoi condividere i tuoi dati di utilizzo con noi?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3897,6 +3897,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;匿名のデータ&lt;/a&gt;がCitraの改善のために収集されます&lt;br/&gt;&lt;br/&gt;利用状況データの提供に同意しますか?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3896,6 +3896,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>Citra를 &lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;익명데이터가 수집됩니다&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;사용 데이터를 공유하시겠습니까?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3891,6 +3891,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anoniminiai duomenys yra renkami &lt;/a&gt; kad padėtumėte Citra komandai. &lt;br/&gt;&lt;br/&gt;Ar norite pasidalinti savo duomenimis su mumis?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3894,6 +3894,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonym data samles inn&lt;/a&gt; for å forbedre Citra. &lt;br/&gt;&lt;br/&gt;Vil du dele dine brukerdata med oss?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3896,6 +3896,11 @@ Controleer de FFmpeg-installatie die wordt gebruikt voor de compilatie.</transla
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonieme gegevens worden verzameld&lt;/a&gt; om Citra te helpen verbeteren. &lt;br/&gt;&lt;br/&gt; Wilt u uw gebruiksgegevens met ons delen?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonimowe dane są zbierane&lt;/a&gt; w celu wsparcia rozwoju Citry. &lt;br/&gt;&lt;br/&gt;Czy chciałbyś się z nami podzielić danymi użytkowania?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3895,6 +3895,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Dados anônimos são recolhidos&lt;/a&gt; para ajudar a melhorar o Citra. &lt;br/&gt;&lt;br/&gt;Gostaria de compartilhar os seus dados de utilização conosco?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3894,6 +3894,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Date anonime sunt colectate&lt;/a&gt; pentru a ajuta îmbunătățirea lui Citra. &lt;br/&gt;&lt;br/&gt; Doriți să partajați uzul de datele cu noi?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3898,6 +3898,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>Для оказания помощи в улучшении приложения Citra &lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;проводится сбор анонимных данных&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;Поделиться данными об использовании?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Citrayı geliştirmeye yardımcı olmak için&lt;/a&gt; anonim veri toplandı. &lt;br/&gt;&lt;br/&gt;Kullanım verinizi bizimle paylaşmak ister misiniz?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3893,6 +3893,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Dữ liệu ẩn danh được thu thập&lt;/a&gt; để giúp cải thiện Citra. &lt;br/&gt;&lt;br/&gt;Bạn có muốn chia sẻ dữ liệu của bạn với chúng tôi?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3896,6 +3896,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;我们收集匿名数据&lt;/a&gt;来帮助改进 Citra 。&lt;br/&gt;&lt;br/&gt;您愿意和我们分享你的使用数据吗?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -3894,6 +3894,11 @@ Please check your FFmpeg installation used for compilation.</source>
</context>
<context>
<name>GMainWindow</name>
<message>
<location filename="../../src/lime_qt/main.cpp" line="144"/>
<source>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve Citra. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
<translation>&lt;a href=&apos;https://citra-emu.org/entry/telemetry-and-why-thats-a-good-thing/&apos;&gt;收集匿名的使用資料&lt;/a&gt;可以用來改善 Citra。&lt;br/&gt;&lt;br/&gt;您同意將您的使用資料分享給 Citra 嗎?</translation>
</message>
<message>
<location filename="../../src/lime_qt/main.cpp" line="147"/>
<source>Telemetry</source>

View File

@ -278,11 +278,6 @@ android.applicationVariants.configureEach {
include("*.apk")
into(layout.buildDirectory.dir("bundle"))
}
project.copy {
from(layout.buildDirectory.dir("outputs/bundle/${variant.name}"))
include("*.aab")
into(layout.buildDirectory.dir("bundle"))
}
}
}
tasks.named("bundle${capitalizedName}").configure { finalizedBy(copyTask) }

View File

@ -619,8 +619,93 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
true
}
R.id.menu_emulation_adjust_scale_reset_all -> {
resetAllScales()
true
}
R.id.menu_emulation_adjust_scale -> {
showAdjustScaleDialog()
showAdjustScaleDialog("controlScale")
true
}
R.id.menu_emulation_adjust_scale_button_a -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_A)
true
}
R.id.menu_emulation_adjust_scale_button_b -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_B)
true
}
R.id.menu_emulation_adjust_scale_button_x -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_X)
true
}
R.id.menu_emulation_adjust_scale_button_y -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_Y)
true
}
R.id.menu_emulation_adjust_scale_button_l -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.TRIGGER_L)
true
}
R.id.menu_emulation_adjust_scale_button_r -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.TRIGGER_R)
true
}
R.id.menu_emulation_adjust_scale_button_zl -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_ZL)
true
}
R.id.menu_emulation_adjust_scale_button_zr -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_ZR)
true
}
R.id.menu_emulation_adjust_scale_button_start -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_START)
true
}
R.id.menu_emulation_adjust_scale_button_select -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_SELECT)
true
}
R.id.menu_emulation_adjust_scale_controller_dpad -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.DPAD)
true
}
R.id.menu_emulation_adjust_scale_controller_circlepad -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.STICK_LEFT)
true
}
R.id.menu_emulation_adjust_scale_controller_c -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.STICK_C)
true
}
R.id.menu_emulation_adjust_scale_button_home -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_HOME)
true
}
R.id.menu_emulation_adjust_scale_button_swap -> {
showAdjustScaleDialog("controlScale-" + NativeLibrary.ButtonType.BUTTON_SWAP)
true
}
R.id.menu_emulation_adjust_opacity -> {
showAdjustOpacityDialog()
true
}
@ -769,16 +854,16 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
.show()
}
private fun showAdjustScaleDialog() {
private fun showAdjustScaleDialog(target: String) {
val sliderBinding = DialogSliderBinding.inflate(layoutInflater)
sliderBinding.apply {
slider.valueTo = 150f
slider.value = preferences.getInt("controlScale", 50).toFloat()
slider.value = preferences.getInt(target, 50).toFloat()
slider.addOnChangeListener(
Slider.OnChangeListener { slider: Slider, progress: Float, _: Boolean ->
textValue.text = (progress.toInt() + 50).toString()
setControlScale(slider.value.toInt())
setControlScale(slider.value.toInt(), target)
})
textValue.text = (sliderBinding.slider.value.toInt() + 50).toString()
textUnits.text = "%"
@ -789,20 +874,85 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
.setTitle(R.string.emulation_control_scale)
.setView(sliderBinding.root)
.setNegativeButton(android.R.string.cancel) { _: DialogInterface?, _: Int ->
setControlScale(previousProgress)
setControlScale(previousProgress, target)
}
.setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int ->
setControlScale(sliderBinding.slider.value.toInt())
setControlScale(sliderBinding.slider.value.toInt(), target)
}
.setNeutralButton(R.string.slider_default) { _: DialogInterface?, _: Int ->
setControlScale(50)
setControlScale(50, target)
}
.show()
}
private fun setControlScale(scale: Int) {
private fun showAdjustOpacityDialog() {
val sliderBinding = DialogSliderBinding.inflate(layoutInflater)
sliderBinding.apply {
slider.valueTo = 100f
slider.value = preferences.getInt("controlOpacity", 50).toFloat()
slider.addOnChangeListener(
Slider.OnChangeListener { slider: Slider, progress: Float, _: Boolean ->
textValue.text = (progress.toInt()).toString()
setControlOpacity(slider.value.toInt())
})
textValue.text = (sliderBinding.slider.value.toInt()).toString()
textUnits.text = "%"
}
val previousProgress = sliderBinding.slider.value.toInt()
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.emulation_control_opacity)
.setView(sliderBinding.root)
.setNegativeButton(android.R.string.cancel) { _: DialogInterface?, _: Int ->
setControlOpacity(previousProgress)
}
.setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int ->
setControlOpacity(sliderBinding.slider.value.toInt())
}
.setNeutralButton(R.string.slider_default) { _: DialogInterface?, _: Int ->
setControlOpacity(50)
}
.show()
}
private fun setControlScale(scale: Int, target: String) {
preferences.edit()
.putInt("controlScale", scale)
.putInt(target, scale)
.apply()
binding.surfaceInputOverlay.refreshControls()
}
private fun resetScale(target: String) {
preferences.edit().putInt(
target,
50
).apply()
}
private fun resetAllScales() {
resetScale("controlScale")
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_A)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_B)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_X)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_Y)
resetScale("controlScale-" + NativeLibrary.ButtonType.TRIGGER_L)
resetScale("controlScale-" + NativeLibrary.ButtonType.TRIGGER_R)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_ZL)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_ZR)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_START)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_SELECT)
resetScale("controlScale-" + NativeLibrary.ButtonType.DPAD)
resetScale("controlScale-" + NativeLibrary.ButtonType.STICK_LEFT)
resetScale("controlScale-" + NativeLibrary.ButtonType.STICK_C)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_HOME)
resetScale("controlScale-" + NativeLibrary.ButtonType.BUTTON_SWAP)
binding.surfaceInputOverlay.refreshControls()
}
private fun setControlOpacity(opacity: Int) {
preferences.edit()
.putInt("controlOpacity", opacity)
.apply()
binding.surfaceInputOverlay.refreshControls()
}
@ -818,8 +968,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
}
private fun resetInputOverlay() {
resetAllScales()
preferences.edit()
.putInt("controlScale", 50)
.putInt("controlOpacity", 50)
.apply()
val editor = preferences.edit()

View File

@ -939,11 +939,17 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
scale *= (preferences.getInt("controlScale", 50) + 50).toFloat()
scale /= 100f
scale *= (preferences.getInt("controlScale-$buttonId", 50) + 50).toFloat()
scale /= 100f
val opacity: Int = preferences.getInt("controlOpacity", 50) * 255 / 100
// Initialize the InputOverlayDrawableButton.
val defaultStateBitmap = getBitmap(context, defaultResId, scale)
val pressedStateBitmap = getBitmap(context, pressedResId, scale)
val overlayDrawable =
InputOverlayDrawableButton(res, defaultStateBitmap, pressedStateBitmap, buttonId)
InputOverlayDrawableButton(res, defaultStateBitmap, pressedStateBitmap, buttonId, opacity)
// The X and Y coordinates of the InputOverlayDrawableButton on the InputOverlay.
// These were set in the input overlay configuration menu.
@ -995,6 +1001,15 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
scale *= (preferences.getInt("controlScale", 50) + 50).toFloat()
scale /= 100f
scale *= (preferences.getInt(
"controlScale-" + NativeLibrary.ButtonType.DPAD,
50
) + 50).toFloat()
scale /= 100f
val opacity: Int = preferences.getInt("controlOpacity", 50) * 255 / 100
// Initialize the InputOverlayDrawableDpad.
val defaultStateBitmap = getBitmap(context, defaultResId, scale)
val pressedOneDirectionStateBitmap = getBitmap(context, pressedOneDirectionResId, scale)
@ -1007,7 +1022,8 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
buttonUp,
buttonDown,
buttonLeft,
buttonRight
buttonRight,
opacity
)
// The X and Y coordinates of the InputOverlayDrawableDpad on the InputOverlay.
@ -1052,6 +1068,11 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
scale *= (preferences.getInt("controlScale", 50) + 50).toFloat()
scale /= 100f
scale *= (preferences.getInt("controlScale-$joystick", 50) + 50).toFloat()
scale /= 100f
val opacity: Int = preferences.getInt("controlOpacity", 50) * 255 / 100
// Initialize the InputOverlayDrawableJoystick.
val bitmapOuter = getBitmap(context, resOuter, scale)
val bitmapInnerDefault = getBitmap(context, defaultResInner, scale)
@ -1088,7 +1109,8 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
bitmapInnerPressed,
outerRect,
innerRect,
joystick
joystick,
opacity
)
// Need to set the image's position

View File

@ -26,7 +26,8 @@ class InputOverlayDrawableButton(
res: Resources,
defaultStateBitmap: Bitmap,
pressedStateBitmap: Bitmap,
val id: Int
val id: Int,
val opacity: Int
) {
var trackId: Int
private var previousTouchX = 0
@ -114,7 +115,11 @@ class InputOverlayDrawableButton(
controlPositionY = y
}
fun draw(canvas: Canvas) = currentStateBitmapDrawable.draw(canvas)
fun draw(canvas: Canvas) {
val bitmapDrawable: BitmapDrawable = currentStateBitmapDrawable
bitmapDrawable.alpha = opacity
bitmapDrawable.draw(canvas)
}
private val currentStateBitmapDrawable: BitmapDrawable
get() = if (pressedState) pressedStateBitmap else defaultStateBitmap

View File

@ -25,6 +25,7 @@ import io.github.lime3ds.android.NativeLibrary
* @param downId Identifier for the down button.
* @param leftId Identifier for the left button.
* @param rightId Identifier for the right button.
* @param opacity 0-255 alpha value
*/
class InputOverlayDrawableDpad(
res: Resources,
@ -34,7 +35,8 @@ class InputOverlayDrawableDpad(
val upId: Int,
val downId: Int,
val leftId: Int,
val rightId: Int
val rightId: Int,
val opacity: Int
) {
var trackId: Int
private var previousTouchX = 0
@ -137,6 +139,7 @@ class InputOverlayDrawableDpad(
// Pressed up
if (upButtonState && !leftButtonState && !rightButtonState) {
pressedOneDirectionStateBitmap.alpha = opacity
pressedOneDirectionStateBitmap.draw(canvas)
return
}
@ -145,6 +148,7 @@ class InputOverlayDrawableDpad(
if (downButtonState && !leftButtonState && !rightButtonState) {
canvas.save()
canvas.rotate(180f, px.toFloat(), py.toFloat())
pressedOneDirectionStateBitmap.alpha = opacity
pressedOneDirectionStateBitmap.draw(canvas)
canvas.restore()
return
@ -154,6 +158,7 @@ class InputOverlayDrawableDpad(
if (leftButtonState && !upButtonState && !downButtonState) {
canvas.save()
canvas.rotate(270f, px.toFloat(), py.toFloat())
pressedOneDirectionStateBitmap.alpha = opacity
pressedOneDirectionStateBitmap.draw(canvas)
canvas.restore()
return
@ -163,6 +168,7 @@ class InputOverlayDrawableDpad(
if (rightButtonState && !upButtonState && !downButtonState) {
canvas.save()
canvas.rotate(90f, px.toFloat(), py.toFloat())
pressedOneDirectionStateBitmap.alpha = opacity
pressedOneDirectionStateBitmap.draw(canvas)
canvas.restore()
return
@ -170,6 +176,7 @@ class InputOverlayDrawableDpad(
// Pressed up left
if (upButtonState && leftButtonState && !rightButtonState) {
pressedTwoDirectionsStateBitmap.alpha = opacity
pressedTwoDirectionsStateBitmap.draw(canvas)
return
}
@ -178,6 +185,7 @@ class InputOverlayDrawableDpad(
if (upButtonState && !leftButtonState && rightButtonState) {
canvas.save()
canvas.rotate(90f, px.toFloat(), py.toFloat())
pressedTwoDirectionsStateBitmap.alpha = opacity
pressedTwoDirectionsStateBitmap.draw(canvas)
canvas.restore()
return
@ -187,6 +195,7 @@ class InputOverlayDrawableDpad(
if (downButtonState && leftButtonState && !rightButtonState) {
canvas.save()
canvas.rotate(270f, px.toFloat(), py.toFloat())
pressedTwoDirectionsStateBitmap.alpha = opacity
pressedTwoDirectionsStateBitmap.draw(canvas)
canvas.restore()
return
@ -196,12 +205,14 @@ class InputOverlayDrawableDpad(
if (downButtonState && !leftButtonState && rightButtonState) {
canvas.save()
canvas.rotate(180f, px.toFloat(), py.toFloat())
pressedTwoDirectionsStateBitmap.alpha = opacity
pressedTwoDirectionsStateBitmap.draw(canvas)
canvas.restore()
return
}
// Not pressed
defaultStateBitmap.alpha = opacity
defaultStateBitmap.draw(canvas)
}

View File

@ -29,6 +29,7 @@ import kotlin.math.sqrt
* @param rectOuter [Rect] which represents the outer joystick bounds.
* @param rectInner [Rect] which represents the inner joystick bounds.
* @param joystickId Identifier for which joystick this is.
* @param opacity 0-255 alpha value
*/
class InputOverlayDrawableJoystick(
res: Resources,
@ -37,7 +38,8 @@ class InputOverlayDrawableJoystick(
bitmapInnerPressed: Bitmap,
rectOuter: Rect,
rectInner: Rect,
val joystickId: Int
val joystickId: Int,
val opacity: Int
) {
var trackId = -1
var xAxis = 0f
@ -79,10 +81,14 @@ class InputOverlayDrawableJoystick(
boundsBoxBitmap.alpha = 0
boundsBoxBitmap.bounds = virtBounds
setInnerBounds()
defaultStateInnerBitmap.alpha = opacity
pressedStateInnerBitmap.alpha = opacity
outerBitmap.alpha = opacity
}
fun draw(canvas: Canvas?) {
outerBitmap.draw(canvas!!)
currentStateBitmapDrawable.alpha = opacity
currentStateBitmapDrawable.draw(canvas)
boundsBoxBitmap.draw(canvas)
}
@ -103,7 +109,7 @@ class InputOverlayDrawableJoystick(
}
pressedState = true
outerBitmap.alpha = 0
boundsBoxBitmap.alpha = 255
boundsBoxBitmap.alpha = opacity
if (EmulationMenuSettings.joystickRelCenter) {
virtBounds.offset(
xPosition - virtBounds.centerX(),
@ -123,7 +129,7 @@ class InputOverlayDrawableJoystick(
yAxis = 0.0f
angle = 0.0f
radius = 0.0f
outerBitmap.alpha = 255
outerBitmap.alpha = opacity
boundsBoxBitmap.alpha = 0
virtBounds = Rect(origBounds.left, origBounds.top, origBounds.right, origBounds.bottom)
bounds = Rect(origBounds.left, origBounds.top, origBounds.right, origBounds.bottom)

View File

@ -264,9 +264,8 @@ void Config::ReadValues() {
}
// Web Service
NetSettings::values.enable_telemetry =
sdl2_config->GetBoolean("WebService", "enable_telemetry", false);
NetSettings::values.web_api_url = sdl2_config->GetString("WebService", "web_api_url", "");
NetSettings::values.web_api_url =
sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org");
NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", "");
NetSettings::values.citra_token = sdl2_config->GetString("WebService", "citra_token", "");
}

View File

@ -353,11 +353,8 @@ gdbstub_port=24689
# To LLE a service module add "LLE\<module name>=true"
[WebService]
# Whether or not to enable telemetry
# 0 (default): No, 1: Yes
enable_telemetry =
# URL for Web API
web_api_url =
web_api_url = https://api.citra-emu.org
# Username and token for Citra Web Service
# See https://profile.citra-emu.org/ for more info
citra_username =

View File

@ -38,7 +38,6 @@
#include "core/hle/service/nfc/nfc.h"
#include "core/loader/loader.h"
#include "core/savestate.h"
#include "core/telemetry_session.h"
#include "jni/android_common/android_common.h"
#include "jni/applets/mii_selector.h"
#include "jni/applets/swkbd.h"
@ -166,7 +165,7 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
#elif ENABLE_VULKAN
window = std::make_unique<EmuWindow_Android_Vulkan>(s_surf, vulkan_library);
#else
// TODO: Add a null renderer backend for this, perhaps.
// TODO: Add a null renderer backend for this, perhaps.
#error "At least one renderer must be enabled."
#endif
break;
@ -208,9 +207,6 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
return load_result;
}
auto& telemetry_session = system.TelemetrySession();
telemetry_session.AddField(Common::Telemetry::FieldType::App, "Frontend", "Android");
stop_run = false;
pause_emulation = false;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Some files were not shown because too many files have changed in this diff Show More