** EZPLOT
**
** This is part of the CTSim program
-** Copyright (C) 1983-2000 Kevin Rosenberg
+** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: ezplot.cpp,v 1.29 2001/01/12 16:41:56 kevin Exp $
+** $Id: ezplot.cpp,v 1.33 2001/03/11 15:27:30 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
EZPlotCurve::EZPlotCurve (const double* xData, const double* yData, int n)
-: x(NULL), y(NULL)
+: x(new double[n]), y(new double[n])
{
- x = new double [n];
- y = new double [n];
-
- int copyCount = n * sizeof(double);
- memcpy (x, xData, copyCount);
- memcpy (y, yData, copyCount);
+ for (int i = 0; i < n; i++) {
+ x[i] = xData[i];
+ y[i] = yData[i];
+ }
m_iPointCount = n;
}
}
void
-EZPlot::addCurve (const double x[], const float y[], int num)
+EZPlot::addCurve (const double* const x, const float* const y, int num)
{
double* dy = new double [num];
void
-EZPlot::addCurve (const double x[], const double y[], int num)
+EZPlot::addCurve (const double* const x, const double* const y, int num)
{
if (num < 1)
return;
void
EZPlot::plot (SGP* pSGP)
{
-
if (m_vecCurves.size() <= 0)
return;
-
m_pSGP = pSGP;
-
m_pSGP->setWindow (0., 0., 1., 1.);
if (s_textsize == TRUE)
charheight = m_pSGP->getCharHeight();
charwidth = m_pSGP->getCharWidth();
+ double symheight = charheight * 0.3; // size of symbol in NDC
+ double symwidth = symheight;
const EZPlotCurve& firstCurve = *m_vecCurves[0];
m_pSGP->setLineStyle (SGP::LS_SOLID);
for (int j = 0; j < 5; j++) {
m_pSGP->moveAbs (xmin + j * xinc, y);
- symbol(iSymbol, 0.5 * charwidth, 0.5 * charheight);
+ symbol (iSymbol, symwidth, symheight);
}
}
++iLegend; // move to next legend position
m_pSGP->setLineStyle (SGP::LS_SOLID);
drawAxes();
- // size of symbol in NDC
- double symwidth = charwidth;
- double symheight = charheight;
-
double clipRect[4];
for (int i = 1; i < pCurve->m_iPointCount; i++) {
double x2 = convertWorldToNDC_X (pCurve->x[i]);
double y2 = convertWorldToNDC_Y (pCurve->y[i]);
-
double x2Clip = x2;
-
double y2Clip = y2;
if (clip_rect (x1, y1, x2Clip, y2Clip, clipRect)) {
-
m_pSGP->moveAbs (x1, y1);
-
m_pSGP->lineAbs (x2Clip, y2Clip);
-
}
-
x1 = x2;
-
y1 = y2;
-
}
}
if (iSym > 0) {
-
int iSymFreq = getSymbolFreq (iCurve);
m_pSGP->setLineStyle (SGP::LS_SOLID);
double x = convertWorldToNDC_X (pCurve->x[0]);
if (y >= ygn_min && y <= ygn_max) {
m_pSGP->moveAbs (x, y);
symbol (iSym, symwidth, symheight);
-
}
}
}
return;
if (sym == SB_CROSS) {
- m_pSGP->moveRel (-0.5 * symwidth, -0.5 * symheight);
- m_pSGP->lineRel (symwidth, symheight);
- m_pSGP->moveRel (-symwidth, 0.0);
- m_pSGP->lineRel (symwidth, -symheight);
- m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight);
+ m_pSGP->markerRel (0, 0);
+// m_pSGP->moveRel (-0.5 * symwidth, -0.5 * symheight);
+// m_pSGP->lineRel (symwidth, symheight);
+// m_pSGP->moveRel (-symwidth, 0.0);
+// m_pSGP->lineRel (symwidth, -symheight);
+// m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight);
} else if (sym == SB_PLUS) {
m_pSGP->moveRel (-0.5 * symwidth, 0.0);
m_pSGP->lineRel (symwidth, 0.0);
m_pSGP->moveRel (-0.5 * symwidth, 0.0);
m_pSGP->lineRel (symwidth, 0.0);
m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight);
+ } else if (sym == SB_POINT) {
+ m_pSGP->pointRel (0, 0);
}
}