| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /* 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
- This version produces objects compatible with the TopSpeed Modula2 compiler
- */
- #include <graph.h>
- #pragma link(gwinc2m)
- #define ErrUnknownAdapter 1
- #define ErrFewerColors 2
- #define ErrUnknownMode 3
- extern int GraphErr;
- typedef short GCoord;
- #pragma save
- #pragma data(compatible_class=>on)
- extern "Modula2.GWinC2M"
- {
- class GWindow
- { private:
- GCoord XScale,YScale;
- int NumColors;
- char ok;
- GCoord XL,YT,XR,YB; //Physical position of window
- short PreviousMode;
- int CurrentColor,CurrentBackColor;
- GCoord XReal(GCoord x)
- { return GCoord((long)x*XScale>>10);
- }
- GCoord YReal(GCoord y)
- { return GCoord((long)y*YScale>>10);
- }
- GCoord XPhys(GCoord x)
- { return XReal(x)+XL;
- }
- GCoord YPhys(GCoord y)
- { return YReal(y)+YT;
- }
- void AffixColor(int Col,int BkCol);
- void VectorFromAngle(int Angle,GCoord &X,GCoord &Y);
- void ArcServer(GCoord X,GCoord Y,GCoord Major,GCoord Minor,int StartAngle,int EndAngle,char pie,int Fill);
- public:
- GWindow(GCoord X1,GCoord Y1,GCoord X2,GCoord Y2,int ColsReq); //Top left-Bottom right
- ~GWindow();
- GWindow(); // For the benefit of pascal
- void ReSize(GCoord X1,GCoord Y1,GCoord X2,GCoord Y2);
- void SetColor(int Col,int BkCol=-1);
- void Clear(int BkCol=-1);
- void Plot(GCoord x,GCoord y,int Col=-1);
- int Point(GCoord x,GCoord y); //-1 for error else logical color
- void Fill(GCoord x,GCoord y,int Bound=-1,char Flood=0);
- void Line(GCoord X1,GCoord Y1,GCoord X2,GCoord Y2,int Col=-1);
- void Rectangle(GCoord Left,GCoord Top,GCoord Width,GCoord Height,int Fill=0);
- void Square(GCoord Left,GCoord Top,GCoord Side,int Fill=0)
- { Rectangle(Left,Top,Side,Side,Fill);
- }
- void Polygon(short nsides,GCoord px[],GCoord py[],int Fill=0);
- void Ellipse(GCoord X,GCoord Y,GCoord Major,GCoord Minor,int Fill=0);
- void Circle(GCoord X,GCoord Y,GCoord Radius,int Fill=0)
- { Ellipse(X,Y,Radius,Radius,Fill);
- }
- void EllipticArc(GCoord X,GCoord Y,GCoord Major,GCoord Minor,int StartAngle,
- int EndAngle);
- void Arc(GCoord X,GCoord Y,GCoord Radius,int StartAngle,int EndAngle)
- { EllipticArc(X,Y,Radius,Radius,StartAngle,EndAngle);
- }
- void EllipticPie(GCoord X,GCoord Y,GCoord Major,GCoord Minor,int StartAngle,
- int EndAngle,int Fill=1);
- void Pie(GCoord X,GCoord Y,GCoord Radius,int StartAngle,int EndAngle,int Fill=0)
- { EllipticPie(X,Y,Radius,Radius,StartAngle,EndAngle,Fill);
- }
- void Cuboid(GCoord X,GCoord Y,GCoord Width,GCoord Height,GCoord Depth,
- int Top=1,int Fill=0);
- void Cube(GCoord X,GCoord Y,GCoord Side,int Top=1,int Fill=0)
- { Cuboid(X,Y,Side,Side,Side,Top,Fill);
- }
- void CursorPosition(GCoord x,GCoord y);
- int CharHeight();
- int CharWidth();
- static short CurrentMode;
- static GWindow *activewindow;
- };
- }
- #pragma restore
|