graph.def 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. (* Copyright (C) 1987 Jensen & Partners International *)
  2. DEFINITION MODULE Graph; (* Basic graphics routines *)
  3. (* Filling functions take a combination of two colors
  4. encoded as Color1 + NumColor * Color2 *)
  5. (* Device independant routines
  6. provided as procedure variables
  7. (see below)
  8. PROCEDURE GraphMode;
  9. PROCEDURE TextMode;
  10. PROCEDURE Plot(x,y: CARDINAL; Color: CARDINAL);
  11. (* set a single pixel to given color *)
  12. PROCEDURE Point(x,y: CARDINAL) : CARDINAL;
  13. (* read a pixel of the screen *)
  14. PROCEDURE HLine(x,y,x2: CARDINAL; FillColor: CARDINAL);
  15. (* draw a horizontal line of given color (used for filling) *)
  16. End of device dependant routines
  17. *)
  18. PROCEDURE Line(x1,y1,x2,y2: CARDINAL; Color: CARDINAL);
  19. (* draw an arbitrary line in given color *)
  20. PROCEDURE Circle(x0,y0,r: CARDINAL; c: CARDINAL);
  21. (* centre x0,y0; radius r *)
  22. PROCEDURE Disc(x0,y0,r : CARDINAL; FillColor: CARDINAL);
  23. (* filled circle, centre x0,y0; radius r *)
  24. PROCEDURE Ellipse ( x0,y0 : CARDINAL ; (* center *)
  25. a0,b0 : CARDINAL ; (* semi-axes *)
  26. c : CARDINAL ; (* color *)
  27. fill : BOOLEAN ) ; (* wether filled *)
  28. PROCEDURE Polygon(n: CARDINAL; px,py: ARRAY OF CARDINAL; FillColor: CARDINAL);
  29. (* filled polygon of n points *)
  30. (*
  31. Initialization routines.
  32. Called to setup display output type.
  33. *)
  34. PROCEDURE InitCGA ; (* Default *)
  35. PROCEDURE InitEGA ;
  36. PROCEDURE InitVGA ;
  37. PROCEDURE InitHerc ;
  38. PROCEDURE InitATT ;
  39. TYPE
  40. PlotProc = PROCEDURE ((* x *) CARDINAL,(* y *)CARDINAL,(* c *)CARDINAL);
  41. PointProc = PROCEDURE ((* x *) CARDINAL,(* y *)CARDINAL) : CARDINAL ;
  42. HLineProc = PROCEDURE ((* x *) CARDINAL,(* y *)CARDINAL,(* x2 *)CARDINAL,
  43. (* FillColor *)CARDINAL);
  44. VAR
  45. Width : CARDINAL ; (* x values are 0..Width-1 *)
  46. Depth : CARDINAL ; (* y values are 0..Depth-1 *)
  47. NumColor : CARDINAL ; (* Colors are 0..NumColor-1 *)
  48. (*
  49. procedure variables for device dependant routines
  50. *)
  51. GraphMode,TextMode : PROC ;
  52. Plot : PlotProc ;
  53. Point : PointProc ;
  54. HLine : HLineProc ;
  55. (*
  56. Device specific constants and routines
  57. equivalent to the variables Width, Depth and NumColors
  58. *)
  59. PROCEDURE CGAGraphMode;
  60. PROCEDURE CGATextMode;
  61. PROCEDURE CGAPlot(x,y:CARDINAL;c:CARDINAL);
  62. PROCEDURE CGAPoint(x,y:CARDINAL) : CARDINAL;
  63. PROCEDURE CGAHLine ( x,y,x2 : CARDINAL; c:CARDINAL );
  64. PROCEDURE EGAGraphMode;
  65. PROCEDURE EGAPlot( x,y,c : CARDINAL);
  66. PROCEDURE EGAPoint(x,y:CARDINAL) : CARDINAL;
  67. PROCEDURE EGAHLine ( x,y,x2 : CARDINAL; c:CARDINAL );
  68. PROCEDURE HercGraphMode;
  69. PROCEDURE HercTextMode;
  70. PROCEDURE HercPlot(x,y:CARDINAL;c:CARDINAL);
  71. PROCEDURE HercPoint(x,y:CARDINAL) : CARDINAL;
  72. PROCEDURE HercHLine ( x,y,x2 : CARDINAL; c:CARDINAL );
  73. PROCEDURE ATTGraphMode;
  74. PROCEDURE ATTPlot(x,y:CARDINAL;c:CARDINAL);
  75. PROCEDURE ATTPoint(x,y:CARDINAL) : CARDINAL;
  76. PROCEDURE ATTHLine ( x,y,x2 : CARDINAL; c:CARDINAL );
  77. CONST
  78. VGAGraphMode = EGAGraphMode ;
  79. VGAPlot = EGAPlot ;
  80. VGAPoint = EGAPoint ;
  81. VGAHLine = EGAHLine ;
  82. EGATextMode = CGATextMode ;
  83. VGATextMode = CGATextMode ;
  84. ATTTextMode = CGATextMode ;
  85. CONST
  86. CGAWidth = 320 ;
  87. CGADepth = 200 ;
  88. CGANumColor = 4 ;
  89. EGAWidth = 640 ;
  90. EGADepth = 350 ;
  91. EGANumColor = 16 ;
  92. VGAWidth = 640 ;
  93. VGADepth = 480 ;
  94. VGANumColor = 16 ;
  95. HercWidth = 720 ;
  96. HercDepth = 348 ;
  97. HercNumColor = 2 ;
  98. ATTWidth = 640 ;
  99. ATTDepth = 400 ;
  100. ATTNumColor = 2 ;
  101. END Graph.
  102.