First Commit
This commit is contained in:
commit
ae0fab9400
424 files changed
+71006
No files matched your search
@@ -0,0 +1,133 @@
|
||||
// 13 october 2015
|
||||
#include "test.h"
|
||||
|
||||
static uiArea *area;
|
||||
|
||||
struct handler {
|
||||
uiAreaHandler ah;
|
||||
};
|
||||
|
||||
static struct handler handler;
|
||||
|
||||
#define areaSize 250
|
||||
#define borderThickness 1
|
||||
#define padding 30
|
||||
#define circleRadius ((areaSize - padding) / 2)
|
||||
|
||||
static void handlerDraw(uiAreaHandler *a, uiArea *area, uiAreaDrawParams *dp)
|
||||
{
|
||||
uiDrawPath *path;
|
||||
uiDrawBrush brush;
|
||||
uiDrawStrokeParams sp;
|
||||
uiDrawBrushGradientStop stops[2];
|
||||
|
||||
memset(&brush, 0, sizeof (uiDrawBrush));
|
||||
memset(&sp, 0, sizeof (uiDrawStrokeParams));
|
||||
|
||||
// add some buffering to detect scrolls that aren't on the dot and draws that are outside the scroll area on Windows
|
||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||
uiDrawPathAddRectangle(path,
|
||||
-50, -50,
|
||||
areaSize + 100, areaSize + 100);
|
||||
uiDrawPathEnd(path);
|
||||
brush.Type = uiDrawBrushTypeSolid;
|
||||
brush.R = 0;
|
||||
brush.G = 1;
|
||||
brush.B = 0;
|
||||
brush.A = 1;
|
||||
uiDrawFill(dp->Context, path, &brush);
|
||||
uiDrawFreePath(path);
|
||||
|
||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||
uiDrawPathAddRectangle(path,
|
||||
0, 0,
|
||||
areaSize, areaSize);
|
||||
uiDrawPathEnd(path);
|
||||
brush.Type = uiDrawBrushTypeSolid;
|
||||
brush.R = 1;
|
||||
brush.G = 1;
|
||||
brush.B = 1;
|
||||
brush.A = 1;
|
||||
uiDrawFill(dp->Context, path, &brush);
|
||||
brush.Type = uiDrawBrushTypeSolid;
|
||||
brush.R = 1;
|
||||
brush.G = 0;
|
||||
brush.B = 0;
|
||||
brush.A = 1;
|
||||
sp.Cap = uiDrawLineCapFlat;
|
||||
sp.Join = uiDrawLineJoinMiter;
|
||||
sp.Thickness = 1;
|
||||
sp.MiterLimit = uiDrawDefaultMiterLimit;
|
||||
uiDrawStroke(dp->Context, path, &brush, &sp);
|
||||
uiDrawFreePath(path);
|
||||
|
||||
path = uiDrawNewPath(uiDrawFillModeWinding);
|
||||
uiDrawPathNewFigureWithArc(path,
|
||||
areaSize / 2, areaSize / 2,
|
||||
circleRadius,
|
||||
0, 2 * uiPi,
|
||||
0);
|
||||
uiDrawPathEnd(path);
|
||||
stops[0].Pos =0.0;
|
||||
stops[0].R = 0.0;
|
||||
stops[0].G = 1.0;
|
||||
stops[0].B = 1.0;
|
||||
stops[0].A = 1.0;
|
||||
stops[1].Pos = 1.0;
|
||||
stops[1].R = 0.0;
|
||||
stops[1].G = 0.0;
|
||||
stops[1].B = 1.0;
|
||||
stops[1].A = 1.0;
|
||||
brush.Type = uiDrawBrushTypeLinearGradient;
|
||||
brush.X0 = areaSize / 2;
|
||||
brush.Y0 = padding;
|
||||
brush.X1 = areaSize / 2;
|
||||
brush.Y1 = areaSize - padding;
|
||||
brush.Stops = stops;
|
||||
brush.NumStops = 2;
|
||||
uiDrawFill(dp->Context, path, &brush);
|
||||
uiDrawFreePath(path);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (e->Key == 'h' && !e->Up) {
|
||||
// TODO hide the widget momentarily on the h key
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uiGroup *makePage7c(void)
|
||||
{
|
||||
uiGroup *group;
|
||||
|
||||
handler.ah.Draw = handlerDraw;
|
||||
handler.ah.MouseEvent = handlerMouseEvent;
|
||||
handler.ah.MouseCrossed = handlerMouseCrossed;
|
||||
handler.ah.DragBroken = handlerDragBroken;
|
||||
handler.ah.KeyEvent = handlerKeyEvent;
|
||||
|
||||
group = newGroup("Scrolling Drawing Test");
|
||||
|
||||
area = uiNewScrollingArea((uiAreaHandler *) (&handler),
|
||||
areaSize, areaSize);
|
||||
uiGroupSetChild(group, uiControl(area));
|
||||
|
||||
return group;
|
||||
}
|
||||
Reference in new issue
Block a user