X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fsgp.h;h=174d83b00486b602156e6f60c2b5213103571450;hp=7cda247c9c52b2e64758807d06be24e64cc03f3b;hb=55426f4170ed9dc777c3cec3741e4a59e6eebd38;hpb=93eb50659a64db3e37753d36c9923e82c7f7ca8a diff --git a/include/sgp.h b/include/sgp.h index 7cda247..174d83b 100644 --- a/include/sgp.h +++ b/include/sgp.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: sgp.h,v 1.13 2000/08/02 18:06:00 kevin Exp $ +** $Id: sgp.h,v 1.21 2000/12/06 15:17:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -36,6 +36,7 @@ #ifdef HAVE_WXWINDOWS #include +#include #endif #if HAVE_G2_H @@ -46,7 +47,7 @@ extern "C" { #endif #include - +using namespace std; class SGPDriver { private: @@ -72,7 +73,7 @@ public: #endif SGPDriver (const char* szWinTitle = "", int xsize = 640, int ysize = 480); - + ~SGPDriver (); int getPhysicalXSize () const @@ -85,10 +86,10 @@ public: { return m_sWindowTitle; } bool isWX () const - { return (m_idDriver & SGPDRIVER_WXWINDOWS); } + { return (m_idDriver & SGPDRIVER_WXWINDOWS ? true : false); } bool isG2 () const - { return (m_idDriver & SGPDRIVER_G2); } + { return (m_idDriver & SGPDRIVER_G2 ? true : false); } int idG2 () const { return m_idG2; } @@ -96,6 +97,9 @@ public: #ifdef HAVE_WXWINDOWS wxDC* idWX () const { return m_pDC; } + + void setDC (wxDC* dc) + { m_pDC = dc; } #endif }; @@ -105,7 +109,7 @@ class SGP { private: int m_iPhysicalXSize; // Physical Window size int m_iPhysicalYSize; - const SGPDriver m_driver; + SGPDriver m_driver; double xw_min; // Window extents double yw_min; @@ -123,6 +127,7 @@ private: double m_dCurrentWorldY; double m_dTextAngle; bool m_bRecalcTransform; + double m_dPointsPerPixel; // points (72pt/in) per screen pixel; // Master coordinates are coordinates before CTM transformation // World coordinates are coordinates defined by setWindow() @@ -137,6 +142,11 @@ private: static RGBColor s_aRGBColor[]; static int s_iRGBColorCount; +#if HAVE_WXWINDOWS + wxPen m_pen; + wxFont m_font; +#endif + public: enum { // linestyles LS_NOLINE = 0, @@ -161,13 +171,13 @@ public: MARK_BSQUARE = 9, // big open square MARK_BDIAMOND = 10, // big open diamond }; - static const int MARK_COUNT = 11; + enum { MARK_COUNT = 11, }; static const unsigned char MARKER_BITMAP[MARK_COUNT][5]; SGP (const SGPDriver& driver); void drawCircle (const double r); - void drawArc (double start, double stop, const double r); + void drawArc (const double r, double start, double stop); void drawRect (double xmin, double ymin, double xmax, double ymax); void lineAbs(double x, double y); void moveAbs(double x, double y); @@ -189,11 +199,22 @@ public: void setColor (int icol); void setLineStyle (int style); void setTextSize (double height); + void setTextNDCSize (double height); + void setTextPointSize (double height); void setTextAngle (double angle); void setTextColor (int iFGcolor, int iBGcolor); + void setPenWidth (int width); void setMarker (int idMarker, int color); void setRasterOp (int ro); + void getWindow (double& xmin, double& ymin, double& xmax, double& ymax); + void getViewport (double& xmin, double& ymin, double& xmax, double& ymax); + void getTextExtent (const char *szText, double* x, double* y); + double getCharHeight (); + double getCharWidth (); + SGPDriver& getDriver() {return m_driver;} + const SGPDriver& getDriver() const {return m_driver;} + void ctmClear (); void ctmSet (const TransformationMatrix2D& m); void preTranslate (double x, double y); @@ -211,6 +232,10 @@ public: void stylusNDC (double x, double y, bool beam); void pointNDC (double x, double y); void markerNDC (double x, double y); + +#if HAVE_WXWINDOWS + void setDC (wxDC* pDC); +#endif };