aboutsummaryrefslogtreecommitdiff
path: root/canvas.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2020-06-14 19:54:18 +0000
committerrodri <rgl@antares-labs.eu>2020-06-14 19:54:18 +0000
commit1024676bc6ad5ef8b073cefd5da22c89dbb59dde (patch)
treec94ca5df7fd2c0f3b22913ef6c9cf9609aa69d33 /canvas.c
parentd80ac9e9f103779aa61871c65d9939a3478c19a6 (diff)
downloadpuppeteer-1024676bc6ad5ef8b073cefd5da22c89dbb59dde.tar.gz
puppeteer-1024676bc6ad5ef8b073cefd5da22c89dbb59dde.tar.bz2
puppeteer-1024676bc6ad5ef8b073cefd5da22c89dbb59dde.zip
now it's possible to paint on any given layer. also changed worldrf.
Diffstat (limited to 'canvas.c')
-rw-r--r--canvas.c25
1 files changed, 15 insertions, 10 deletions
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);
+}