r633: no message
[ctsim.git] / libctgraphics / sgp.cpp
index 57904a621f9a64120b4c210ef33db6fd84743438..1a305901c530a773dfef48994971d91416a4e110 100644 (file)
@@ -7,7 +7,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: sgp.cpp,v 1.30 2001/03/10 23:14:16 kevin Exp $
+**  $Id: sgp.cpp,v 1.32 2001/03/11 18:52:03 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
@@ -104,6 +104,7 @@ SGP::SGP (const SGPDriver& driver)
   setTextPointSize (12);
   setColor (C_BLACK);
   setLineStyle (LS_SOLID);
+  setMarker (MARKER_POINT);
 }
 
 
@@ -170,6 +171,22 @@ SGP::stylusNDC (double x, double y, bool beam)
 void
 SGP::markerNDC (double x, double y)
 {
+  int xp = static_cast<int>(x * (m_iPhysicalXSize - 1) + 0.5);
+  int yp = static_cast<int>(y * (m_iPhysicalYSize - 1) + 0.5);
+  if (m_driver.isWX())
+    yp = m_iPhysicalYSize - yp;
+
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+      m_driver.idWX()->DrawPoint (xp, yp);
+      m_driver.idWX()->DrawPoint (xp-1, yp-1);
+      m_driver.idWX()->DrawPoint (xp+1, yp+1);
+      m_driver.idWX()->DrawPoint (xp+1, yp-1);
+      m_driver.idWX()->DrawPoint (xp-1, yp+1);
+  }
+#endif
+  m_iCurrentPhysicalX = xp;
+  m_iCurrentPhysicalY = yp;
 }
 
 void
@@ -406,8 +423,9 @@ SGP::setRasterOp (int ro)
 
 
 void
-SGP::setMarker (int idMarke, int iColor)
+SGP::setMarker (int idMarker)
 {
+  m_iMarker = idMarker;
 }
 
 //==============================================================
@@ -647,7 +665,6 @@ SGP::markerAbs (double x, double y)
   double yndc = y;
   mc_to_ndc.transformPoint (&xndc, &yndc);
   markerNDC (xndc, yndc); 
-  stylusNDC (xndc, yndc, false);            // move to location 
   m_dCurrentWorldX = x;
   m_dCurrentWorldY = y;
 }
@@ -767,7 +784,8 @@ SGP::drawArc (const double r, double start, double stop)
   double cosTheta = cos (thetaIncrement);
   double sinTheta = sin (thetaIncrement);
 
-  for (double angle = start; angle < stop; angle += thetaIncrement) {
+  double angle;
+  for (angle = start; angle < stop; angle += thetaIncrement) {
     double xp = cosTheta * x - sinTheta * y; // translate point by thetaIncrement
     double yp = sinTheta * x + cosTheta * y;
     lineAbs (xCent + xp, yCent + yp);