Linux makefiles
[canaan.git] / prj / tech / libsrc / dev2d / gdtest.c
blob95bcdd155d5be4b77683411f3f953a46c41e06c9
1 #include <conio.h>
3 #include <dev2d.h>
4 #include <mprintf.h>
6 typedef struct {
7 short x,y;
8 } point;
10 static uchar bm_bits[32*32*2];
11 static grs_bitmap bm={
12 bm_bits, BMT_FLAT8, 0, 0, 32, 32, 32, 5, 5
15 static uchar clut[256];
16 static uchar pal[768];
18 point pos={0,0};
19 point size={0,0};
20 int fill_type=0;
21 int do_box=TRUE;
22 int do_bm=FALSE;
24 int get_input(void (*cb)())
26 uchar c=getch();
27 if (cb!=NULL)
28 cb();
29 switch (c) {
30 case '2': size.y++; break;
31 case '8': size.y--; break;
32 case '4': size.x--; break;
33 case '6': size.x++; break;
34 case 'w': pos.y-=5; break;
35 case 'x': pos.y+=5; break;
36 case 'a': pos.x-=5; break;
37 case 'd': pos.x+=5; break;
38 case 'b': do_box^=1; break;
39 case 'm': do_bm^=1; break;
40 case 'f': fill_type++;
41 if (fill_type==FILL_TYPES) fill_type=0;
42 break;
43 case 't': bm.flags^=BMF_TRANS; break;
44 case 'q': return 0;
46 return 1;
49 void clear()
51 int fc_save=grd_gc.fcolor;
52 grd_gc.fcolor = 0;
53 gr_rect(0, 0, grd_bm.w, grd_bm.h);
54 grd_gc.fcolor = fc_save;
57 void do_gfx()
59 grd_gc.fill_type=fill_type;
60 if (fill_type==FILL_CLUT)
61 grd_gc.fill_parm = (ulong )clut;
62 if (fill_type==FILL_SOLID)
63 grd_gc.fill_parm = grd_gc.fcolor;
64 if (do_bm)
65 gr_bitmap(&bm, pos.x, pos.y);
66 if (do_box)
67 gr_box(pos.x, pos.y, pos.x+size.x, pos.y+size.y);
68 grd_gc.fill_type=FILL_NORM;
71 void init()
73 int i;
74 for (i=0; i<bm.row*bm.h; i++)
75 bm.bits[i]=i;
76 for (i=0; i<256; i++) {
77 clut[i]=255-i;
78 tluc8tab[i] = clut;
80 for (i=0; i<768; i++)
81 pal[i] = i;
82 gr_set_default_pal(pal);
85 main ()
87 grs_screen *s;
89 gd_svga_init();
90 init();
91 gr_set_mode(GRM_320x400x8, TRUE);
92 s = gr_alloc_screen(grd_cap->w, grd_cap->h);
93 gr_set_screen(s);
94 grd_gc.fcolor=7;
95 grd_gc.bcolor=15;
96 do {
97 do_gfx();
98 } while (get_input(clear));
99 mprintf("hi there.\n");
100 mprintf("bye.\n");
101 gd_close();