aboutsummaryrefslogtreecommitdiffstats
path: root/demos/modules/gtrans/basic/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'demos/modules/gtrans/basic/main.c')
-rw-r--r--demos/modules/gtrans/basic/main.c112
1 files changed, 112 insertions, 0 deletions
diff --git a/demos/modules/gtrans/basic/main.c b/demos/modules/gtrans/basic/main.c
new file mode 100644
index 00000000..e15b3f6a
--- /dev/null
+++ b/demos/modules/gtrans/basic/main.c
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org>
+ * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the <organization> nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include "gfx.h"
+
+#define COLOR_BACKGROUND Silver
+#define COLOR_TEXT Black
+
+font_t font;
+
+// English Translation
+static const char* EnglishStrings[] = {
+ "Welcome",
+ "The temperature is %d degrees",
+ "Goodbye",
+ "This is a translated uGFX application"
+};
+static const transTable EnglishTranslation = { sizeof(EnglishStrings)/sizeof(EnglishStrings[0]), EnglishStrings };
+
+// German translation
+static const char* GermanStrings[] = {
+ "Herzlich Willkommen",
+ "Die Temperatur beträgt %d Grad",
+ "Auf Wiedersehen",
+ "Das ist eine übersetzte uGFX Anwendung"
+};
+static const transTable GermanTranslation = { sizeof(GermanStrings)/sizeof(GermanStrings[0]), GermanStrings };
+
+// French translation
+static const char* FrenchStrings[] = {
+ "Bienvenue",
+ "La température est de %d degrés",
+ "Au revoir",
+ "Ceci est une application traduit uGFX"
+};
+static const transTable FrenchTranslation = { sizeof(FrenchStrings)/sizeof(FrenchStrings[0]), FrenchStrings };
+
+void updateText()
+{
+ coord_t width = 400;
+ coord_t height = 30;
+
+ // Translate some basic strings
+ gdispFillStringBox(20, 20, width, height, gt("Welcome"), font, COLOR_TEXT, COLOR_BACKGROUND, justifyLeft);
+ gdispFillStringBox(20, 60, width, height, gt("This is a translated uGFX application"), font, COLOR_TEXT, COLOR_BACKGROUND, justifyLeft);
+ gdispFillStringBox(20, 100, width, height, gt("Goodbye"), font, COLOR_TEXT, COLOR_BACKGROUND, justifyLeft);
+
+ // A more complex example using string formatting
+ char buffer[128];
+ sprintf(buffer, gt("The temperature is %d degrees"), 18);
+ gdispFillStringBox(20, 140, width, height, buffer, font, COLOR_TEXT, COLOR_BACKGROUND, justifyLeft);
+}
+
+int main(void)
+{
+ // Initialize the uGFX library
+ gfxInit();
+ gdispClear(COLOR_BACKGROUND);
+
+ // Take the first font we find
+ font = gdispOpenFont("*");
+
+ // Set the base language of the application
+ gtransSetBaseLanguage(&EnglishTranslation);
+
+ // Loop through the languages
+ while (TRUE) {
+ // English
+ gtransSetLanguage(&EnglishTranslation);
+ updateText();
+ gfxSleepMilliseconds(1000);
+
+ // German
+ gtransSetLanguage(&GermanTranslation);
+ updateText();
+ gfxSleepMilliseconds(1000);
+
+ // French
+ gtransSetLanguage(&FrenchTranslation);
+ updateText();
+ gfxSleepMilliseconds(1000);
+ }
+
+ return 0;
+}