/* Copyright (c) 1992 AT&T - All rights reserved. */ #include #ifdef __STDC__ #include #endif #include #include void cont(char *); void putstring(char *); void colorinit(void); void printcolmap(void); void invertcolmap(void); unsigned char arrowset[] = {0x00, 0x00, 0x7F, 0xC0, 0x7F, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x7F, 0x00, 0x6F, 0x80, 0x67, 0xC0, 0x43, 0xE0, 0x41, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x08, 0x00, 0x00}; char *colors[] = { "Black", "Red", "Green", "Yellow", "Cyan", "Magenta", "Blue", "White" }; RGB colordefs[] = { { 0,0,0 }, /* black */ {0xFFFFFFFF, 0x00000000, 0x00000000}, /* red */ {0x00000000, 0xFFFFFFFF, 0x00000000}, /* green */ {0xFFFFFFFF, 0xFFFFFFFF, 0x00000000}, /* yellow */ {0x00000000, 0xFFFFFFFF, 0xFFFFFFFF}, /* cyan */ {0xFFFFFFFF, 0x00000000, 0xFFFFFFFF}, /* magenta */ {0x00000000, 0x00000000, 0xFFFFFFFF}, /* blue */ {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}, /* white */ }; #define Ncol (sizeof(colordefs)/sizeof(colordefs[0])) unsigned long rgbval[Ncol]; Bitmap *rgbbitmap[Ncol]; main(int argc, char **argv) { Point p1,p2,p3; Mouse m; int r,rx,ry; int n, i; char *m3gen(int); static Menu menu3 = { (char **) 0, m3gen, 0 }; char *p, buf[200]; Bitmap *bm, *bm2; RGB cmap[256]; xtbinit(0,0,&argc,argv,0); einit(Ekeyboard|Emouse); p1 = add(screen.r.min, Pt(15,15)); p2 = sub(screen.r.max, Pt(15,15)); p3 = divpt(add(p1,p2),2); fprintf(stderr, "segment(&screen, (%d,%d), (%d,%d), ~0, S)\n", p1.x,p1.y,p2.x,p2.y); segment(&screen, p1, p2, ~0, S); cont("point"); fprintf(stderr, "point(&screen, (%d,%d), ~0, S)\n", p1.x,p1.y); point(&screen, p1, ~0, S); cont("circle"); rx = p3.x - p1.x; ry = p3.y - p1.y; r = (rx < ry)? rx : ry; fprintf(stderr, "circle(&screen, (%d,%d), %d, ~0, S)\n", p3.x,p3.y,r); circle(&screen, p3, r, ~0, S); cont("disc"); fprintf(stderr, "disc(&screen, (%d,%d), %d, ~0, S)\n", p3.x,p3.y,r); disc(&screen, p3, r, ~0, S); cont("clipped disc"); fprintf(stderr, "clipr(&screen, ((%d,%d)(%d,%d))\n", p1.x+30, p1.y+5, p3.x-30, p3.y-5); clipr(&screen, Rect(p1.x+30, p1.y+5, p3.x-30, p3.y-5)); fprintf(stderr, "disc(&screen, (%d,%d), %d, ~0, S)\n", p3.x,p3.y,r); disc(&screen, p3, r, ~0, S); clipr(&screen, screen.r); cont("ellipse"); fprintf(stderr, "ellipse(&screen, (%d,%d), %d, %d, ~0, S)\n", p3.x,p3.y,r,r/2); ellipse(&screen, p3, r, r/2, ~0, S); cont("arc"); fprintf(stderr, "arc(&screen, (%d,%d), (%d,%d), (%d,%d), ~0, S)\n", p3.x,p3.y, p3.x+r,p3.y, p3.x+r/2,p3.x-(int)(r*.866)); arc(&screen, p3, Pt(p3.x+r,p3.y), Pt(p3.x+r/2,p3.x-(int)(r*.866)), ~0, S); if(screen.ldepth > 1){ cont("color"); colorinit(); p3 = p1; rx *= 2; ry *= 2; for(i = 0; iheight), Zero); string(&screen, p, font, buf, F); if ((l = strwidth(font, buf)) > jmax) jmax = l; } void cont(char *msg) { Event ev; Point mp; while(event(&ev) != Ekeyboard) continue; bitblt(&screen, Pt(0,0), &screen, screen.r, Zero); mp = add(screen.r.min, Pt(20,20)); string(&screen, mp, font, msg, S); while(event(&ev) != Ekeyboard) continue; bitblt(&screen, Pt(0,0), &screen, screen.r, Zero); } char * m3gen(int n) { static char *m3[] ={ "quit", "thing1", "thing2" }; if (n < 0 || n > 2) return 0; else return m3[n]; } void ereshaped(Rectangle r) { }