diff --git a/test/GNUfiles.mk b/test/GNUfiles.mk index 1868dac8..fc8eae8c 100644 --- a/test/GNUfiles.mk +++ b/test/GNUfiles.mk @@ -11,6 +11,7 @@ CFILES += \ test/page5.c \ test/page6.c \ test/page7.c \ + test/page7a.c \ test/spaced.c HFILES += \ diff --git a/test/page7.c b/test/page7.c index 93f98d4d..6061b2c3 100644 --- a/test/page7.c +++ b/test/page7.c @@ -1,143 +1,15 @@ // 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 = M_PI / 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); -} - uiBox *makePage7(void) { uiBox *page7; 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; page7 = newHorizontalBox(); - group = newGroup("Arc Test"); + group = makePage7a(); uiBoxAppend(page7, uiControl(group), 1); - 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 page7; } diff --git a/test/page7a.c b/test/page7a.c new file mode 100644 index 00000000..ff0db201 --- /dev/null +++ b/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 = M_PI / 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; +} diff --git a/test/test.h b/test/test.h index 78bab9e3..8f4faf45 100644 --- a/test/test.h +++ b/test/test.h @@ -57,5 +57,8 @@ extern void populateComboboxWithTests(uiCombobox *); // page7.c extern uiBox *makePage7(void); +// page7a.c +extern uiGroup *makePage7a(void); + // page8.c extern uiBox *makePage8(void);