** 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.33 2003/01/22 22:15:10 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
#include "sgp.h"
-RGBColor SGP::s_aRGBColor[] =
-{
- RGBColor (0, 0, 0),
- RGBColor (0, 0, 128),
- RGBColor (0, 128, 0),
- RGBColor (0, 128, 128),
- RGBColor (128, 0, 0),
- RGBColor (128, 0, 128),
- RGBColor (128, 128, 0),
- RGBColor (80, 80, 80),
- RGBColor (160, 160, 160),
- RGBColor (0, 0, 255),
- RGBColor (0, 255, 0),
- RGBColor (0, 255, 255),
- RGBColor (255, 0, 0),
- RGBColor (255, 0, 255),
- RGBColor (255, 255, 0),
- RGBColor (255, 255, 255),
+SGP_RGBColor SGP::s_aRGBColor[] =
+{
+ SGP_RGBColor (0, 0, 0),
+ SGP_RGBColor (0, 0, 128),
+ SGP_RGBColor (0, 128, 0),
+ SGP_RGBColor (0, 128, 128),
+ SGP_RGBColor (128, 0, 0),
+ SGP_RGBColor (128, 0, 128),
+ SGP_RGBColor (128, 128, 0),
+ SGP_RGBColor (80, 80, 80),
+ SGP_RGBColor (160, 160, 160),
+ SGP_RGBColor (0, 0, 255),
+ SGP_RGBColor (0, 255, 0),
+ SGP_RGBColor (0, 255, 255),
+ SGP_RGBColor (255, 0, 0),
+ SGP_RGBColor (255, 0, 255),
+ SGP_RGBColor (255, 255, 0),
+ SGP_RGBColor (255, 255, 255),
};
-int SGP::s_iRGBColorCount = sizeof(s_aRGBColor) / sizeof(class RGBColor);
+int SGP::s_iRGBColorCount = sizeof(s_aRGBColor) / sizeof(class SGP_RGBColor);
#ifdef HAVE_WXWINDOWS
SGPDriver::SGPDriver (wxDC* pDC, int xsize, int ysize)
setTextPointSize (12);
setColor (C_BLACK);
setLineStyle (LS_SOLID);
+ setMarker (MARKER_POINT);
}
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
void
-SGP::setMarker (int idMarke, int iColor)
+SGP::setMarker (int idMarker)
{
+ m_iMarker = idMarker;
}
//==============================================================
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;
}
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);