qbe

Internal scc patchset buffer for QBE
Log | Files | Refs | README | LICENSE

mandel.c (1342B)


      1 void *malloc();
      2 void *SDL_CreateWindow();
      3 void *SDL_CreateRenderer();
      4 int SDL_SetRenderDrawColor();
      5 int SDL_RenderDrawPoint();
      6 int SDL_RenderClear();
      7 int SDL_RenderPresent();
      8 int SDL_PollEvent();
      9 int SDL_DestroyRenderer();
     10 int SDL_DestroyWindow();
     11 int SDL_Quit();
     12 int SDL_Init();
     13 
     14 void *win;
     15 void *rnd;
     16 int W;
     17 int H;
     18 int *col;
     19 
     20 plot(int x, int y)
     21 {
     22 	int n;
     23 	int fx;
     24 	int fy;
     25 	int zx;
     26 	int zy;
     27 	int nx;
     28 	int ny;
     29 
     30 	fx = (x - W/2)*4000 / W;
     31 	fy = (y - H/2)*4000 / H;
     32 	zx = fx;
     33 	zy = fy;
     34 
     35 	for (n=0; n<200; n++) {
     36 		if (zx*zx + zy*zy > 4000000)
     37 			break;
     38 		nx = (zx*zx)/1000 - (zy*zy)/1000 + fx;
     39 		ny = zx*zy/500 + fy;
     40 		zx = nx;
     41 		zy = ny;
     42 	}
     43 	n = col[n];
     44 	SDL_SetRenderDrawColor(rnd, 100, n, n, 255);
     45 	SDL_RenderDrawPoint(rnd, x, y);
     46 	return 0;
     47 }
     48 
     49 main() {
     50 	int c;
     51 	int n;
     52 	int x;
     53 	int y;
     54 	void *e;
     55 	int *ie;
     56 
     57 	W = 800;
     58 	H = 800;
     59 	SDL_Init(32);
     60 	win = SDL_CreateWindow("Mandelbrot MiniC", 0, 0, W, H, 0);
     61 	rnd = SDL_CreateRenderer(win, -1, 0);
     62 	e = malloc(56);
     63 	ie = e;
     64 	col = malloc(201 * sizeof (int));
     65 	c = 20;
     66 	for (n=0; n<200; n++) {
     67 		col[n] = c;
     68 		c = c + (255-c)/8;
     69 	}
     70 	col[n] = 30;
     71 
     72 	SDL_RenderClear(rnd);
     73 	for (x=0; x<W; x++)
     74 		for (y=0; y<H; y++)
     75 			plot(x, y);
     76 	SDL_RenderPresent(rnd);
     77 
     78 	for (;;) {
     79 		if (SDL_PollEvent(e)) {
     80 			if (ie[0] == 769)
     81 				break;
     82 		}
     83 	}
     84 
     85 	SDL_DestroyRenderer(rnd);
     86 	SDL_DestroyWindow(win);
     87 	SDL_Quit();
     88 }