prindle@nadc (10/21/86)
From: prindle@NADC /* Graphics Driver ** Filename: gdriver.c ** Author: Mark R. Rinfret ** Date: 12/14/85 ** Description: ** ** This package serves as a driver to demo the features implemented in the ** grafpak graphics routines package. ** */ #include <stdio.h> #include <strings.h> #include <math.h> #define RADCON 57.2957795 /* degrees to radians factor */ main() { register unsigned base; register unsigned i,j; base = 40960; /* bitmap in upper 8k of bank 2 */ highmem(32768); ginit(); /* initialize graphics package */ graphics(0,1); puts("This is text mode - RETURN to continue.\n"); delay(); test1(); /* test hi-res graphics */ test2(); /* test multi-color mode */ graphics(0,0); puts("Back to text mode.\n"); } /* Test hi-res graphics */ test1() { register unsigned a,b,d,i,x,x1,y,r; register char c,*p; float r2,x2,incr; graphics(1,1); /* hi-res w/clear */ spintext(160,100,"Hi-res"); graphics(1,1); line(0,0,319,199,1); /* upper left to lower right */ line(0,199,319,0,1); /* lower left to upper right */ line(0,100,319,100,1); /* horizontal axis */ line(160,0,160,199,1); /* vertical axis */ /* Circles */ circle(160,100,80,1); /* Diagonal lines through center */ line(0,0,319,199,1); line(319,0,0,199,1); /* Horizontal ellipse */ arc(160,100,100,50,0,360,0,1.0,1); /* Vertical ellipse */ arc(160,100,50,100,0,360,0,1.0,1); delay(); /* Polygons */ graphics(1,1); colors(-1,-1,5,-1,-1); drawtext(32,0,"Polygons using 'arc'",0,1); colors(-1,-1,6,-1,-1); arc(48,48,40,40,0,360,0,120.0,1); /* triangle */ drawtext(0,88,"Triangle",0,1); colors(-1,-1,7,-1,-1); /* yellow */ arc(240,48,40,40,0,360,0,90.0,1); /* square */ drawtext(200,88,"Square",0,1); colors(-1,-1,3,-1,-1); /* cyan */ arc(80,144,40,40,0,360,0,60.0,1); /* hexagon */ drawtext(20,192,"Hexagon",0,1); colors(-1,-1,2,-1,-1); /* red */ arc(240,144,40,40,0,360,0,45.0,1); /* octagon */ drawtext(200,192,"Octagon",0,1); delay(); } test2() { register unsigned pen,x,y,xx,yy,s; graphics(2,1); colors(0,1,2,5,6); spintext(80,100,"Multicolor"); graphics(2,1); /* clear screen */ pen = 1; for (s=10;s<=80;s+=10) { /* boxes in boxes */ x=80-(s/2); y=100-(s/2); line(x,y,x+s,y,pen); line(x+s,y,x+s,y+s,pen); line(x+s,y+s,x,y+s,pen); line(x,y+s,x,y,pen); if (++pen == 4) pen=1; } circle(80,100,70,1); delay(); } delay() { for (;getchar() != '\n';); } /* Draw text rotated about an x,y coordinate */ spintext(x,y,s) unsigned x,y; char *s; { float angle; for (angle=0.0;angle < 360.0; angle += 45.0) drawtext(x,y,s,angle,1); }