** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: sgp.cpp,v 1.22 2000/12/18 06:47:03 kevin Exp $
+** $Id: sgp.cpp,v 1.24 2000/12/26 21:13:15 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
m_ctm.setIdentity();
#if HAVE_WXWINDOWS
- m_pen.SetWidth(1);
- m_pen.SetStyle(wxSOLID);
+ m_pen.SetWidth (1);
if (m_driver.isWX()) {
static const double dScreenDPI = 82;
static const double dPointsPerInch = 72.;
m_dPointsPerPixel = dPointsPerInch / dScreenDPI;
- const int iTestPointSize = 12;
- m_font.SetPointSize (iTestPointSize);
- m_driver.idWX()->SetFont(m_font);
+ const int iTestPointSize = 12;\r
+ m_pFont = new wxFont (wxROMAN, wxNORMAL, wxNORMAL, wxNORMAL);
+ m_pFont->SetPointSize (iTestPointSize);\r
+ m_pFont->SetWeight (wxNORMAL);\r
+ m_pFont->SetStyle (wxNORMAL);
+ m_pFont->SetFamily (wxROMAN);\r
+#ifdef MSVC\r
+ m_pFont->SetFaceName(wxString("times new roman"));\r
+#endif\r
+ m_driver.idWX()->SetFont (*m_pFont);
double dTestCharHeight = m_driver.idWX()->GetCharHeight();
m_dPointsPerPixel = iTestPointSize / dTestCharHeight;\r
-// wxWHITE_BRUSH->SetColour (255, 255, 255);\r
-// wxWHITE_BRUSH->SetStyle (wxSOLID);\r
- m_driver.idWX()->SetBackground (*wxWHITE_BRUSH);
+ m_driver.idWX()->SetBackground (*wxWHITE_BRUSH);
}
#endif
setTextAngle (0.);
setTextPointSize (12);
- setColor (C_BLACK);
+ setColor (C_BLACK);\r
+ setLineStyle (LS_SOLID);
}
+SGP::~SGP()\r
+{\r
+#if HAVE_WXWINDOWS\r
+ if (m_driver.isWX()) {\r
+ m_driver.idWX()->SetFont (wxNullFont);\r
+ delete m_pFont;\r
+ }\r
+#endif\r
+}\r
void
SGP::stylusNDC (double x, double y, bool beam)
//==============================================================
void
SGP::setLineStyle (int style)
-{
+{\r
+ m_iLinestyle = style;\r
+
+#if HAVE_WXWINDOWS\r
+ if (m_driver.isWX()) {\r
+ switch (m_iLinestyle) {\r
+ case LS_SOLID:\r
+ m_pen.SetStyle (wxSOLID);\r
+ break;\r
+ case LS_DASH1:\r
+ m_pen.SetStyle (wxLONG_DASH);\r
+ break;\r
+ case LS_DASH2:\r
+ m_pen.SetStyle (wxSHORT_DASH);\r
+ break;\r
+ case LS_DASH3:\r
+ m_pen.SetStyle (wxDOT_DASH);\r
+ break;\r
+ case LS_DASH4:\r
+ m_pen.SetStyle (wxCROSS_HATCH);\r
+ break;\r
+ case LS_DOTTED:\r
+ m_pen.SetStyle (wxDOT);\r
+ break;\r
+ default:\r
+ m_pen.SetStyle (wxSOLID);\r
+ break;\r
+ }\r
+ m_driver.idWX()->SetPen (m_pen);\r
+ }\r
+#endif\r
}
//==============================================================
if (m_driver.isWX()) {
double dHeightPixels = height * m_iPhysicalYSize;
double dHeightPoints = dHeightPixels * m_dPointsPerPixel;
- m_font.SetPointSize (nearest<int>(dHeightPoints));
- m_driver.idWX()->SetFont (m_font);
+ m_pFont->SetPointSize (nearest<int>(dHeightPoints));
+ m_driver.idWX()->SetFont (*m_pFont);
}
#endif
}
#if HAVE_WXWINDOWS
if (m_driver.isWX()) {
double dHeightPoints = dHeightPixels * m_dPointsPerPixel;
- m_font.SetPointSize (nearest<int>(dHeightPoints));
- m_driver.idWX()->SetFont (m_font);
+ m_pFont->SetPointSize (nearest<int>(dHeightPoints));
+ m_driver.idWX()->SetFont (*m_pFont);
}
#endif
}
#endif
#if HAVE_WXWINDOWS
if (m_driver.isWX()) {
- m_font.SetPointSize (static_cast<int>(height+0.5));
- m_driver.idWX()->SetFont (m_font);
+ m_pFont->SetPointSize (static_cast<int>(height+0.5));
+ m_driver.idWX()->SetFont (*m_pFont);
}
#endif
}
if (m_driver.isWX()) {
wxString sText (szText);
wxCoord deviceW, deviceH;
- m_driver.idWX()->GetTextExtent (sText, &deviceW, &deviceH);
- *worldW = static_cast<double>(deviceW) / static_cast<double>(m_iPhysicalXSize);;
- *worldH = static_cast<double>(deviceH) / static_cast<double>(m_iPhysicalYSize);
- *worldW *= (xw_max - xw_min);
- *worldH *= (yw_max - yw_min);
+ m_driver.idWX()->GetTextExtent (sText, &deviceW, &deviceH);\r
+ if (m_dTextAngle == 90 || m_dTextAngle == -90) {\r
+ wxCoord temp = deviceW;\r
+ deviceW = deviceH;\r
+ deviceH = temp;\r
+ }
+ *worldW = (xw_max - xw_min) * deviceW / static_cast<double>(m_iPhysicalXSize);;
+ *worldH = (yw_max - yw_min) * deviceH / static_cast<double>(m_iPhysicalYSize);
}
#endif
}