From 1024676bc6ad5ef8b073cefd5da22c89dbb59dde Mon Sep 17 00:00:00 2001 From: rodri Date: Sun, 14 Jun 2020 19:54:18 +0000 Subject: now it's possible to paint on any given layer. also changed worldrf. --- canvas.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'canvas.c') diff --git a/canvas.c b/canvas.c index abd0089..d2632bb 100644 --- a/canvas.c +++ b/canvas.c @@ -5,17 +5,8 @@ #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) +newcanvas(char *name, Point2 p, Rectangle r, ulong chan) { Canvas *c; @@ -23,9 +14,23 @@ newcanvas(Point2 p, Rectangle r, ulong chan) c->p = p; c->bx = Vec2(1,0); c->by = Vec2(0,1); + c->name = strdup(name); 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; + c->curlayer = nil; return c; } + +void +rmcanvas(Canvas *c) +{ + Layer *l; + + for(l = c->layers.next; l != &c->layers; l = l->next) + rmlayer(l); + freeimage(c->image); + free(c->name); + free(c); +} -- cgit v1.2.3