Rev 290 | Rev 292 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include <stdio.h>#include <ggi/ggi.h>#define BLACK 0#define RED 1#define GREEN 2#define BLUE 3#define WHITE 4static ggi_visual_t vis;static ggi_color palette[5];static ggi_mode tm; //FIXME/* Initialize the palette's colors */void init_palette (){palette[0].r = 0;palette[0].g = 0;palette[0].b = 0;palette[1].r = 0xffff;palette[1].g = 0;palette[1].b = 0;palette[2].r = 0;palette[2].g = 0xffff;palette[2].b = 0;palette[3].r = 0;palette[3].g = 0;palette[3].b = 0xffff;palette[4].r = 0xffff;palette[4].g = 0xffff;palette[4].b = 0xffff;}/* Initialize GGI for drawing */void draw_init (){init_palette ();if (ggiInit () != 0){printf ("Error initialising GGI!\n");exit (1);}if ((vis = ggiOpen (NULL)) == NULL){printf ("Error opening visual!\n");ggiExit ();exit (1);}if (ggiSetSimpleMode (vis, GGI_AUTO, GGI_AUTO, 0, GT_AUTO)){printf ("Set the GGI_DISPLAY variable to the palemu!\n");exit (1);}ggiSetPalette (vis, 0, 5, palette);}void draw_flush (){ggiFlush (vis);}/* Close GGI when we're done drawing */void draw_close (){ggiClose (vis);ggiExit ();}void draw_clrscreen (){ggiSetGCForeground (vis, BLACK);ggiFillscreen (vis);draw_flush ();}void draw_putpixel (int x, int y, int color){ggiSetGCForeground (vis, color);ggiDrawPixel (vis, x, y);draw_flush ();}void draw_box (int x, int y, int width, int height, int color){ggiSetGCForeground (vis, color);ggiDrawBox (vis, x, y, width, height);draw_flush ();}void draw_line (int x1, int y1, int x2, int y2, int color){ggiSetGCForeground (vis, color);ggiDrawLine (vis, x1, y1, x2, y2);draw_flush ();}void draw_printmode (){fprintf (stderr, "virt.x: %d\n", tm.virt.x);fprintf (stderr, "virt.y: %d\n", tm.virt.y);fprintf (stderr, "size.x: %d\n", tm.size.x);fprintf (stderr, "size.y: %d\n", tm.size.y);fprintf (stderr, "dpp: %d\n", tm.dpp);}int main (){int i;/* Initialize */draw_init ();/* Use */draw_clrscreen ();draw_putpixel (20, 20, RED);draw_box (50, 50, 100, 100, GREEN);draw_line (30, 20, 300, 180, BLUE);draw_box (100, 80, 100, 100, WHITE);/* Sleep until the keyboard is pressed */ggiGetc (vis);draw_clrscreen ();draw_putpixel (40, 40, RED);draw_putpixel (20, 20, GREEN);draw_putpixel (30, 30, BLUE);ggiGetc (vis);/* Slow draw */draw_clrscreen ();for (i=0; i<800; i++){draw_putpixel (i, i, RED);usleep (10000);}ggiGetMode (vis, &tm);/* Quit */draw_close ();draw_printmode ();return (0);}