r296: *** empty log message ***
[ctsim.git] / libctgraphics / sgp.cpp
index 4790a2394e2b9514222151a41d9aeb855f47e881..f291245b4548a0d5246b4d08453f4f47f0df0ef3 100644 (file)
@@ -7,7 +7,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: sgp.cpp,v 1.14 2000/09/04 09:06:46 kevin Exp $
+**  $Id: sgp.cpp,v 1.21 2000/12/18 06:32:13 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
@@ -52,14 +52,14 @@ RGBColor SGP::s_aRGBColor[] =
 int SGP::s_iRGBColorCount = sizeof(s_aRGBColor) / sizeof(class RGBColor);
 
 #ifdef HAVE_WXWINDOWS
-SGPDriver::SGPDriver (wxDC* pDC, int xsize = 640, int ysize = 480)
+SGPDriver::SGPDriver (wxDC* pDC, int xsize, int ysize)
   : m_iPhysicalXSize(xsize), m_iPhysicalYSize(ysize), m_idDriver(0), m_pDC(pDC)
 {
   m_idDriver |= SGPDRIVER_WXWINDOWS;
 }
 #endif
 
-SGPDriver::SGPDriver (const char* szWinTitle = "", int xsize = 640, int ysize = 480)
+SGPDriver::SGPDriver (const char* szWinTitle, int xsize, int ysize)
   : m_iPhysicalXSize(xsize), m_iPhysicalYSize(ysize), m_sWindowTitle(szWinTitle), m_idDriver(0)
 {
 #ifdef HAVE_G2_H
@@ -70,8 +70,10 @@ SGPDriver::SGPDriver (const char* szWinTitle = "", int xsize = 640, int ysize =
 
 SGPDriver::~SGPDriver ()
 {
+#if HAVE_G2_H
   if (isG2()) 
     g2_close (m_idG2);
+#endif
 }
 
 
@@ -92,18 +94,21 @@ SGP::SGP (const SGPDriver& driver)
 #if HAVE_WXWINDOWS
   m_pen.SetWidth(1);
   m_pen.SetStyle(wxSOLID);
-#endif
 
   if (m_driver.isWX()) {
-      static const double dScreenDPI = 82;
-      static const double dPointsPerInch = 72.;
-      m_dPointsPerPixel = dPointsPerInch / dScreenDPI;
-      const int iTestPointSize = 72;
-      m_font.SetPointSize (iTestPointSize);
-      m_driver.idWX()->SetFont(m_font);
-      double dTestCharHeight = m_driver.idWX()->GetCharHeight();
-      m_dPointsPerPixel = iTestPointSize / dTestCharHeight;
+    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);
+    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);
   }
+#endif
 
   setWindow (0., 0., 1., 1.);
   setViewport (0., 0., 1., 1.);
@@ -160,8 +165,20 @@ SGP::eraseWindow ()
     g2_clear (m_driver.idG2());
 #endif
 #if HAVE_WXWINDOWS
-  if (m_driver.isWX())
-    m_driver.idWX()->Clear();
+  if (m_driver.isWX()) {\r
+       wxBrush brushWhite;\r
+       brushWhite.SetColour(255,255,255);\r
+       m_driver.idWX()->SetBackground(brushWhite);\r
+       m_driver.idWX()->Clear();\r
+       m_driver.idWX()->SetBackground(wxNullBrush);\r
+#if 1\r
+       wxPen pen;\r
+       pen.SetColour(255,255,255);\r
+       m_driver.idWX()->SetBrush (brushWhite);\r
+       m_driver.idWX()->DrawRectangle (0, 0, m_iPhysicalXSize, m_iPhysicalYSize);\r
+       m_driver.idWX()->SetBrush (wxNullBrush);\r
+#endif\r
+  }
 #endif
 }
 
@@ -417,7 +434,7 @@ SGP::moveRel (double x, double y)
 void
 SGP::setTextSize (double height)
 {
-    height /= (xw_max - xw_min);
+    height /= (yw_max - yw_min);  // convert to NDC
 #if HAVE_G2_H
   if (m_driver.isG2())
     g2_set_font_size(m_driver.idG2(), (height * m_iPhysicalYSize));
@@ -458,7 +475,7 @@ SGP::setTextPointSize (double height)
 #endif
 #if HAVE_WXWINDOWS
   if (m_driver.isWX()) {
-      m_font.SetPointSize (height);
+      m_font.SetPointSize (static_cast<int>(height+0.5));
       m_driver.idWX()->SetFont (m_font);
   }
 #endif
@@ -594,7 +611,7 @@ SGP::pointRel (double x, double y)
 
 
 void
-SGP::drawText (const string& rsMessage)
+SGP::drawText (const std::string& rsMessage)
 {
   drawText (rsMessage.c_str());
 }