diff options
author | StapleButter <thetotalworm@gmail.com> | 2017-09-09 02:30:51 +0200 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2017-09-09 02:30:51 +0200 |
commit | 70e4841d311d68689724768157cc9cbfbde7a9fc (patch) | |
tree | ba9499f77d1258530a7e60aa6e1732c41d98161c /src/libui_sdl/libui/test/page7a.c | |
parent | 81747d6c34eb159481a6ca3f283d065fa3568617 (diff) |
another UI attempt, I guess.
sorry.
Diffstat (limited to 'src/libui_sdl/libui/test/page7a.c')
-rw-r--r-- | src/libui_sdl/libui/test/page7a.c | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/src/libui_sdl/libui/test/page7a.c b/src/libui_sdl/libui/test/page7a.c new file mode 100644 index 0000000..72e0321 --- /dev/null +++ b/src/libui_sdl/libui/test/page7a.c @@ -0,0 +1,139 @@ +// 13 october 2015 +#include "test.h" + +static uiArea *area; +static uiEntry *startAngle; +static uiEntry *sweep; +static uiCheckbox *negative; +static uiCheckbox *radians; + +struct handler { + uiAreaHandler ah; +}; + +static struct handler handler; + +// based on the cairo arc sample +static void handlerDraw(uiAreaHandler *a, uiArea *area, uiAreaDrawParams *p) +{ + double xc = 128.0; + double yc = 128.0; + double radius = 100.0; + uiDrawBrush source; + uiDrawStrokeParams sp; + uiDrawPath *path; + char *startText; + char *sweepText; + double factor; + + source.Type = uiDrawBrushTypeSolid; + source.R = 0; + source.G = 0; + source.B = 0; + source.A = 1; + sp.Cap = uiDrawLineCapFlat; + sp.Join = uiDrawLineJoinMiter; + sp.MiterLimit = uiDrawDefaultMiterLimit; + sp.Dashes = NULL; + sp.NumDashes = 0; + sp.DashPhase = 0; + + startText = uiEntryText(startAngle); + sweepText = uiEntryText(sweep); + + factor = uiPi / 180; + if (uiCheckboxChecked(radians)) + factor = 1; + + sp.Thickness = 10.0; + path = uiDrawNewPath(uiDrawFillModeWinding); + uiDrawPathNewFigure(path, xc, yc); + uiDrawPathArcTo(path, + xc, yc, + radius, + atof(startText) * factor, + atof(sweepText) * factor, + uiCheckboxChecked(negative)); + uiDrawPathEnd(path); + uiDrawStroke(p->Context, path, &source, &sp); + uiDrawFreePath(path); + + uiFreeText(startText); + uiFreeText(sweepText); +} + +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) +{ + return 0; +} + +static void entryChanged(uiEntry *e, void *data) +{ + uiAreaQueueRedrawAll(area); +} + +static void checkboxToggled(uiCheckbox *c, void *data) +{ + uiAreaQueueRedrawAll(area); +} + +uiGroup *makePage7a(void) +{ + uiGroup *group; + uiBox *box, *box2; + + handler.ah.Draw = handlerDraw; + handler.ah.MouseEvent = handlerMouseEvent; + handler.ah.MouseCrossed = handlerMouseCrossed; + handler.ah.DragBroken = handlerDragBroken; + handler.ah.KeyEvent = handlerKeyEvent; + + group = newGroup("Arc Test"); + + box = newVerticalBox(); + uiGroupSetChild(group, uiControl(box)); + + area = uiNewArea((uiAreaHandler *) (&handler)); + uiBoxAppend(box, uiControl(area), 1); + + box2 = newHorizontalBox(); + uiBoxAppend(box, uiControl(box2), 0); + + uiBoxAppend(box2, uiControl(uiNewLabel("Start Angle")), 0); + startAngle = uiNewEntry(); + uiEntryOnChanged(startAngle, entryChanged, NULL); + uiBoxAppend(box2, uiControl(startAngle), 1); + + box2 = newHorizontalBox(); + uiBoxAppend(box, uiControl(box2), 0); + + uiBoxAppend(box2, uiControl(uiNewLabel("Sweep")), 0); + sweep = uiNewEntry(); + uiEntryOnChanged(sweep, entryChanged, NULL); + uiBoxAppend(box2, uiControl(sweep), 1); + + negative = uiNewCheckbox("Negative"); + uiCheckboxOnToggled(negative, checkboxToggled, NULL); + uiBoxAppend(box, uiControl(negative), 0); + + radians = uiNewCheckbox("Radians"); + uiCheckboxOnToggled(radians, checkboxToggled, NULL); + uiBoxAppend(box, uiControl(radians), 0); + + return group; +} |