DEFINITION MODULE GWinM2P; (* A simple interface to parts of the graph module. Note that a major aim is to provide a device independant co-ord system. Therefore all windows are from (0,0) Top-Left to (1024,1024) bottom right *) CONST GCoord::=INTEGER; TYPE ErrType=(ErrNoErr,ErrUnknownAdapter,ErrFewerColors,ErrUnknownMode); VAR _GraphErr:ErrType; CLASS GWindow; XScale,YScale:GCoord; NumColors:INTEGER; ok:BOOLEAN; XL,YT,XR,YB:GCoord; PreviousMode:INTEGER; CurrentColor,CurrentBackColor:INTEGER; (* There are some private functions which I am keeping private *) PROCEDURE Open(x1,y1,x2,y2:GCoord;ColsReq:INTEGER); PROCEDURE Close; PROCEDURE ReSize(x1,y1,x2,y2:GCoord); PROCEDURE SetColor(Col,BkCol:INTEGER); PROCEDURE Clear(BkCol:INTEGER); PROCEDURE Plot(x,y:GCoord;Col:INTEGER); PROCEDURE Point(x,y:GCoord):INTEGER; PROCEDURE Fill(x,y:GCoord;bound:INTEGER;Flood:BOOLEAN); PROCEDURE Line(x1,y1,x2,y2:GCoord;Col:INTEGER); PROCEDURE Rectangle(left,top,width,height:GCoord;fill:INTEGER); PROCEDURE Polygon(nsides:INTEGER;px,py:ADDRESS;fill:INTEGER); PROCEDURE Ellipse(x,y,major,minor:GCoord;fill:INTEGER); PROCEDURE EllipticArc(x,y,major,minor:GCoord;StartAngle,EndAngle:INTEGER); PROCEDURE EllipticPie(x,y,major,minor:GCoord;Start,EndAngle,FillQ:INTEGER); PROCEDURE Cuboid(X,Y,width,height,depth:GCoord;top,fill:INTEGER); PROCEDURE CursorPosition(x,y:GCoord); PROCEDURE CharHeight():INTEGER; PROCEDURE CharWidth():INTEGER; PROCEDURE VectorFromAngle(Ang:INTEGER;VAR X,Y:GCoord); PROCEDURE ArcServer(X,Y,Major,Minor:GCoord;StartA,EndA:INTEGER;Pie,FillQ:BOOLEAN); PROCEDURE AffixColor(Col,BkCol:INTEGER); PROCEDURE XReal(x:GCoord):GCoord; PROCEDURE YReal(x:GCoord):GCoord; PROCEDURE XPhys(x:GCoord):GCoord; PROCEDURE YPhys(x:GCoord):GCoord; PROCEDURE Colour(x:INTEGER):INTEGER; END GWindow; END GWinM2P.