ref: 34bcf237883f8b57201abbb2ec51c1330394f39e
dir: /drw.c/
#include <u.h>
#include <libc.h>
#include <thread.h>
#include <draw.h>
#include "dat.h"
#include "fns.h"
Rectangle fbr;
Image *fb;
void (*renderfn)(void);
Image *
eallocimage(Rectangle r, ulong chan, int repl, ulong col)
{
Image *i;
if((i = allocimage(display, r, chan, repl, col)) == nil)
sysfatal("allocimage: %r");
return i;
}
Point
PFt(Foint p)
{
return (Point){p.x, p.y};
}
Rectangle
RFect(Fectangle r)
{
return (Rectangle){PFt(r.min), PFt(r.max)};
}
void
updatedraw(void)
{
renderfn();
draw(screen, screen->r, fb, nil, ZP);
flushimage(display, 1);
}
void
redraw(void)
{
updatedraw();
}
void
resetdraw(void)
{
freeimage(fb);
fbr = rectsubpt(screen->r, screen->r.min);
fb = eallocimage(fbr, screen->chan, 0, DNofill);
redraw();
}