GRAPHICS.LST 18 KB

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