From 3064ffb130f324ea13795e4b4b00ce79ae66bb20 Mon Sep 17 00:00:00 2001 From: krzys-h Date: Tue, 12 Sep 2017 17:09:50 +0200 Subject: [PATCH] Add support for Polish special characters --- resources/image/little_pl.png | Bin 0 -> 2020 bytes resources/image/text_pl.png | Bin 0 -> 8325 bytes src/blupi.cxx | 10 ++++++++-- src/event.cxx | 25 +++++++++++++++++++++++++ src/text.cxx | 31 +++++++++++++++++++++++++++---- 5 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 resources/image/little_pl.png create mode 100644 resources/image/text_pl.png diff --git a/resources/image/little_pl.png b/resources/image/little_pl.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7df27f961608494015cf2b907fef920f2530bd GIT binary patch literal 2020 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 Lo9UJ5;3NMZccOvD literal 0 HcmV?d00001 diff --git a/src/blupi.cxx b/src/blupi.cxx index 61b6e3f..011c0be 100644 --- a/src/blupi.cxx +++ b/src/blupi.cxx @@ -833,7 +833,10 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMTEXTY * 8 * 3; iconDim.x = DIMTEXTX; iconDim.y = DIMTEXTY; - if (!g_pPixmap->Cache (CHTEXT, "image/text.png", totalDim, iconDim)) + std::string text_filename = "image/text.png"; + if (GetLocale() == "pl") + text_filename = "image/text_pl.png"; // TODO: Merge into one texture, or use TTF fonts instead? + if (!g_pPixmap->Cache (CHTEXT, text_filename, totalDim, iconDim)) { InitFail ("Cache text.png"); return EXIT_FAILURE; @@ -843,7 +846,10 @@ DoInit (int argc, char * argv[], bool & exit) totalDim.y = DIMLITTLEY * 8; iconDim.x = DIMLITTLEX; iconDim.y = DIMLITTLEY; - if (!g_pPixmap->Cache (CHLITTLE, "image/little.png", totalDim, iconDim)) + std::string little_filename = "image/little.png"; + if (GetLocale() == "pl") + little_filename = "image/little_pl.png"; // TODO: Merge into one texture, or use TTF fonts instead? + if (!g_pPixmap->Cache (CHLITTLE, little_filename, totalDim, iconDim)) { InitFail ("Cache little.png"); return EXIT_FAILURE; diff --git a/src/event.cxx b/src/event.cxx index 3ef1919..d6c5598 100644 --- a/src/event.cxx +++ b/src/event.cxx @@ -3702,6 +3702,31 @@ CEvent::SetLanguage (Language lang) SDL_SetWindowTitle (g_window, gettext ("Planet Blupi")); m_pSound->CacheAll (); + + Point totalDim, iconDim; + totalDim.x = DIMTEXTX * 16; + totalDim.y = DIMTEXTY * 8 * 3; + iconDim.x = DIMTEXTX; + iconDim.y = DIMTEXTY; + std::string text_filename = "image/text.png"; + if (GetLocale() == "pl") + text_filename = "image/text_pl.png"; + if (!m_pPixmap->Cache (CHTEXT, text_filename, totalDim, iconDim)) + { + printf ("Error (Cache text.png)"); + } + + totalDim.x = DIMLITTLEX * 16; + totalDim.y = DIMLITTLEY * 8; + iconDim.x = DIMLITTLEX; + iconDim.y = DIMLITTLEY; + std::string little_filename = "image/little.png"; + if (GetLocale() == "pl") + little_filename = "image/little_pl.png"; + if (!m_pPixmap->Cache (CHLITTLE, little_filename, totalDim, iconDim)) + { + printf ("Error (Cache little.png)"); + } } // Clic dans un bouton. diff --git a/src/text.cxx b/src/text.cxx index b98a7cc..6b1d1f4 100644 --- a/src/text.cxx +++ b/src/text.cxx @@ -22,13 +22,14 @@ #include #include "def.h" +#include "misc.h" #include "pixmap.h" #include "text.h" /** * \brief Return the character offset for the sprite. * - * \param[in] c - The character (incremented if 0xC3 UTF-8). + * \param[in] c - The character (incremented if 0xC3 or 0xC4 or 0xC5 UTF-8). * \returns the offset. */ static Sint32 @@ -43,13 +44,35 @@ GetOffset (const char *& c) 0xAE, 0xB4, 0xB9, 0xBB, 0xA4, 0xB6, 0xA7, // UTF-8 }; + static const unsigned char table_accents_pl[] = { + /* Polish */ + /* ń * ó ę * ć * * */ + 0x84, 0xFF, 0xB3, 0x99, 0xFF, 0x87, 0xFF, 0xFF, // UTF-8 + /* ź ż * * ą ł ś */ + 0xBA, 0xBC, 0xFF, 0xFF, 0x85, 0x82, 0x9B, // UTF-8 + }; + if (static_cast (*c) == 0xC3) c++; + if (static_cast (*c) == 0xC4) + c++; + if (static_cast (*c) == 0xC5) + c++; - for (unsigned int i = 0; i < countof (table_accents); ++i) + if(GetLocale() == "pl") { + for (unsigned int i = 0; i < countof (table_accents_pl); ++i) + { + if ((unsigned char) *c == table_accents_pl[i]) + return 15 + i; + } + } + else { - if ((unsigned char) *c == table_accents[i]) - return 15 + i; + for (unsigned int i = 0; i < countof (table_accents); ++i) + { + if ((unsigned char) *c == table_accents[i]) + return 15 + i; + } } if (*c < 0) return 1; // square