diff --git a/resources/po/de.po b/resources/po/de.po index 21c1680..d30733f 100644 --- a/resources/po/de.po +++ b/resources/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-06-30 15:35+0200\n" +"POT-Creation-Date: 2018-08-06 06:55+0200\n" "PO-Revision-Date: 2017-12-14 23:15+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -231,6 +231,9 @@ msgstr "Das war mal wieder nichts !" msgid "Bank" msgstr "Ufer" +msgid "Best" +msgstr "" + msgid "Blow up" msgstr "Zünden" @@ -290,6 +293,14 @@ msgstr "" "Fentergrösse\n" "anpassen" +#, fuzzy +msgid "" +"Change the\n" +"render quality" +msgstr "" +"Fentergrösse\n" +"anpassen" + msgid "" "Change the\n" "window size" @@ -612,6 +623,10 @@ msgstr "Musik Nummer 9" msgid "N" msgstr "N" +#, fuzzy +msgid "Nearest" +msgstr "Wald" + #, c-format msgid "New version available for download on www.blupi.org (v%s)" msgstr "Neue Version (v%s) auf www.blupi.org zum Download verfügbar" @@ -882,6 +897,12 @@ msgstr "" msgid "Use Ogg music" msgstr "" +msgid "Use the best render quality" +msgstr "" + +msgid "Use the nearest render quality" +msgstr "" + msgid "Version" msgstr "Version" diff --git a/resources/po/en_US.po b/resources/po/en_US.po index 4d00c68..9e47e0b 100644 --- a/resources/po/en_US.po +++ b/resources/po/en_US.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-06-30 15:35+0200\n" +"POT-Creation-Date: 2018-08-06 06:55+0200\n" "PO-Revision-Date: 2017-02-27 21:28+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -187,6 +187,9 @@ msgstr "" msgid "Bank" msgstr "" +msgid "Best" +msgstr "" + msgid "Blow up" msgstr "" @@ -243,6 +246,11 @@ msgid "" "display mode" msgstr "" +msgid "" +"Change the\n" +"render quality" +msgstr "" + msgid "" "Change the\n" "window size" @@ -552,6 +560,9 @@ msgstr "" msgid "N" msgstr "" +msgid "Nearest" +msgstr "" + #, c-format msgid "New version available for download on www.blupi.org (v%s)" msgstr "" @@ -809,6 +820,12 @@ msgstr "" msgid "Use Ogg music" msgstr "" +msgid "Use the best render quality" +msgstr "" + +msgid "Use the nearest render quality" +msgstr "" + msgid "Version" msgstr "" diff --git a/resources/po/fr.po b/resources/po/fr.po index f01e102..bf93823 100644 --- a/resources/po/fr.po +++ b/resources/po/fr.po @@ -6,15 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-06-30 15:35+0200\n" -"PO-Revision-Date: 2018-06-30 15:36+0200\n" +"POT-Creation-Date: 2018-08-06 06:55+0200\n" +"PO-Revision-Date: 2018-08-06 07:16+0200\n" "Last-Translator: Mathieu Schroeter \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.8\n" +"X-Generator: Poedit 2.0.9\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid " - FFmpeg (LGPLv2.1)" @@ -229,6 +229,9 @@ msgstr "Paf, c'est raté !" msgid "Bank" msgstr "Rive" +msgid "Best" +msgstr "Meilleure" + msgid "Blow up" msgstr "Explose" @@ -287,6 +290,13 @@ msgstr "" "Modifie le mode\n" "d'affichage" +msgid "" +"Change the\n" +"render quality" +msgstr "" +"Modifie la\n" +"qualité de rendu" + msgid "" "Change the\n" "window size" @@ -609,6 +619,9 @@ msgstr "Musique numéro 9" msgid "N" msgstr "N" +msgid "Nearest" +msgstr "Au plus proche" + #, c-format msgid "New version available for download on www.blupi.org (v%s)" msgstr "Nouvelle version disponible au téléchargement sur www.blupi.org (v%s)" @@ -874,6 +887,12 @@ msgstr "Utilise la musique Midi (originale)" msgid "Use Ogg music" msgstr "Utilise la musique Ogg" +msgid "Use the best render quality" +msgstr "Utilise la meilleure qualité de rendu" + +msgid "Use the nearest render quality" +msgstr "Utilise la qualité de rendu au plus proche" + msgid "Version" msgstr "Version" diff --git a/resources/po/it.po b/resources/po/it.po index 0f44979..dd4b920 100644 --- a/resources/po/it.po +++ b/resources/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-06-30 15:35+0200\n" +"POT-Creation-Date: 2018-08-06 06:55+0200\n" "PO-Revision-Date: 2017-12-14 23:15+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -229,6 +229,9 @@ msgstr "Bang, hai sbagliato ancora !" msgid "Bank" msgstr "Riva" +msgid "Best" +msgstr "" + msgid "Blow up" msgstr "Espoldi" @@ -289,6 +292,15 @@ msgstr "" "dimensione\n" "della finestra" +#, fuzzy +msgid "" +"Change the\n" +"render quality" +msgstr "" +"Cambiare la\n" +"dimensione\n" +"della finestra" + msgid "" "Change the\n" "window size" @@ -611,6 +623,10 @@ msgstr "Musica numero 9" msgid "N" msgstr "N" +#, fuzzy +msgid "Nearest" +msgstr "Foresta" + #, c-format msgid "New version available for download on www.blupi.org (v%s)" msgstr "Nuova versione disponibile su www.blupi.org (v%s)" @@ -876,6 +892,12 @@ msgstr "" msgid "Use Ogg music" msgstr "" +msgid "Use the best render quality" +msgstr "" + +msgid "Use the nearest render quality" +msgstr "" + msgid "Version" msgstr "Versione" diff --git a/resources/po/pl.po b/resources/po/pl.po index 82797e8..098d169 100644 --- a/resources/po/pl.po +++ b/resources/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-06-30 15:35+0200\n" +"POT-Creation-Date: 2018-08-06 06:55+0200\n" "PO-Revision-Date: 2017-12-14 23:15+0100\n" "Last-Translator: tomangelo \n" "Language-Team: TerranovaTeam \n" @@ -230,6 +230,9 @@ msgstr "Motyla noga, znowu porażka!" msgid "Bank" msgstr "Brzeg" +msgid "Best" +msgstr "" + msgid "Blow up" msgstr "Wysadź w powietrze" @@ -289,6 +292,14 @@ msgstr "" "Zmień rozmiar\n" "okna" +#, fuzzy +msgid "" +"Change the\n" +"render quality" +msgstr "" +"Zmień rozmiar\n" +"okna" + msgid "" "Change the\n" "window size" @@ -608,6 +619,10 @@ msgstr "Muzyka numer 9" msgid "N" msgstr "Pn" +#, fuzzy +msgid "Nearest" +msgstr "Las" + #, c-format msgid "New version available for download on www.blupi.org (v%s)" msgstr "Nowa wersja dostępna do pobrania na www.blupi.org (v%s)" @@ -873,6 +888,12 @@ msgstr "" msgid "Use Ogg music" msgstr "" +msgid "Use the best render quality" +msgstr "" + +msgid "Use the nearest render quality" +msgstr "" + msgid "Version" msgstr "Wersja" diff --git a/resources/po/planetblupi.pot b/resources/po/planetblupi.pot index 526a423..7ac8f9d 100644 --- a/resources/po/planetblupi.pot +++ b/resources/po/planetblupi.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-06-30 15:35+0200\n" +"POT-Creation-Date: 2018-08-06 07:13+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -551,6 +551,12 @@ msgstr "" msgid "Use Midi music (original)" msgstr "" +msgid "Use the nearest render quality" +msgstr "" + +msgid "Use the best render quality" +msgstr "" + msgid "Version" msgstr "" @@ -727,6 +733,11 @@ msgid "" "music format" msgstr "" +msgid "" +"Change the\n" +"render quality" +msgstr "" + msgid "Legacy" msgstr "" @@ -739,6 +750,12 @@ msgstr "" msgid "Ogg" msgstr "" +msgid "Best" +msgstr "" + +msgid "Nearest" +msgstr "" + msgid "You have played Planet Blupi." msgstr "" diff --git a/src/blupi.cxx b/src/blupi.cxx index 8d465ab..3b8db7b 100644 --- a/src/blupi.cxx +++ b/src/blupi.cxx @@ -74,6 +74,7 @@ bool g_enableRecorder = false; std::string g_playRecord; bool g_restoreBugs = false; // restore original < v1.9 bugs bool g_restoreMidi = false; // restore music playback based on midi files +bool g_renderQuality = true; // use the best render quality with scaling int g_settingsOverload = 0; bool g_bTermInit = false; // initialisation en cours @@ -182,6 +183,11 @@ ReadConfig () !(g_settingsOverload & SETTING_MIDI) && j.find ("restoremidi") != j.end ()) g_restoreMidi = j["restoremidi"].get (); + if ( + !(g_settingsOverload & SETTING_RENDERQUALITY) && + j.find ("renderquality") != j.end ()) + g_renderQuality = j["renderqiality"].get (); + return true; } @@ -608,7 +614,12 @@ parseArgs (int argc, char * argv[], bool & exit) {"restoremidi", {"-m", "--restore-midi"}, "restore playback based on MIDI music instead of OGG", - 0}}}; + 0}, + {"renderquality", + {"-q", "--render-quality"}, + "enable the best render quality [on;off] (default: on, ignored if " + "windowed)", + 1}}}; argagg::parser_results args; try @@ -706,6 +717,13 @@ parseArgs (int argc, char * argv[], bool & exit) g_settingsOverload |= SETTING_MIDI; } + if (args["renderquality"]) + { + g_renderQuality = + args["renderquality"].as () != std::string ("off"); + g_settingsOverload |= SETTING_RENDERQUALITY; + } + return EXIT_SUCCESS; } diff --git a/src/blupi.h b/src/blupi.h index 6fb2fad..6b781cc 100644 --- a/src/blupi.h +++ b/src/blupi.h @@ -36,6 +36,7 @@ extern bool g_bFullScreen; extern Uint8 g_zoom; extern bool g_restoreBugs; extern bool g_restoreMidi; +extern bool g_renderQuality; extern bool g_enableRecorder; extern std::string g_playRecord; extern CEvent * g_pEvent; @@ -51,6 +52,7 @@ enum Settings { SETTING_DRIVER = 1 << 5, SETTING_MIDI = 1 << 6, SETTING_LEGACY = 1 << 7, + SETTING_RENDERQUALITY = 1 << 8, }; extern int g_settingsOverload; diff --git a/src/event.cxx b/src/event.cxx index 83df486..d8d0d92 100644 --- a/src/event.cxx +++ b/src/event.cxx @@ -75,8 +75,10 @@ typedef struct { Sint16 musicMidi; Sint16 fullScreen; Sint16 zoom; + // v1.3 + Sint16 renderQuality; - Sint16 reserve2[89]; + Sint16 reserve2[88]; } DescInfo; // Toutes les premières lettres doivent @@ -1576,6 +1578,18 @@ static Phase table[] = 399 + 40, 330, { translate ("Use Midi music (original)") }, }, + { + EV_BUTTON9, + 0, {1, 50}, + 514, 330, + { translate ("Use the nearest render quality") }, + }, + { + EV_BUTTON10, + 0, {1, 51}, + 514 + 40, 330, + { translate ("Use the best render quality") }, + }, { EV_PHASE_INIT, 0, {1, 40}, @@ -2202,6 +2216,9 @@ CEvent::DrawButtons () SetEnable (EV_BUTTON7, g_restoreMidi && mid && ogg); SetEnable (EV_BUTTON8, !g_restoreMidi && mid && ogg); + SetEnable (EV_BUTTON9, g_bFullScreen && g_renderQuality); + SetEnable (EV_BUTTON10, g_bFullScreen && !g_renderQuality); + table[m_index].buttons[4].toolTips[0] = g_bFullScreen ? gettext ("Desktop mode") : gettext ("Reduce window size"); table[m_index].buttons[5].toolTips[0] = @@ -2673,6 +2690,8 @@ CEvent::DrawButtons () 284 + 40 + LXOFFSET (), 80); DrawTextCenter ( gettext ("Choose the\nmusic format"), 399 + 40 + LXOFFSET (), 80); + DrawTextCenter ( + gettext ("Change the\nrender quality"), 514 + 40 + LXOFFSET (), 80); const auto locale = GetLocale (); std::string lang; @@ -2718,6 +2737,12 @@ CEvent::DrawButtons () pos.x = (399 + 40) - lg / 2 + LXOFFSET (); pos.y = 330 - 20; DrawText (m_pPixmap, pos, text); + + text = g_renderQuality ? gettext ("Best") : gettext ("Nearest"); + lg = GetTextWidth (text); + pos.x = (514 + 40) - lg / 2 + LXOFFSET (); + pos.y = 330 - 20; + DrawText (m_pPixmap, pos, text); } // Show the ending text @@ -4346,6 +4371,14 @@ CEvent::ChangeButtons (Sint32 message) case EV_BUTTON8: g_restoreMidi = true; break; + case EV_BUTTON9: + g_renderQuality = false; + this->m_pPixmap->CreateMainTexture (); + break; + case EV_BUTTON10: + g_renderQuality = true; + this->m_pPixmap->CreateMainTexture (); + break; } } } @@ -4903,7 +4936,7 @@ CEvent::WriteInfo () goto error; info.majRev = 1; - info.minRev = 2; + info.minRev = 3; info.prive = m_private; info.exercice = m_exercice; info.mission = m_mission; @@ -4922,9 +4955,10 @@ CEvent::WriteInfo () info.language = static_cast ( this->GetLanguage () != this->GetStartLanguage () ? this->GetLanguage () : Language::undef); - info.musicMidi = g_restoreMidi; - info.fullScreen = g_bFullScreen; - info.zoom = g_zoom; + info.musicMidi = g_restoreMidi; + info.fullScreen = g_bFullScreen; + info.zoom = g_zoom; + info.renderQuality = g_renderQuality; nb = fwrite (&info, sizeof (info), 1, file); if (nb < 1) @@ -4997,6 +5031,12 @@ CEvent::ReadInfo () g_zoom = 1; } + if (((info.majRev == 1 && info.minRev >= 3) || info.majRev >= 2)) + { + if (!(g_settingsOverload & SETTING_RENDERQUALITY)) + g_renderQuality = !!info.renderQuality; + } + fclose (file); return true; diff --git a/src/movie.cxx b/src/movie.cxx index 5b6024e..d0714ab 100644 --- a/src/movie.cxx +++ b/src/movie.cxx @@ -139,7 +139,8 @@ CMovie::fileOpenMovie (const std::string & pFilename) SDL_PauseAudioDevice (m_audioDev, 0); if (g_bFullScreen && g_zoom == 1) - SDL_SetHint (SDL_HINT_RENDER_SCALE_QUALITY, "best"); + SDL_SetHint ( + SDL_HINT_RENDER_SCALE_QUALITY, g_renderQuality ? "best" : "nearest"); m_videoTex = SDL_CreateTexture ( g_renderer, info.video.output.format, SDL_TEXTUREACCESS_TARGET, info.video.output.width, info.video.output.height); diff --git a/src/pixmap.cxx b/src/pixmap.cxx index 87e99bf..3089d32 100644 --- a/src/pixmap.cxx +++ b/src/pixmap.cxx @@ -107,6 +107,22 @@ CPixmap::Create (Point dim) return true; } +void +CPixmap::CreateMainTexture () +{ + if (!this->mainTexture) + return; + + SDL_DestroyTexture (this->mainTexture); + SDL_SetHint ( + SDL_HINT_RENDER_SCALE_QUALITY, + g_bFullScreen && g_renderQuality ? "best" : "nearest"); + this->mainTexture = SDL_CreateTexture ( + g_renderer, SDL_PIXELFORMAT_RGBA32, SDL_TEXTUREACCESS_TARGET, LXIMAGE (), + LYIMAGE ()); + SDL_SetHint (SDL_HINT_RENDER_SCALE_QUALITY, "nearest"); +} + Sint32 CPixmap::BltFast (Sint32 dstCh, size_t srcCh, Rect dstR, Rect srcR) { @@ -128,7 +144,8 @@ CPixmap::BltFast (Sint32 dstCh, size_t srcCh, Rect dstR, Rect srcR) { if (!this->mainTexture && g_bFullScreen && g_zoom == 1) { - SDL_SetHint (SDL_HINT_RENDER_SCALE_QUALITY, "best"); + SDL_SetHint ( + SDL_HINT_RENDER_SCALE_QUALITY, g_renderQuality ? "best" : "nearest"); this->mainTexture = SDL_CreateTexture ( g_renderer, SDL_PIXELFORMAT_RGBA32, SDL_TEXTUREACCESS_TARGET, LXIMAGE (), LYIMAGE ()); diff --git a/src/pixmap.h b/src/pixmap.h index aa2c4e7..4468d9d 100644 --- a/src/pixmap.h +++ b/src/pixmap.h @@ -63,6 +63,7 @@ public: bool Create (Point dim); + void CreateMainTexture (); bool ReloadTargetTextures (); bool Cache (size_t channel, Point totalDim); bool Cache (