GRAPHICS.DEF 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * GRAPHICS.DEF - Modula-2 interface to BGI graphics *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# project("#set cgraph='borland'") *)
  11. (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on,
  12. reg_param=>(), reg_saved=>(di,si,ds,st1,st2), near_call=>off) *)
  13. (*# data(near_ptr=>off) *)
  14. (*# module(implementation=>off, init_code=>off) *)
  15. (*# name(prefix=>c) *)
  16. DEFINITION MODULE graphics;
  17. CONST
  18. (* Error Codes From graphresult *)
  19. grOk = 0;
  20. grNoInitGraph = -1;
  21. grNotDetected = -2;
  22. grFileNotFound = -3;
  23. grInvalidDriver = -4;
  24. grNoLoadMem = -5;
  25. grNoScanMem = -6;
  26. grNoFloodMem = -7;
  27. grFontNotFound = -8;
  28. grNoFontMem = -9;
  29. grInvalidMode = -10;
  30. grError = -11;
  31. grIOerror = -12;
  32. grInvalidFont = -13;
  33. grInvalidFontNum = -14;
  34. grInvalidVersion = -18;
  35. (* Graphics Drivers *)
  36. DETECT = 0; (* autodetect *)
  37. CGA = 1;
  38. MCGA = 2;
  39. EGA = 3;
  40. EGA64 = 4;
  41. EGAMONO = 5;
  42. IBM8514 = 6;
  43. HERCMONO = 7;
  44. ATT400 = 8;
  45. VGA = 9;
  46. PC3270 = 10;
  47. CURRENT_DRIVER = -1; (* default *)
  48. (* Graphics Modes For Each Driver *)
  49. CGAC0 = 0; (* 320x200 palette 0; 1 page *)
  50. CGAC1 = 1; (* 320x200 palette 1; 1 page *)
  51. CGAC2 = 2; (* 320x200 palette 2: 1 page *)
  52. CGAC3 = 3; (* 320x200 palette 3; 1 page *)
  53. CGAHI = 4; (* 640x200 1 page *)
  54. MCGAC0 = 0; (* 320x200 palette 0; 1 page *)
  55. MCGAC1 = 1; (* 320x200 palette 1; 1 page *)
  56. MCGAC2 = 2; (* 320x200 palette 2; 1 page *)
  57. MCGAC3 = 3; (* 320x200 palette 3; 1 page *)
  58. MCGAMED = 4; (* 640x200 1 page *)
  59. MCGAHI = 5; (* 640x480 1 page *)
  60. EGALO = 0; (* 640x200 16 color 4 pages *)
  61. EGAHI = 1; (* 640x350 16 color 2 pages *)
  62. EGA64LO = 0; (* 640x200 16 color 1 page *)
  63. EGA64HI = 1; (* 640x350 4 color 1 page *)
  64. EGAMONOHI = 0; (* 640x350 64K on card, 1 page - 256K on card, 4 pages *)
  65. HERCMONOHI = 0; (* 720x348 2 pages *)
  66. ATT400C0 = 0; (* 320x200 palette 0; 1 page *)
  67. ATT400C1 = 1; (* 320x200 palette 1; 1 page *)
  68. ATT400C2 = 2; (* 320x200 palette 2; 1 page *)
  69. ATT400C3 = 3; (* 320x200 palette 3; 1 page *)
  70. ATT400MED = 4; (* 640x200 1 page *)
  71. ATT400HI = 5; (* 640x400 1 page *)
  72. VGALO = 0; (* 640x200 16 color 4 pages *)
  73. VGAMED = 1; (* 640x350 16 color 2 pages *)
  74. VGAHI = 2; (* 640x480 16 color 1 page *)
  75. PC3270HI = 0; (* 720x350 1 page *)
  76. IBM8514LO = 0; (* 640x480 256 colors *)
  77. IBM8514HI = 1; (* 1024x768 256 colors *)
  78. CGA_LIGHTGREEN = 1; (* Palette C0 Color Names *)
  79. CGA_LIGHTRED = 2;
  80. CGA_YELLOW = 3;
  81. CGA_LIGHTCYAN = 1; (* Palette C1 Color Names *)
  82. CGA_LIGHTMAGENTA = 2;
  83. CGA_WHITE = 3;
  84. CGA_GREEN = 1; (* Palette C2 Color Names *)
  85. CGA_RED = 2;
  86. CGA_BROWN = 3;
  87. CGA_CYAN = 1; (* Palette C3 Color Names *)
  88. CGA_MAGENTA = 2;
  89. CGA_LIGHTGRAY = 3;
  90. EGA_BLACK = 0; (* dark colors *)
  91. EGA_BLUE = 1;
  92. EGA_GREEN = 2;
  93. EGA_CYAN = 3;
  94. EGA_RED = 4;
  95. EGA_MAGENTA = 5;
  96. EGA_BROWN = 20;
  97. EGA_LIGHTGRAY = 7;
  98. EGA_DARKGRAY = 56; (* light colors *)
  99. EGA_LIGHTBLUE = 57;
  100. EGA_LIGHTGREEN = 58;
  101. EGA_LIGHTCYAN = 59;
  102. EGA_LIGHTRED = 60;
  103. EGA_LIGHTMAGENTA = 61;
  104. EGA_YELLOW = 62;
  105. EGA_WHITE = 63;
  106. (* Line Widths for get/setlinestyle *)
  107. NORM_WIDTH = 1;
  108. THICK_WIDTH = 3;
  109. HORIZ_DIR = 0; (* left to right *)
  110. VERT_DIR = 1; (* bottom to top *)
  111. USER_CHAR_SIZE = 0; (* user-defined char size *)
  112. (* Horizontal and Vertical Justification for settextjustify *)
  113. LEFT_TEXT = 0;
  114. CENTER_TEXT = 1;
  115. RIGHT_TEXT = 2;
  116. BOTTOM_TEXT = 0;
  117. TOP_TEXT = 2;
  118. MAXCOLORS = 15;
  119. TYPE
  120. (* Colors For Setpalette and Setallpalette *)
  121. COLORS = (BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,(* dark colors *)
  122. DARKGRAY,LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE); (* light colors *)
  123. (* Linestyles for get/setlinestyle *)
  124. line_styles = (SOLID_LINE,DOTTED_LINE,CENTER_LINE,DASHED_LINE,USERBIT_LINE);
  125. font_names = (DEFAULT_FONT, (* 8x8 bit mapped font *)
  126. TRIPLEX_FONT, (* "Stroked" fonts *)
  127. SMALL_FONT,
  128. SANS_SERIF_FONT,
  129. GOTHIC_FONT);
  130. (* Fill Patterns for get/setfillstyle *)
  131. fill_patterns = (EMPTY_FILL, (* fills area in background color *)
  132. SOLID_FILL, (* fills area in solid fill color *)
  133. LINE_FILL, (* --- fill *)
  134. LTSLASH_FILL, (* /// fill *)
  135. SLASH_FILL, (* /// fill with thick lines *)
  136. BKSLASH_FILL, (* \\\ fill with thick lines *)
  137. LTBKSLASH_FILL, (* \\\ fill *)
  138. HATCH_FILL, (* light hatch fill *)
  139. XHATCH_FILL, (* heavy cross hatch fill *)
  140. INTERLEAVE_FILL, (* interleaving line fill *)
  141. WIDE_DOT_FILL, (* Widely spaced dot fill *)
  142. CLOSE_DOT_FILL, (* Closely spaced dot fill *)
  143. USER_FILL); (* user defined fill *)
  144. (* BitBlt Operators For putimage *)
  145. putimage_ops = (COPY_PUT, (* MOV *)
  146. XOR_PUT, (* XOR *)
  147. OR_PUT, (* OR *)
  148. AND_PUT, (* AND *)
  149. NOT_PUT); (* NOT *)
  150. palettetype_p = POINTER TO palettetype;
  151. palettetype = RECORD
  152. size : SHORTCARD;
  153. colors : ARRAY[0..MAXCOLORS]OF SHORTINT;
  154. END;
  155. linesettingstype = RECORD
  156. linestyle : INTEGER;
  157. upattern : CARDINAL;
  158. thickness : INTEGER;
  159. END;
  160. textsettingstype = RECORD
  161. font : INTEGER;
  162. direction : INTEGER;
  163. charsize : INTEGER;
  164. horiz : INTEGER;
  165. vert : INTEGER;
  166. END;
  167. fillsettingstype = RECORD
  168. pattern : INTEGER;
  169. color : INTEGER;
  170. END;
  171. pointtype = RECORD
  172. x : INTEGER;
  173. y : INTEGER;
  174. END;
  175. viewporttype = RECORD
  176. left,top,
  177. right,bottom,
  178. clip : INTEGER;
  179. END;
  180. arccoordstype = RECORD
  181. x,y,
  182. xstart,ystart,
  183. xend,yend : INTEGER;
  184. END;
  185. driverproc = PROCEDURE():INTEGER;
  186. VAR
  187. CGA_driver_far : driverproc;
  188. EGAVGA_driver_far : driverproc;
  189. IBM8514_driver_far : driverproc;
  190. Herc_driver_far : driverproc;
  191. ATT_driver_far : driverproc;
  192. PC3270_driver_far : driverproc;
  193. triplex_font_far : PROC;
  194. small_font_far : PROC;
  195. sansserif_font_far : PROC;
  196. gothic_font_far : PROC;
  197. PROCEDURE arc(x,y,stangle,endandle,radius:INTEGER);
  198. PROCEDURE bar(left,top,right,bottom:INTEGER);
  199. PROCEDURE bar3d(left,top,right,bottom,depth,topflag:INTEGER);
  200. PROCEDURE circle(x,y,radius:INTEGER);
  201. PROCEDURE cleardevice;
  202. PROCEDURE clearviewport;
  203. PROCEDURE closegraph;
  204. PROCEDURE detectgraph(VAR graphdriver,graphmode:INTEGER);
  205. PROCEDURE drawpoly(numpoints:INTEGER;VAR polypoints:INTEGER);
  206. PROCEDURE ellipse(x,y,stangle,endangle,xradius,yradius:INTEGER);
  207. PROCEDURE fillellipse(x,y,xradius,yradius:INTEGER);
  208. PROCEDURE fillpoly(numpoints:INTEGER;VAR polypoints:INTEGER);
  209. PROCEDURE floodfill(x,y,border:INTEGER);
  210. PROCEDURE getarccoords(VAR arccoords:arccoordstype);
  211. PROCEDURE getaspectratio(VAR xasp,yasp:INTEGER);
  212. PROCEDURE getbkcolor():INTEGER;
  213. PROCEDURE getcolor():INTEGER;
  214. PROCEDURE getdefaultpalette():palettetype_p;
  215. (* **** returns pointer to open array of char *)
  216. PROCEDURE getdrivername():ADDRESS;
  217. PROCEDURE getfillpattern(VAR pattern:fill_patterns);
  218. PROCEDURE getfillsettings(VAR fillinfo:fillsettingstype);
  219. PROCEDURE getgraphmode():INTEGER;
  220. PROCEDURE getimage(left,top,right,bottom:INTEGER;bitmap:ADDRESS);
  221. PROCEDURE getlinesettings(VAR lineinfo:linesettingstype);
  222. PROCEDURE getmaxcolor():INTEGER;
  223. PROCEDURE getmaxmode():INTEGER;
  224. PROCEDURE getmaxx():INTEGER;
  225. PROCEDURE getmaxy():INTEGER;
  226. (* **** returns pointer to open array of char *)
  227. PROCEDURE getmodename(ModeNumber:INTEGER):ADDRESS;
  228. PROCEDURE getmoderange(graphdriver:INTEGER;VAR lomode,himode:INTEGER);
  229. PROCEDURE getpixel(x,y:INTEGER):CARDINAL;
  230. PROCEDURE getpalette(VAR palette:palettetype);
  231. PROCEDURE getpalettesize():INTEGER;
  232. PROCEDURE gettextsettings(VAR texttypeinfo:textsettingstype);
  233. PROCEDURE getviewsettings(VAR viewport:viewporttype);
  234. PROCEDURE getx():INTEGER;
  235. PROCEDURE gety():INTEGER;
  236. PROCEDURE graphdefaults;
  237. (* **** returns pointer to open array of char *)
  238. PROCEDURE grapherrormsg(errorcode:INTEGER):ADDRESS;
  239. PROCEDURE _graphfreemem(ptr:ADDRESS; size:CARDINAL);
  240. PROCEDURE _graphgetmem(size:CARDINAL):ADDRESS;
  241. PROCEDURE graphresult():INTEGER;
  242. PROCEDURE imagesize(left,top,right,bottom:INTEGER):CARDINAL;
  243. PROCEDURE initgraph(VAR graphdriver,graphmode:INTEGER;pathtodriver:ARRAY OF CHAR);
  244. PROCEDURE installuserdriver(name:ARRAY OF CHAR;driver:driverproc):INTEGER;
  245. PROCEDURE installuserfont(name:ARRAY OF CHAR):INTEGER;
  246. PROCEDURE line(x1,y1,x2,y2:INTEGER);
  247. PROCEDURE linerel(dx,dy:INTEGER);
  248. PROCEDURE lineto(x,y:INTEGER);
  249. PROCEDURE moverel(dx,dy:INTEGER);
  250. PROCEDURE moveto(x,y:INTEGER);
  251. PROCEDURE outtext(textstring:ARRAY OF CHAR);
  252. PROCEDURE outtextxy(x,y:INTEGER;textstring:ARRAY OF CHAR);
  253. PROCEDURE pieslice(x,y,stangle,endangle,radius:INTEGER);
  254. PROCEDURE putimage(left,top:INTEGER;bitmap:ADDRESS;op:putimage_ops);
  255. PROCEDURE putpixel(x,y,color:INTEGER);
  256. PROCEDURE rectangle(left,top,right,bottom:INTEGER);
  257. PROCEDURE restorecrtmode;
  258. PROCEDURE sector(X,Y,StAngle,EndAngle,XRadius,YRadius:INTEGER);
  259. PROCEDURE setactivepage(page:INTEGER);
  260. PROCEDURE setallpalette(VAR palette:palettetype);
  261. PROCEDURE setaspectratio(xasp,yasp:INTEGER);
  262. PROCEDURE setbkcolor(color:INTEGER);
  263. PROCEDURE setcolor(color:INTEGER);
  264. PROCEDURE setfillpattern(VAR upattern:fill_patterns;color:INTEGER);
  265. PROCEDURE setfillstyle(pattern, color: COLORS);
  266. PROCEDURE setgraphbufsize(bufsize:CARDINAL):CARDINAL;
  267. PROCEDURE setgraphmode(mode:INTEGER);
  268. PROCEDURE setlinestyle(linestyle: INTEGER; upattern: CARDINAL; thickness: INTEGER);
  269. PROCEDURE setpalette(colornum,color:INTEGER);
  270. PROCEDURE setrgbpalette(colornum,red,green,blue:INTEGER);
  271. PROCEDURE settextjustify(horiz,vert:INTEGER);
  272. PROCEDURE settextstyle(font,direction,charsize:INTEGER);
  273. PROCEDURE setusercharsize(mustx,divx,multy,divy:INTEGER);
  274. PROCEDURE setviewport(left, top, right, bottom, clip:INTEGER);
  275. PROCEDURE setvisualpage(page:INTEGER);
  276. PROCEDURE setwritemode(mode:INTEGER);
  277. PROCEDURE textheight(textstring:ARRAY OF CHAR):INTEGER;
  278. PROCEDURE textwidth(textstring:ARRAY OF CHAR):INTEGER;
  279. PROCEDURE registerbgidriver(driver:PROC):INTEGER;
  280. PROCEDURE registerfarbgidriver(driver:PROC):INTEGER;
  281. (* These "functions" are NOT user-callable
  282. They are there just so you can link in graphics drivers *)
  283. PROCEDURE CGA_driver;
  284. PROCEDURE EGAVGA_driver;
  285. PROCEDURE IBM8514_driver;
  286. PROCEDURE Herc_driver;
  287. PROCEDURE ATT_driver;
  288. PROCEDURE PC3270_driver;
  289. PROCEDURE registerbgifont(font:PROC):INTEGER;
  290. PROCEDURE registerfarbgifont(font:PROC):INTEGER;
  291. (* These "functions" are NOT user-callable,
  292. they are there just so you can link in fonts *)
  293. PROCEDURE triplex_font;
  294. PROCEDURE small_font;
  295. PROCEDURE sansserif_font;
  296. PROCEDURE gothic_font;
  297. END graphics.