| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- (* Release 3.10 *)
- (*-------------------------------------------------------------------------*
- * *
- * GRAPHICS.DEF - Modula-2 interface to BGI graphics *
- * *
- * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
- * All Rights Reserved *
- * *
- *--------------------------------------------------------------------------*)
- (*# project("#set cgraph='borland'") *)
- (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on,
- reg_param=>(), reg_saved=>(di,si,ds,st1,st2), near_call=>off) *)
- (*# data(near_ptr=>off) *)
- (*# module(implementation=>off, init_code=>off) *)
- (*# name(prefix=>c) *)
- DEFINITION MODULE graphics;
- CONST
- (* Error Codes From graphresult *)
- grOk = 0;
- grNoInitGraph = -1;
- grNotDetected = -2;
- grFileNotFound = -3;
- grInvalidDriver = -4;
- grNoLoadMem = -5;
- grNoScanMem = -6;
- grNoFloodMem = -7;
- grFontNotFound = -8;
- grNoFontMem = -9;
- grInvalidMode = -10;
- grError = -11;
- grIOerror = -12;
- grInvalidFont = -13;
- grInvalidFontNum = -14;
- grInvalidVersion = -18;
- (* Graphics Drivers *)
- DETECT = 0; (* autodetect *)
- CGA = 1;
- MCGA = 2;
- EGA = 3;
- EGA64 = 4;
- EGAMONO = 5;
- IBM8514 = 6;
- HERCMONO = 7;
- ATT400 = 8;
- VGA = 9;
- PC3270 = 10;
- CURRENT_DRIVER = -1; (* default *)
- (* Graphics Modes For Each Driver *)
- CGAC0 = 0; (* 320x200 palette 0; 1 page *)
- CGAC1 = 1; (* 320x200 palette 1; 1 page *)
- CGAC2 = 2; (* 320x200 palette 2: 1 page *)
- CGAC3 = 3; (* 320x200 palette 3; 1 page *)
- CGAHI = 4; (* 640x200 1 page *)
- MCGAC0 = 0; (* 320x200 palette 0; 1 page *)
- MCGAC1 = 1; (* 320x200 palette 1; 1 page *)
- MCGAC2 = 2; (* 320x200 palette 2; 1 page *)
- MCGAC3 = 3; (* 320x200 palette 3; 1 page *)
- MCGAMED = 4; (* 640x200 1 page *)
- MCGAHI = 5; (* 640x480 1 page *)
- EGALO = 0; (* 640x200 16 color 4 pages *)
- EGAHI = 1; (* 640x350 16 color 2 pages *)
- EGA64LO = 0; (* 640x200 16 color 1 page *)
- EGA64HI = 1; (* 640x350 4 color 1 page *)
- EGAMONOHI = 0; (* 640x350 64K on card, 1 page - 256K on card, 4 pages *)
- HERCMONOHI = 0; (* 720x348 2 pages *)
- ATT400C0 = 0; (* 320x200 palette 0; 1 page *)
- ATT400C1 = 1; (* 320x200 palette 1; 1 page *)
- ATT400C2 = 2; (* 320x200 palette 2; 1 page *)
- ATT400C3 = 3; (* 320x200 palette 3; 1 page *)
- ATT400MED = 4; (* 640x200 1 page *)
- ATT400HI = 5; (* 640x400 1 page *)
- VGALO = 0; (* 640x200 16 color 4 pages *)
- VGAMED = 1; (* 640x350 16 color 2 pages *)
- VGAHI = 2; (* 640x480 16 color 1 page *)
- PC3270HI = 0; (* 720x350 1 page *)
- IBM8514LO = 0; (* 640x480 256 colors *)
- IBM8514HI = 1; (* 1024x768 256 colors *)
- CGA_LIGHTGREEN = 1; (* Palette C0 Color Names *)
- CGA_LIGHTRED = 2;
- CGA_YELLOW = 3;
- CGA_LIGHTCYAN = 1; (* Palette C1 Color Names *)
- CGA_LIGHTMAGENTA = 2;
- CGA_WHITE = 3;
- CGA_GREEN = 1; (* Palette C2 Color Names *)
- CGA_RED = 2;
- CGA_BROWN = 3;
- CGA_CYAN = 1; (* Palette C3 Color Names *)
- CGA_MAGENTA = 2;
- CGA_LIGHTGRAY = 3;
- EGA_BLACK = 0; (* dark colors *)
- EGA_BLUE = 1;
- EGA_GREEN = 2;
- EGA_CYAN = 3;
- EGA_RED = 4;
- EGA_MAGENTA = 5;
- EGA_BROWN = 20;
- EGA_LIGHTGRAY = 7;
- EGA_DARKGRAY = 56; (* light colors *)
- EGA_LIGHTBLUE = 57;
- EGA_LIGHTGREEN = 58;
- EGA_LIGHTCYAN = 59;
- EGA_LIGHTRED = 60;
- EGA_LIGHTMAGENTA = 61;
- EGA_YELLOW = 62;
- EGA_WHITE = 63;
- (* Line Widths for get/setlinestyle *)
- NORM_WIDTH = 1;
- THICK_WIDTH = 3;
- HORIZ_DIR = 0; (* left to right *)
- VERT_DIR = 1; (* bottom to top *)
- USER_CHAR_SIZE = 0; (* user-defined char size *)
- (* Horizontal and Vertical Justification for settextjustify *)
- LEFT_TEXT = 0;
- CENTER_TEXT = 1;
- RIGHT_TEXT = 2;
- BOTTOM_TEXT = 0;
- TOP_TEXT = 2;
- MAXCOLORS = 15;
- TYPE
- (* Colors For Setpalette and Setallpalette *)
- COLORS = (BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,(* dark colors *)
- DARKGRAY,LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE); (* light colors *)
- (* Linestyles for get/setlinestyle *)
- line_styles = (SOLID_LINE,DOTTED_LINE,CENTER_LINE,DASHED_LINE,USERBIT_LINE);
- font_names = (DEFAULT_FONT, (* 8x8 bit mapped font *)
- TRIPLEX_FONT, (* "Stroked" fonts *)
- SMALL_FONT,
- SANS_SERIF_FONT,
- GOTHIC_FONT);
- (* Fill Patterns for get/setfillstyle *)
- fill_patterns = (EMPTY_FILL, (* fills area in background color *)
- SOLID_FILL, (* fills area in solid fill color *)
- LINE_FILL, (* --- fill *)
- LTSLASH_FILL, (* /// fill *)
- SLASH_FILL, (* /// fill with thick lines *)
- BKSLASH_FILL, (* \\\ fill with thick lines *)
- LTBKSLASH_FILL, (* \\\ fill *)
- HATCH_FILL, (* light hatch fill *)
- XHATCH_FILL, (* heavy cross hatch fill *)
- INTERLEAVE_FILL, (* interleaving line fill *)
- WIDE_DOT_FILL, (* Widely spaced dot fill *)
- CLOSE_DOT_FILL, (* Closely spaced dot fill *)
- USER_FILL); (* user defined fill *)
- (* BitBlt Operators For putimage *)
- putimage_ops = (COPY_PUT, (* MOV *)
- XOR_PUT, (* XOR *)
- OR_PUT, (* OR *)
- AND_PUT, (* AND *)
- NOT_PUT); (* NOT *)
- palettetype_p = POINTER TO palettetype;
- palettetype = RECORD
- size : SHORTCARD;
- colors : ARRAY[0..MAXCOLORS]OF SHORTINT;
- END;
- linesettingstype = RECORD
- linestyle : INTEGER;
- upattern : CARDINAL;
- thickness : INTEGER;
- END;
- textsettingstype = RECORD
- font : INTEGER;
- direction : INTEGER;
- charsize : INTEGER;
- horiz : INTEGER;
- vert : INTEGER;
- END;
- fillsettingstype = RECORD
- pattern : INTEGER;
- color : INTEGER;
- END;
- pointtype = RECORD
- x : INTEGER;
- y : INTEGER;
- END;
- viewporttype = RECORD
- left,top,
- right,bottom,
- clip : INTEGER;
- END;
- arccoordstype = RECORD
- x,y,
- xstart,ystart,
- xend,yend : INTEGER;
- END;
- driverproc = PROCEDURE():INTEGER;
- VAR
- CGA_driver_far : driverproc;
- EGAVGA_driver_far : driverproc;
- IBM8514_driver_far : driverproc;
- Herc_driver_far : driverproc;
- ATT_driver_far : driverproc;
- PC3270_driver_far : driverproc;
- triplex_font_far : PROC;
- small_font_far : PROC;
- sansserif_font_far : PROC;
- gothic_font_far : PROC;
- PROCEDURE arc(x,y,stangle,endandle,radius:INTEGER);
- PROCEDURE bar(left,top,right,bottom:INTEGER);
- PROCEDURE bar3d(left,top,right,bottom,depth,topflag:INTEGER);
- PROCEDURE circle(x,y,radius:INTEGER);
- PROCEDURE cleardevice;
- PROCEDURE clearviewport;
- PROCEDURE closegraph;
- PROCEDURE detectgraph(VAR graphdriver,graphmode:INTEGER);
- PROCEDURE drawpoly(numpoints:INTEGER;VAR polypoints:INTEGER);
- PROCEDURE ellipse(x,y,stangle,endangle,xradius,yradius:INTEGER);
- PROCEDURE fillellipse(x,y,xradius,yradius:INTEGER);
- PROCEDURE fillpoly(numpoints:INTEGER;VAR polypoints:INTEGER);
- PROCEDURE floodfill(x,y,border:INTEGER);
- PROCEDURE getarccoords(VAR arccoords:arccoordstype);
- PROCEDURE getaspectratio(VAR xasp,yasp:INTEGER);
- PROCEDURE getbkcolor():INTEGER;
- PROCEDURE getcolor():INTEGER;
- PROCEDURE getdefaultpalette():palettetype_p;
- (* **** returns pointer to open array of char *)
- PROCEDURE getdrivername():ADDRESS;
- PROCEDURE getfillpattern(VAR pattern:fill_patterns);
- PROCEDURE getfillsettings(VAR fillinfo:fillsettingstype);
- PROCEDURE getgraphmode():INTEGER;
- PROCEDURE getimage(left,top,right,bottom:INTEGER;bitmap:ADDRESS);
- PROCEDURE getlinesettings(VAR lineinfo:linesettingstype);
- PROCEDURE getmaxcolor():INTEGER;
- PROCEDURE getmaxmode():INTEGER;
- PROCEDURE getmaxx():INTEGER;
- PROCEDURE getmaxy():INTEGER;
- (* **** returns pointer to open array of char *)
- PROCEDURE getmodename(ModeNumber:INTEGER):ADDRESS;
- PROCEDURE getmoderange(graphdriver:INTEGER;VAR lomode,himode:INTEGER);
- PROCEDURE getpixel(x,y:INTEGER):CARDINAL;
- PROCEDURE getpalette(VAR palette:palettetype);
- PROCEDURE getpalettesize():INTEGER;
- PROCEDURE gettextsettings(VAR texttypeinfo:textsettingstype);
- PROCEDURE getviewsettings(VAR viewport:viewporttype);
- PROCEDURE getx():INTEGER;
- PROCEDURE gety():INTEGER;
- PROCEDURE graphdefaults;
- (* **** returns pointer to open array of char *)
- PROCEDURE grapherrormsg(errorcode:INTEGER):ADDRESS;
- PROCEDURE _graphfreemem(ptr:ADDRESS; size:CARDINAL);
- PROCEDURE _graphgetmem(size:CARDINAL):ADDRESS;
- PROCEDURE graphresult():INTEGER;
- PROCEDURE imagesize(left,top,right,bottom:INTEGER):CARDINAL;
- PROCEDURE initgraph(VAR graphdriver,graphmode:INTEGER;pathtodriver:ARRAY OF CHAR);
- PROCEDURE installuserdriver(name:ARRAY OF CHAR;driver:driverproc):INTEGER;
- PROCEDURE installuserfont(name:ARRAY OF CHAR):INTEGER;
- PROCEDURE line(x1,y1,x2,y2:INTEGER);
- PROCEDURE linerel(dx,dy:INTEGER);
- PROCEDURE lineto(x,y:INTEGER);
- PROCEDURE moverel(dx,dy:INTEGER);
- PROCEDURE moveto(x,y:INTEGER);
- PROCEDURE outtext(textstring:ARRAY OF CHAR);
- PROCEDURE outtextxy(x,y:INTEGER;textstring:ARRAY OF CHAR);
- PROCEDURE pieslice(x,y,stangle,endangle,radius:INTEGER);
- PROCEDURE putimage(left,top:INTEGER;bitmap:ADDRESS;op:putimage_ops);
- PROCEDURE putpixel(x,y,color:INTEGER);
- PROCEDURE rectangle(left,top,right,bottom:INTEGER);
- PROCEDURE restorecrtmode;
- PROCEDURE sector(X,Y,StAngle,EndAngle,XRadius,YRadius:INTEGER);
- PROCEDURE setactivepage(page:INTEGER);
- PROCEDURE setallpalette(VAR palette:palettetype);
- PROCEDURE setaspectratio(xasp,yasp:INTEGER);
- PROCEDURE setbkcolor(color:INTEGER);
- PROCEDURE setcolor(color:INTEGER);
- PROCEDURE setfillpattern(VAR upattern:fill_patterns;color:INTEGER);
- PROCEDURE setfillstyle(pattern, color: COLORS);
- PROCEDURE setgraphbufsize(bufsize:CARDINAL):CARDINAL;
- PROCEDURE setgraphmode(mode:INTEGER);
- PROCEDURE setlinestyle(linestyle: INTEGER; upattern: CARDINAL; thickness: INTEGER);
- PROCEDURE setpalette(colornum,color:INTEGER);
- PROCEDURE setrgbpalette(colornum,red,green,blue:INTEGER);
- PROCEDURE settextjustify(horiz,vert:INTEGER);
- PROCEDURE settextstyle(font,direction,charsize:INTEGER);
- PROCEDURE setusercharsize(mustx,divx,multy,divy:INTEGER);
- PROCEDURE setviewport(left, top, right, bottom, clip:INTEGER);
- PROCEDURE setvisualpage(page:INTEGER);
- PROCEDURE setwritemode(mode:INTEGER);
- PROCEDURE textheight(textstring:ARRAY OF CHAR):INTEGER;
- PROCEDURE textwidth(textstring:ARRAY OF CHAR):INTEGER;
- PROCEDURE registerbgidriver(driver:PROC):INTEGER;
- PROCEDURE registerfarbgidriver(driver:PROC):INTEGER;
- (* These "functions" are NOT user-callable
- They are there just so you can link in graphics drivers *)
- PROCEDURE CGA_driver;
- PROCEDURE EGAVGA_driver;
- PROCEDURE IBM8514_driver;
- PROCEDURE Herc_driver;
- PROCEDURE ATT_driver;
- PROCEDURE PC3270_driver;
- PROCEDURE registerbgifont(font:PROC):INTEGER;
- PROCEDURE registerfarbgifont(font:PROC):INTEGER;
- (* These "functions" are NOT user-callable,
- they are there just so you can link in fonts *)
- PROCEDURE triplex_font;
- PROCEDURE small_font;
- PROCEDURE sansserif_font;
- PROCEDURE gothic_font;
- END graphics.
|