r246: More modifications for MSVC
[ctsim.git] / include / sgp.h
index 7cda247c9c52b2e64758807d06be24e64cc03f3b..f30f582e3df2762114744de2b698a86ca596c29d 100644 (file)
@@ -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.20 2000/12/06 01:46:43 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 <wx/wx.h>
+#include <wx/font.h>
 #endif
 
 #if HAVE_G2_H
@@ -46,7 +47,7 @@ extern "C" {
 #endif
 
 #include <string>
-
+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
@@ -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
 };