r313: *** empty log message ***
[ctsim.git] / libctgraphics / sgp.cpp
index d3ea434b9b27a2cd8946f41b516d6d7bdced3543..4b2d5dcfea9cf1c52a8211b0a3d656dfd65ef821 100644 (file)
@@ -7,7 +7,7 @@
 **  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.23 2000/12/25 21:54:26 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
@@ -92,21 +92,25 @@ SGP::SGP (const SGPDriver& driver)
   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
 
@@ -117,9 +121,19 @@ SGP::SGP (const SGPDriver& driver)
   
   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)
@@ -380,7 +394,37 @@ SGP::setMarker (int idMarke, int iColor)
 //==============================================================
 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
 }
 
 //==============================================================
@@ -443,8 +487,8 @@ SGP::setTextSize (double height)
   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
 }
@@ -460,8 +504,8 @@ SGP::setTextNDCSize (double height)
 #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
 }
@@ -475,8 +519,8 @@ SGP::setTextPointSize (double height)
 #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
 }
@@ -489,10 +533,8 @@ SGP::getTextExtent (const char* szText, double* worldW, double* worldH)
     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);
+    *worldW = (xw_max - xw_min) * deviceW / static_cast<double>(m_iPhysicalXSize);;
+    *worldH = (yw_max - yw_min) * deviceH / static_cast<double>(m_iPhysicalYSize);
   }
 #endif
 }