aboutsummaryrefslogtreecommitdiff
path: root/src/libui_sdl/libui/test/page10.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libui_sdl/libui/test/page10.c')
-rw-r--r--src/libui_sdl/libui/test/page10.c185
1 files changed, 185 insertions, 0 deletions
diff --git a/src/libui_sdl/libui/test/page10.c b/src/libui_sdl/libui/test/page10.c
new file mode 100644
index 0000000..d7f26a7
--- /dev/null
+++ b/src/libui_sdl/libui/test/page10.c
@@ -0,0 +1,185 @@
+// 22 december 2015
+#include "test.h"
+
+static uiEntry *textString;
+static uiFontButton *textFontButton;
+static uiColorButton *textColorButton;
+static uiEntry *textWidth;
+static uiButton *textApply;
+static uiCheckbox *noZ;
+static uiArea *textArea;
+static uiAreaHandler textAreaHandler;
+
+static double entryDouble(uiEntry *e)
+{
+ char *s;
+ double d;
+
+ s = uiEntryText(e);
+ d = atof(s);
+ uiFreeText(s);
+ return d;
+}
+
+static void handlerDraw(uiAreaHandler *a, uiArea *area, uiAreaDrawParams *dp)
+{
+ uiDrawTextFont *font;
+ uiDrawTextLayout *layout;
+ double r, g, b, al;
+ char surrogates[1 + 4 + 1 + 1];
+ char composed[2 + 2 + 2 + 3 + 2 + 1];
+ double width, height;
+
+ font = uiFontButtonFont(textFontButton);
+
+ layout = uiDrawNewTextLayout("One two three four", font, -1);
+ uiDrawTextLayoutSetColor(layout,
+ 4, 7,
+ 1, 0, 0, 1);
+ uiDrawTextLayoutSetColor(layout,
+ 8, 14,
+ 1, 0, 0.5, 0.5);
+ uiColorButtonColor(textColorButton, &r, &g, &b, &al);
+ uiDrawTextLayoutSetColor(layout,
+ 14, 18,
+ r, g, b, al);
+ uiDrawText(dp->Context, 10, 10, layout);
+ uiDrawTextLayoutExtents(layout, &width, &height);
+ uiDrawFreeTextLayout(layout);
+
+ surrogates[0] = 'x';
+ surrogates[1] = 0xF0; // surrogates D800 DF08
+ surrogates[2] = 0x90;
+ surrogates[3] = 0x8C;
+ surrogates[4] = 0x88;
+ surrogates[5] = 'y';
+ surrogates[6] = '\0';
+
+ layout = uiDrawNewTextLayout(surrogates, font, -1);
+ uiDrawTextLayoutSetColor(layout,
+ 1, 2,
+ 1, 0, 0.5, 0.5);
+ uiDrawText(dp->Context, 10, 10 + height, layout);
+ uiDrawFreeTextLayout(layout);
+
+ composed[0] = 'z';
+ composed[1] = 'z';
+ composed[2] = 0xC3; // 2
+ composed[3] = 0xA9;
+ composed[4] = 'z';
+ composed[5] = 'z';
+ composed[6] = 0x65; // 5
+ composed[7] = 0xCC;
+ composed[8] = 0x81;
+ composed[9] = 'z';
+ composed[10] = 'z';
+ composed[11] = '\0';
+
+ layout = uiDrawNewTextLayout(composed, font, -1);
+ uiDrawTextLayoutSetColor(layout,
+ 2, 3,
+ 1, 0, 0.5, 0.5);
+ uiDrawTextLayoutSetColor(layout,
+ 5, 6,
+ 1, 0, 0.5, 0.5);
+ if (!uiCheckboxChecked(noZ))
+ uiDrawTextLayoutSetColor(layout,
+ 6, 7,
+ 0.5, 0, 1, 0.5);
+ uiDrawText(dp->Context, 10, 10 + height + height, layout);
+ uiDrawFreeTextLayout(layout);
+
+ uiDrawFreeTextFont(font);
+}
+
+static void handlerMouseEvent(uiAreaHandler *a, uiArea *area, uiAreaMouseEvent *e)
+{
+ // do nothing
+}
+
+static void handlerMouseCrossed(uiAreaHandler *ah, uiArea *a, int left)
+{
+ // do nothing
+}
+
+static void handlerDragBroken(uiAreaHandler *ah, uiArea *a)
+{
+ // do nothing
+}
+
+static int handlerKeyEvent(uiAreaHandler *ah, uiArea *a, uiAreaKeyEvent *e)
+{
+ // do nothing
+ return 0;
+}
+
+static void onFontChanged(uiFontButton *b, void *data)
+{
+ uiAreaQueueRedrawAll(textArea);
+}
+
+static void onColorChanged(uiColorButton *b, void *data)
+{
+ uiAreaQueueRedrawAll(textArea);
+}
+
+static void onNoZ(uiCheckbox *b, void *data)
+{
+ uiAreaQueueRedrawAll(textArea);
+}
+
+uiBox *makePage10(void)
+{
+ uiBox *page10;
+ uiBox *vbox;
+ uiBox *hbox;
+
+ page10 = newVerticalBox();
+ vbox = page10;
+
+ hbox = newHorizontalBox();
+ uiBoxAppend(vbox, uiControl(hbox), 0);
+
+ textString = uiNewEntry();
+ // TODO make it placeholder
+ uiEntrySetText(textString, "Enter text here");
+ uiBoxAppend(hbox, uiControl(textString), 1);
+
+ textFontButton = uiNewFontButton();
+ uiFontButtonOnChanged(textFontButton, onFontChanged, NULL);
+ uiBoxAppend(hbox, uiControl(textFontButton), 1);
+
+ textColorButton = uiNewColorButton();
+ uiColorButtonOnChanged(textColorButton, onColorChanged, NULL);
+ uiBoxAppend(hbox, uiControl(textColorButton), 1);
+
+ hbox = newHorizontalBox();
+ uiBoxAppend(vbox, uiControl(hbox), 0);
+
+ textApply = uiNewButton("Apply");
+ uiBoxAppend(hbox, uiControl(textApply), 1);
+
+ textWidth = uiNewEntry();
+ uiEntrySetText(textWidth, "-1");
+ uiBoxAppend(hbox, uiControl(textWidth), 1);
+
+ noZ = uiNewCheckbox("No Z Color");
+ uiCheckboxOnToggled(noZ, onNoZ, NULL);
+ uiBoxAppend(hbox, uiControl(noZ), 0);
+
+ textAreaHandler.Draw = handlerDraw;
+ textAreaHandler.MouseEvent = handlerMouseEvent;
+ textAreaHandler.MouseCrossed = handlerMouseCrossed;
+ textAreaHandler.DragBroken = handlerDragBroken;
+ textAreaHandler.KeyEvent = handlerKeyEvent;
+ textArea = uiNewArea(&textAreaHandler);
+ uiBoxAppend(vbox, uiControl(textArea), 1);
+
+ // dummy objects to test single-activation
+ hbox = newHorizontalBox();
+ uiBoxAppend(vbox, uiControl(hbox), 0);
+ uiBoxAppend(hbox, uiControl(uiNewFontButton()), 1);
+ uiBoxAppend(hbox, uiControl(uiNewColorButton()), 1);
+
+ return page10;
+}