CGRAPH.DEF 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * CGRAPH.DEF - Modula-2 interface to GRAPH.H *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# project("#set tsc='on'") *)
  11. (*# project("#set cgraph='jpi'") *)
  12. (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on,
  13. near_call=>off, ds_eq_ss=>off) *)
  14. (*# data(near_ptr=>off) *)
  15. (*# module(implementation=>off, init_code=>off) *)
  16. (*# name(prefix=>c) *)
  17. DEFINITION MODULE cgraph;
  18. (* Filling functions take a combination of two colors
  19. encoded as Color1 + NumColor * Color2 *)
  20. (* Device independant routines
  21. provided as procedure variables
  22. (see below) *)
  23. TYPE
  24. videoconfig_p = POINTER TO videoconfig;
  25. videoconfig = RECORD
  26. numxpixels : CARDINAL; (* number of pixels on X axis *)
  27. numypixels : CARDINAL; (* number of pixels on Y axis *)
  28. numtextcols: CARDINAL; (* number of text columns available *)
  29. numtextrows: CARDINAL; (* number of text rows available *)
  30. numcolors : CARDINAL; (* number of actual colors *)
  31. bitsperpixel:CARDINAL; (* number of bits per pixel *)
  32. numvideopages:CARDINAL; (* number of available video pages *)
  33. mode : CARDINAL; (* current video mode *)
  34. adapter : CARDINAL; (* active display adapter *)
  35. monitor : CARDINAL; (* active display monitor *)
  36. memory : CARDINAL; (* adapter video memory in K bytes *)
  37. END;
  38. xycoord = RECORD
  39. xcoord : CARDINAL;
  40. ycoord : CARDINAL;
  41. END;
  42. rccoord = RECORD
  43. row : CARDINAL;
  44. col : CARDINAL;
  45. END;
  46. CONST
  47. _DEFAULTMODE = -1; (* restore screen to original mode *)
  48. _TEXTBW40 = 0; (* 40 x 25 text, 16 grey *)
  49. _TEXTC40 = 1; (* 40 x 25 text, 16/8 color *)
  50. _TEXTBW80 = 2; (* 80 x 25 text, 16 grey *)
  51. _TEXTC80 = 3; (* 80 x 25 text, 16/8 color *)
  52. _MRES4COLOR = 4; (* 320 x 200, 4 color *)
  53. _MRESNOCOLOR = 5; (* 320 x 200, 4 grey *)
  54. _HRESBW = 6; (* 640 x 200, BW *)
  55. _TEXTMONO = 7; (* 80 x 25 text, BW *)
  56. _HERCMONO = 8; (* 720 x 348, BW for HGC *)
  57. _MRES16COLOR = 13; (* 320 x 200, 16 color *)
  58. _HRES16COLOR = 14; (* 640 x 200, 16 color *)
  59. _ERESNOCOLOR = 15; (* 640 x 350, BW *)
  60. _ERESCOLOR = 16; (* 640 x 350, 4 or 16 color *)
  61. _VRES2COLOR = 17; (* 640 x 480, BW *)
  62. _VRES16COLOR = 18; (* 640 x 480, 16 color *)
  63. _MRES256COLOR = 19; (* 320 x 200, 256 color *)
  64. _MDPA = 0001H; (* Monochrome Display Adapter (MDPA) *)
  65. _CGA = 0002H; (* Color Graphics Adapter (CGA) *)
  66. _EGA = 0004H; (* Enhanced Graphics Adapter (EGA) *)
  67. _VGA = 0008H; (* Video Graphics Array (VGA) *)
  68. _MCGA = 0010H; (* MultiColor Graphics Array (MCGA) *)
  69. _HGC = 0020H; (* Hercules Graphics Card (HGC) *)
  70. _MONO = 0001H; (* Monochrome *)
  71. _COLOR = 0002H; (* Color (or Enhanced emulating color) *)
  72. _ENHCOLOR = 0004H; (* Enhanced Color *)
  73. _ANALOG = 0018H; (* Analog *)
  74. _GBORDER = 2; (* draw outline only *)
  75. _GFILLINTERIOR = 3; (* fill using current fill mask *)
  76. _GTOP = 1;
  77. _GNOTOP = 0;
  78. _GCLEARSCREEN = 0;
  79. _GVIEWPORT = 1;
  80. _GWINDOW = 2;
  81. _GCURSOROFF = 0;
  82. _GCURSORON = 1;
  83. _GWRAPOFF = 0;
  84. _GWRAPON = 1;
  85. _GPSET = 3;
  86. _GPRESET = 2;
  87. _GAND = 1;
  88. _GOR = 0;
  89. _GXOR = 4;
  90. _BLACK = 000000H;
  91. _BLUE = 2A0000H;
  92. _GREEN = 002A00H;
  93. _CYAN = 2A2A00H;
  94. _RED = 00002AH;
  95. _MAGENTA = 2A002AH;
  96. _BROWN = 00152AH;
  97. _WHITE = 2A2A2AH;
  98. _GRAY = 151515H;
  99. _LIGHTBLUE = 3F1515H;
  100. _LIGHTGREEN = 153F15H;
  101. _LIGHTCYAN = 3F3F15H;
  102. _LIGHTRED = 15153FH;
  103. _LIGHTMAGENTA = 3F153FH;
  104. _LIGHTYELLOW = 153F3FH;
  105. _BRIGHTWHITE = 3F3F3FH;
  106. _MODEFOFF = LONGCARD(0);
  107. _MODEFOFFTOON = LONGCARD(1);
  108. _MODEFOFFTOHI = LONGCARD(2);
  109. _MODEFONTOOFF = LONGCARD(3);
  110. _MODEFON = LONGCARD(4);
  111. _MODEFONTOHI = LONGCARD(5);
  112. _MODEFHITOOFF = LONGCARD(6);
  113. _MODEFHITOON = LONGCARD(7);
  114. _MODEFHI = LONGCARD(8);
  115. _MODE7OFF = LONGCARD(0);
  116. _MODE7ON = LONGCARD(1);
  117. _MODE7HI = LONGCARD(2);
  118. PROCEDURE _setvideomode(mode:CARDINAL):INTEGER;
  119. PROCEDURE _setactivepage(page:CARDINAL):INTEGER;
  120. PROCEDURE _setvisualpage(page:CARDINAL):INTEGER;
  121. PROCEDURE _getvideoconfig(VAR v:videoconfig):videoconfig_p;
  122. PROCEDURE _setlogorg(x,y:CARDINAL):xycoord;
  123. PROCEDURE _getlogcoord(x,y:CARDINAL):xycoord;
  124. PROCEDURE _getphyscoord(x,y:CARDINAL):xycoord;
  125. PROCEDURE _setcliprgn(x1,y1,x2,y2:CARDINAL);
  126. PROCEDURE _setviewport(x1,y1,x2,y2:CARDINAL);
  127. PROCEDURE _clearscreen(area:CARDINAL);
  128. PROCEDURE _moveto(x,y:CARDINAL):xycoord;
  129. PROCEDURE _getcurrentposition():xycoord;
  130. PROCEDURE _lineto(x,y:CARDINAL):INTEGER;
  131. PROCEDURE _rectangle(fill,x1,y1,x2,y2:CARDINAL):INTEGER;
  132. PROCEDURE _ellipse(fill,x1,y1,x2,y2:CARDINAL):INTEGER;
  133. PROCEDURE _arc(x1,y1,x2,y2,x3,y3,x4,y4:CARDINAL):INTEGER;
  134. PROCEDURE _pie(fill,x1,y1,x2,y2,x3,y3,x4,y4:CARDINAL):INTEGER;
  135. PROCEDURE _cube(fill,top,x1,y1,x2,y2,depth:CARDINAL):INTEGER;
  136. PROCEDURE _polygon(fill,n:CARDINAL;px,py:ARRAY OF CARDINAL):INTEGER;
  137. PROCEDURE _setpixel(x,y:CARDINAL):INTEGER;
  138. PROCEDURE _getpixel(x,y:CARDINAL):INTEGER;
  139. PROCEDURE _floodfill(x,y,boundary:CARDINAL):INTEGER;
  140. PROCEDURE _stackfill(x,y,boundary:CARDINAL):INTEGER;
  141. PROCEDURE _setcolor(col:CARDINAL):INTEGER;
  142. PROCEDURE _getcolor():INTEGER;
  143. PROCEDURE _setlinestyle(mask:CARDINAL);
  144. PROCEDURE _getlinestyle():CARDINAL;
  145. PROCEDURE _setfillmask(VAR MaskArray:SHORTCARD):CARDINAL;
  146. PROCEDURE _getfillmask(VAR MaskArray:SHORTCARD):ADDRESS;
  147. PROCEDURE _setbkcolor(col:LONGCARD):LONGCARD;
  148. PROCEDURE _getbkcolor():LONGCARD;
  149. PROCEDURE _remappalette(pixel:CARDINAL;col:LONGCARD):LONGINT;
  150. PROCEDURE _remapallpalette(ColorArray:ARRAY OF LONGCARD):LONGINT;
  151. PROCEDURE _selectpalette(num:CARDINAL):INTEGER;
  152. PROCEDURE _settextwindow(x1,y1,x2,y2:CARDINAL);
  153. PROCEDURE _outtext(str:ARRAY OF CHAR);
  154. PROCEDURE _wrapon(flag:CARDINAL):CARDINAL;
  155. PROCEDURE _displaycursor(flag:CARDINAL):CARDINAL;
  156. PROCEDURE _settextposition(row,col:CARDINAL):rccoord;
  157. PROCEDURE _gettextposition():rccoord;
  158. PROCEDURE _settextcolor(col:CARDINAL):CARDINAL;
  159. PROCEDURE _gettextcolor():CARDINAL;
  160. PROCEDURE _getimage(x1,y1,x2,y2:CARDINAL;VAR buffer:ARRAY OF BYTE);
  161. PROCEDURE _putimage(x,y:CARDINAL;buffer:ARRAY OF BYTE;action:CARDINAL);
  162. PROCEDURE _imagesize(x1,y1,x2,y2:CARDINAL):LONGCARD;
  163. PROCEDURE _enable_herc();
  164. END cgraph.