shithub: oledsaver

ref: b545233a9b54502f276f70a167f2b7f71c54161f
dir: /main.c/

View raw version
#include <u.h>
#include <libc.h>
#include <draw.h>
#include <memdraw.h>
#include "bitart.h"

#define NPIXELS 4032
#define H 32
#define W 126
#define NDRAWFUNCS 7
#define NITERFUNCS 4

int h, w;
char *path;
long ms;

void
usage(void)
{
	sysfatal("usage: %s [ -f subfont ] text", argv0);
}

void
main(int argc, char **argv)
{
	Memimage *img;
	// 126 x 32 oled ⇒ 4032 pixels
	int iteri, drawi;
	h = 32;
	w = 126;
	ms = 100;	// « change to ≤10 to get a kernel fault 
	path = "/mnt/reform/kbdoled";
	
	drawfunc *drawtab[NDRAWFUNCS] = {
		ob0,
		ob1,//general kenobi! *growls* « "hello there"
		ob2,
		ob3,
		ob4,
		ob5,
		drand,
	};
	
	iterfunc *itertab[NITERFUNCS] = {
		topdown,
		bottomup,
		leftright,
		rightleft,
	};

	ARGBEGIN{
	default:
		usage();
	}ARGEND;
	
	if (memimageinit())
		sysfatal("memimageinit failed: %r");

	// FOR EVER
	for(;;){
		iteri = ntruerand(NITERFUNCS);
		drawi = ntruerand(NDRAWFUNCS);

		// blank the screen
		img = allocmemimage(Rect(0, 0, w, h), GREY1);
		if (!img)
			sysfatal("cannot allocate memimage: %r");

		// white on black; bg is black
		memfillcolor(img, DBlack);

		/* call the independent drawing routine of choice */
		itertab[iteri](drawtab[drawi], img);		

		freememimage(img);
	}
	
}