(* Release 3.10 *) (*-------------------------------------------------------------------------* * * * CGRAPH.DEF - Modula-2 interface to GRAPH.H * * * * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. * * All Rights Reserved * * * *--------------------------------------------------------------------------*) (*# project("#set tsc='on'") *) (*# project("#set cgraph='jpi'") *) (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on, near_call=>off, ds_eq_ss=>off) *) (*# data(near_ptr=>off) *) (*# module(implementation=>off, init_code=>off) *) (*# name(prefix=>c) *) DEFINITION MODULE cgraph; (* Filling functions take a combination of two colors encoded as Color1 + NumColor * Color2 *) (* Device independant routines provided as procedure variables (see below) *) TYPE videoconfig_p = POINTER TO videoconfig; videoconfig = RECORD numxpixels : CARDINAL; (* number of pixels on X axis *) numypixels : CARDINAL; (* number of pixels on Y axis *) numtextcols: CARDINAL; (* number of text columns available *) numtextrows: CARDINAL; (* number of text rows available *) numcolors : CARDINAL; (* number of actual colors *) bitsperpixel:CARDINAL; (* number of bits per pixel *) numvideopages:CARDINAL; (* number of available video pages *) mode : CARDINAL; (* current video mode *) adapter : CARDINAL; (* active display adapter *) monitor : CARDINAL; (* active display monitor *) memory : CARDINAL; (* adapter video memory in K bytes *) END; xycoord = RECORD xcoord : CARDINAL; ycoord : CARDINAL; END; rccoord = RECORD row : CARDINAL; col : CARDINAL; END; CONST _DEFAULTMODE = -1; (* restore screen to original mode *) _TEXTBW40 = 0; (* 40 x 25 text, 16 grey *) _TEXTC40 = 1; (* 40 x 25 text, 16/8 color *) _TEXTBW80 = 2; (* 80 x 25 text, 16 grey *) _TEXTC80 = 3; (* 80 x 25 text, 16/8 color *) _MRES4COLOR = 4; (* 320 x 200, 4 color *) _MRESNOCOLOR = 5; (* 320 x 200, 4 grey *) _HRESBW = 6; (* 640 x 200, BW *) _TEXTMONO = 7; (* 80 x 25 text, BW *) _HERCMONO = 8; (* 720 x 348, BW for HGC *) _MRES16COLOR = 13; (* 320 x 200, 16 color *) _HRES16COLOR = 14; (* 640 x 200, 16 color *) _ERESNOCOLOR = 15; (* 640 x 350, BW *) _ERESCOLOR = 16; (* 640 x 350, 4 or 16 color *) _VRES2COLOR = 17; (* 640 x 480, BW *) _VRES16COLOR = 18; (* 640 x 480, 16 color *) _MRES256COLOR = 19; (* 320 x 200, 256 color *) _MDPA = 0001H; (* Monochrome Display Adapter (MDPA) *) _CGA = 0002H; (* Color Graphics Adapter (CGA) *) _EGA = 0004H; (* Enhanced Graphics Adapter (EGA) *) _VGA = 0008H; (* Video Graphics Array (VGA) *) _MCGA = 0010H; (* MultiColor Graphics Array (MCGA) *) _HGC = 0020H; (* Hercules Graphics Card (HGC) *) _MONO = 0001H; (* Monochrome *) _COLOR = 0002H; (* Color (or Enhanced emulating color) *) _ENHCOLOR = 0004H; (* Enhanced Color *) _ANALOG = 0018H; (* Analog *) _GBORDER = 2; (* draw outline only *) _GFILLINTERIOR = 3; (* fill using current fill mask *) _GTOP = 1; _GNOTOP = 0; _GCLEARSCREEN = 0; _GVIEWPORT = 1; _GWINDOW = 2; _GCURSOROFF = 0; _GCURSORON = 1; _GWRAPOFF = 0; _GWRAPON = 1; _GPSET = 3; _GPRESET = 2; _GAND = 1; _GOR = 0; _GXOR = 4; _BLACK = 000000H; _BLUE = 2A0000H; _GREEN = 002A00H; _CYAN = 2A2A00H; _RED = 00002AH; _MAGENTA = 2A002AH; _BROWN = 00152AH; _WHITE = 2A2A2AH; _GRAY = 151515H; _LIGHTBLUE = 3F1515H; _LIGHTGREEN = 153F15H; _LIGHTCYAN = 3F3F15H; _LIGHTRED = 15153FH; _LIGHTMAGENTA = 3F153FH; _LIGHTYELLOW = 153F3FH; _BRIGHTWHITE = 3F3F3FH; _MODEFOFF = LONGCARD(0); _MODEFOFFTOON = LONGCARD(1); _MODEFOFFTOHI = LONGCARD(2); _MODEFONTOOFF = LONGCARD(3); _MODEFON = LONGCARD(4); _MODEFONTOHI = LONGCARD(5); _MODEFHITOOFF = LONGCARD(6); _MODEFHITOON = LONGCARD(7); _MODEFHI = LONGCARD(8); _MODE7OFF = LONGCARD(0); _MODE7ON = LONGCARD(1); _MODE7HI = LONGCARD(2); PROCEDURE _setvideomode(mode:CARDINAL):INTEGER; PROCEDURE _setactivepage(page:CARDINAL):INTEGER; PROCEDURE _setvisualpage(page:CARDINAL):INTEGER; PROCEDURE _getvideoconfig(VAR v:videoconfig):videoconfig_p; PROCEDURE _setlogorg(x,y:CARDINAL):xycoord; PROCEDURE _getlogcoord(x,y:CARDINAL):xycoord; PROCEDURE _getphyscoord(x,y:CARDINAL):xycoord; PROCEDURE _setcliprgn(x1,y1,x2,y2:CARDINAL); PROCEDURE _setviewport(x1,y1,x2,y2:CARDINAL); PROCEDURE _clearscreen(area:CARDINAL); PROCEDURE _moveto(x,y:CARDINAL):xycoord; PROCEDURE _getcurrentposition():xycoord; PROCEDURE _lineto(x,y:CARDINAL):INTEGER; PROCEDURE _rectangle(fill,x1,y1,x2,y2:CARDINAL):INTEGER; PROCEDURE _ellipse(fill,x1,y1,x2,y2:CARDINAL):INTEGER; PROCEDURE _arc(x1,y1,x2,y2,x3,y3,x4,y4:CARDINAL):INTEGER; PROCEDURE _pie(fill,x1,y1,x2,y2,x3,y3,x4,y4:CARDINAL):INTEGER; PROCEDURE _cube(fill,top,x1,y1,x2,y2,depth:CARDINAL):INTEGER; PROCEDURE _polygon(fill,n:CARDINAL;px,py:ARRAY OF CARDINAL):INTEGER; PROCEDURE _setpixel(x,y:CARDINAL):INTEGER; PROCEDURE _getpixel(x,y:CARDINAL):INTEGER; PROCEDURE _floodfill(x,y,boundary:CARDINAL):INTEGER; PROCEDURE _stackfill(x,y,boundary:CARDINAL):INTEGER; PROCEDURE _setcolor(col:CARDINAL):INTEGER; PROCEDURE _getcolor():INTEGER; PROCEDURE _setlinestyle(mask:CARDINAL); PROCEDURE _getlinestyle():CARDINAL; PROCEDURE _setfillmask(VAR MaskArray:SHORTCARD):CARDINAL; PROCEDURE _getfillmask(VAR MaskArray:SHORTCARD):ADDRESS; PROCEDURE _setbkcolor(col:LONGCARD):LONGCARD; PROCEDURE _getbkcolor():LONGCARD; PROCEDURE _remappalette(pixel:CARDINAL;col:LONGCARD):LONGINT; PROCEDURE _remapallpalette(ColorArray:ARRAY OF LONGCARD):LONGINT; PROCEDURE _selectpalette(num:CARDINAL):INTEGER; PROCEDURE _settextwindow(x1,y1,x2,y2:CARDINAL); PROCEDURE _outtext(str:ARRAY OF CHAR); PROCEDURE _wrapon(flag:CARDINAL):CARDINAL; PROCEDURE _displaycursor(flag:CARDINAL):CARDINAL; PROCEDURE _settextposition(row,col:CARDINAL):rccoord; PROCEDURE _gettextposition():rccoord; PROCEDURE _settextcolor(col:CARDINAL):CARDINAL; PROCEDURE _gettextcolor():CARDINAL; PROCEDURE _getimage(x1,y1,x2,y2:CARDINAL;VAR buffer:ARRAY OF BYTE); PROCEDURE _putimage(x,y:CARDINAL;buffer:ARRAY OF BYTE;action:CARDINAL); PROCEDURE _imagesize(x1,y1,x2,y2:CARDINAL):LONGCARD; PROCEDURE _enable_herc(); END cgraph.