]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/mothra/libpanel/canvas.c
exec(2): fix prototypes
[plan9front.git] / sys / src / cmd / mothra / libpanel / canvas.c
1 #include <u.h>
2 #include <libc.h>
3 #include <draw.h>
4 #include <event.h>
5 #include <panel.h>
6 #include "pldefs.h"
7 typedef struct Canvas Canvas;
8 struct Canvas{
9         void (*draw)(Panel *);
10         void (*hit)(Panel *, Mouse *);
11 };
12 void pl_drawcanvas(Panel *p){
13         Canvas *c;
14         c=p->data;
15         if(c->draw) c->draw(p);
16 }
17 int pl_hitcanvas(Panel *p, Mouse *m){
18         Canvas *c;
19         c=p->data;
20         if(c->hit) c->hit(p, m);
21         return 0;
22 }
23 void pl_typecanvas(Panel *p, Rune c){
24         USED(p, c);
25 }
26 Point pl_getsizecanvas(Panel *p, Point children){
27         USED(p, children);
28         return Pt(0,0);
29 }
30 void pl_childspacecanvas(Panel *p, Point *ul, Point *size){
31         USED(p, ul, size);
32 }
33 void plinitcanvas(Panel *v, int flags, void (*draw)(Panel *), void (*hit)(Panel *, Mouse *)){
34         Canvas *c;
35         v->flags=flags|LEAF;
36         v->draw=pl_drawcanvas;
37         v->hit=pl_hitcanvas;
38         v->type=pl_typecanvas;
39         v->getsize=pl_getsizecanvas;
40         v->childspace=pl_childspacecanvas;
41         v->kind="canvas";
42         c=v->data;
43         c->draw=draw;
44         c->hit=hit;
45 }
46 Panel *plcanvas(Panel *parent, int flags, void (*draw)(Panel *), void (*hit)(Panel *, Mouse *)){
47         Panel *p;
48         p=pl_newpanel(parent, sizeof(Canvas));
49         plinitcanvas(p, flags, draw, hit);
50         return p;
51 }