** Date Started: 1984
**
** This is part of the CTSim program
-** Copyright (C) 1983-2000 Kevin Rosenberg
-**
-** $Id: sgp.h,v 1.18 2000/09/04 09:06:46 kevin Exp $
+** Copyright (c) 1983-2009 Kevin Rosenberg
**
** 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
#include <string>
-
class SGPDriver {
private:
int m_iPhysicalXSize;
int m_iPhysicalYSize;
- string m_sWindowTitle;
+ std::string m_sWindowTitle;
int m_idDriver;
#ifdef HAVE_WXWINDOWS
#endif
SGPDriver (const char* szWinTitle = "", int xsize = 640, int ysize = 480);
-
+
~SGPDriver ();
int getPhysicalXSize () const
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; }
};
-class RGBColor;
+class SGP_RGBColor;
class SGP {
private:
- int m_iPhysicalXSize; // Physical Window size
+ int m_iPhysicalXSize; // Physical Window size
int m_iPhysicalYSize;
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_font;
+ wxFont* m_pFont;
+
+ void initFromDC (wxDC* pDC);
#endif
public:
- enum { // linestyles
+ enum { // linestyles
LS_NOLINE = 0,
LS_SOLID = 0xffff,
LS_DASH1 = 0xff00,
};
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 (const double r, double start, double stop);
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);
void setTextAngle (double angle);
void setTextColor (int iFGcolor, int iBGcolor);
void setPenWidth (int width);
- void setMarker (int idMarker, int color);
+ void setMarker (int idMarker);
void setRasterOp (int ro);
void getWindow (double& xmin, double& ymin, double& xmax, double& ymax);
enum {
- C_BLACK = 0, // color codes
+ C_BLACK = 0, // color codes
C_BLUE = 1,
C_GREEN = 2,
C_CYAN = 3,
};
-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)
{}