From e3e16e2fb021b61e45b01113cb1654cd7e4911c6 Mon Sep 17 00:00:00 2001 From: rodri Date: Sat, 13 Jun 2020 21:35:02 +0000 Subject: added basic canvas and layer management. --- canvas.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 canvas.c (limited to 'canvas.c') diff --git a/canvas.c b/canvas.c new file mode 100644 index 0000000..a017fb0 --- /dev/null +++ b/canvas.c @@ -0,0 +1,30 @@ +#include +#include +#include +#include +#include "dat.h" +#include "fns.h" + +static int +alphachan(ulong chan) +{ + for(; chan; chan >>= 8) + if(TYPE(chan) == CAlpha) + return 1; + return 0; +} + +Canvas* +newcanvas(Point2 p, Rectangle r, ulong chan) +{ + Canvas *c; + + c = emalloc(sizeof(Canvas)); + c->p = p; + c->bx = Vec2(1,0); + c->by = Vec2(0,1); + c->image = eallocimage(display, r, chan, 0, alphachan(chan)? DTransparent: DNofill); + memset(&c->layers, 0, sizeof(Layer)); + c->layers.next = &c->layers; + c->layers.prev = &c->layers; +} -- cgit v1.2.3