r11859: Canonicalize whitespace
[ctsim.git] / include / sgp.h
index 7cda247c9c52b2e64758807d06be24e64cc03f3b..7cb3409da3293021be235a583e3759eb26e8c865 100644 (file)
@@ -7,9 +7,9 @@
 **      Date Started: 1984
 **
 **  This is part of the CTSim program
-**  Copyright (C) 1983-2000 Kevin Rosenberg
+**  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: sgp.h,v 1.13 2000/08/02 18:06:00 kevin Exp $
+**  $Id$
 **
 **  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
@@ -47,12 +48,11 @@ extern "C" {
 
 #include <string>
 
-
 class SGPDriver {
 private:
   int m_iPhysicalXSize;
   int m_iPhysicalYSize;
-  string m_sWindowTitle;
+  std::string m_sWindowTitle;
   int m_idDriver;
 
 #ifdef HAVE_WXWINDOWS
@@ -81,14 +81,14 @@ public:
   int getPhysicalYSize () const
     { return m_iPhysicalYSize; }
 
-  const string& getWindowTitle () const
+  const std::string& getWindowTitle () const
     { 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,49 +96,63 @@ public:
 #ifdef HAVE_WXWINDOWS
   wxDC* idWX () const
     { return m_pDC; }
+
+  void setDC (wxDC* dc)
+      { m_pDC = dc; }
 #endif
 };
 
 
-class RGBColor;
+class SGP_RGBColor;
 class SGP {
 private:
-  int m_iPhysicalXSize;   // Physical Window size 
+  int m_iPhysicalXSize;   // Physical Window size
   int m_iPhysicalYSize;
-  const SGPDriver m_driver;
+  SGPDriver m_driver;
 
-  double xw_min;    // Window extents 
+  double xw_min;    // Window extents
   double yw_min;
   double xw_max;
   double yw_max;
-  double xv_min;    // Viewport extents 
+  double xv_min;    // Viewport extents
   double yv_min;
   double xv_max;
   double yv_max;
-  double viewNDC[4];   // Viewport array for clip_rect() 
+  double viewNDC[4];   // Viewport array for clip_rect()
 
   int m_iCurrentPhysicalX;
   int m_iCurrentPhysicalY;
   double m_dCurrentWorldX;
   double m_dCurrentWorldY;
   double m_dTextAngle;
+  int m_iTextPointSize;
   bool m_bRecalcTransform;
+  double m_dPointsPerPixel;  // points (72pt/in) per screen pixel;
+  int m_iLinestyle;
+  int m_iMarker;
 
   // Master coordinates are coordinates before CTM transformation
   // World coordinates are coordinates defined by setWindow()
   // Normalized device coordinates range from 0. to 1. in both axes
-  TransformationMatrix2D wc_to_ndc;     // World coord to NDC matrix 
-  TransformationMatrix2D mc_to_ndc;     // Master to NDC 
+  TransformationMatrix2D wc_to_ndc;     // World coord to NDC matrix
+  TransformationMatrix2D mc_to_ndc;     // Master to NDC
   TransformationMatrix2D ndc_to_mc;     // NDC to Master
-  TransformationMatrix2D m_ctm;         // Current transfromation matrix 
-  
+  TransformationMatrix2D m_ctm;         // Current transfromation matrix
+
   void calc_transform ();
 
-  static RGBColor s_aRGBColor[];
+  static SGP_RGBColor s_aRGBColor[];
   static int s_iRGBColorCount;
 
+#if HAVE_WXWINDOWS
+  wxPen m_pen;
+  wxFont* m_pFont;
+
+  void initFromDC (wxDC* pDC);
+#endif
+
 public:
-  enum {                  // linestyles 
+  enum {                  // linestyles
       LS_NOLINE = 0,
       LS_SOLID = 0xffff,
       LS_DASH1 = 0xff00,
@@ -149,32 +163,33 @@ public:
   };
 
   enum {            // Codes for marker symbols
-      MARK_POINT = 0,  // small dot 
-      MARK_SQUARE = 1, // empty square 
-      MARK_FSQUARE = 2,        // filled square 
-      MARK_DIAMOND = 3,        // empty diamond 
-      MARK_FDIAMOND = 4,       // filled diamond 
-      MARK_CROSS =  5, // cross 
-      MARK_XCROSS = 6, // x 
-      MARK_CIRCLE = 7,    // open circle 
-      MARK_FCIRCLE = 8,        // filled circle 
-      MARK_BSQUARE = 9,        // big open square 
-      MARK_BDIAMOND = 10,      // big open diamond 
+      MARKER_POINT = 0, // small dot
+      MARKER_SQUARE = 1,        // empty square
+      MARKER_FSQUARE = 2,       // filled square
+      MARKER_DIAMOND = 3,       // empty diamond
+      MARKER_FDIAMOND = 4,      // filled diamond
+      MARKER_CROSS =  5,        // cross
+      MARKER_XCROSS = 6,        // x
+      MARKER_CIRCLE = 7,    // open circle
+      MARKER_FCIRCLE = 8,       // filled circle
+      MARKER_BSQUARE = 9,       // big open square
+      MARKER_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);
+  ~SGP();
 
   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);
   void lineRel(double x, double y);
   void moveRel(double x, double y);
   void drawText(const char *szMessage);
-  void drawText(const string& rsMessage);
+  void drawText(const std::string& rsMessage);
   void polylineAbs(double x[], double y[], int n);
   void markerAbs (double x, double y);
   void markerRel(double x, double y);
@@ -189,11 +204,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 setMarker (int idMarker, int color);
+  void setPenWidth (int width);
+  void setMarker (int idMarker);
   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,11 +237,15 @@ 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
 };
 
 
 enum {
-    C_BLACK     = 0,     // color codes 
+    C_BLACK     = 0,     // color codes
     C_BLUE      = 1,
     C_GREEN     = 2,
     C_CYAN      = 3,
@@ -253,14 +283,14 @@ enum RasterOp {
 };
 
 
-class RGBColor {
+class SGP_RGBColor {
  private:
   short int r;
   short int g;
   short int b;
 
  public:
-  RGBColor (int r, int g, int b)
+  SGP_RGBColor (int r, int g, int b)
     : r(r), g(g), b(b)
     {}