** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ezplot.cpp,v 1.7 2000/07/28 08:28:08 kevin Exp $
+** $Id: ezplot.cpp,v 1.9 2000/07/29 19:50:08 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
static const int MAXNUMFMT = 15; // maximum length of a numeric format
static const double DEF_CHARHEIGHT = (1./43.); //size of characters in NDC
static const double DEF_CHARWIDTH = (1./80.); // size of characters in NDC
-static const int DEF_CURVE_CLR = C_YELLOW;
+static const int DEF_CURVE_CLR = C_RED;
x = new double [n];
y = new double [n];
-#if 1
- for (int i = 0; i < n; i++) {
- x[i] = xData[i];
- y[i] = yData[i];
- }
-#else
int copyCount = n * sizeof(double);
memcpy (x, xData, copyCount);
memcpy (y, yData, copyCount);
-#endif
+
m_iPointCount = n;
m_iColor = color;
m_iLineStyle = linestyle;
addCurve (dx, y, num);
}
+void
+EZPlot::addCurve (const double x[], const float y[], int num)
+{
+ double dy [num];
+
+ for (int i = 0; i < num; i++)
+ dy[i] = y[i];
+
+ addCurve (x, dy, num);
+}
+
void
EZPlot::addCurve (const double x[], const double y[], int num)
if (num < 1)
return;
- int iNumCurves = m_vecCurves.size();
-
- if (o_unknowncurves == FALSE && iNumCurves >= o_reqcurves)
- clearCurves ();
-
- if (o_unknowncurves == TRUE || iNumCurves < o_reqcurves) {
- EZPlotCurve* pCurve = new EZPlotCurve (x, y, num, o_color, o_linestyle, o_symbol, o_symfreq, c_legend);
- m_vecCurves.push_back (pCurve);
- }
-
- iNumCurves = m_vecCurves.size(); // recalculate
- if (o_unknowncurves == FALSE && iNumCurves >= o_reqcurves) {
- plot ();
- clearCurves ();
- }
+ EZPlotCurve* pCurve = new EZPlotCurve (x, y, num, o_color, o_linestyle, o_symbol, o_symfreq, c_legend);
+ m_vecCurves.push_back (pCurve);
}
void
EZPlot::clearCurves ()
{
- for (EZPlotCurveIterator i = m_vecCurves.begin(); i != m_vecCurves.end(); i++) delete *i;
+ for (EZPlotCurveIterator i = m_vecCurves.begin(); i != m_vecCurves.end(); i++)
+ delete *i;
m_vecCurves.erase (m_vecCurves.begin(), m_vecCurves.end());
+ initPlotSettings();
}
EZPlot::EZPlot (SGP& sgp)
: rSGP (sgp)
{
- curveinteract = -1;
+ initPlotSettings();
+}
+void
+EZPlot::initPlotSettings ()
+{
charwidth = DEF_CHARWIDTH;
charheight = DEF_CHARHEIGHT;
- c_xlabel = "X axis";
- c_ylabel = "Y axis";
+ c_xlabel = "";
+ c_ylabel = "";
c_title = "";
c_legend = "";
- o_reqcurves = 1;
- o_unknowncurves = FALSE;
-
o_xporigin = 0.0;
o_yporigin = 0.0;
o_xlength = 1.0;
s_ylegend = FALSE;
s_textsize = FALSE;
- clr_axis = C_WHITE; /* set fixed colors */
- clr_title = (C_CYAN+8);
- clr_label = (C_CYAN+8);
- clr_legend = (C_RED+8);
- clr_number = (C_GREEN+8);
- clr_grid = (C_BLACK+8);
+ clr_axis = C_BLACK; /* set fixed colors */
+ clr_title = C_CYAN;
+ clr_label = C_CYAN;
+ clr_legend = C_RED;
+ clr_number = C_GREEN;
+ clr_grid = C_LTGRAY;
}
/* NAME
- * plot INTERNAL: Plots all curves collected by ezplot()
+ * plot Plots all curves collected by addCurves ()
*
* SYNOPSIS
* plot()
*
* DESCRIPTION
- * This routine plots the curves that have stored by ezplot().
- *
- * CALLED BY
- * EZPLOT() only
+ * This routine plots the curves that have stored by addCurves().
*
* CALLS
* drawAxes() & make_numfmt()
/* Convert WC in graph boundary to axis boundary */
rSGP.setWindow (xgw_min, ygw_min, xgw_max, ygw_max); /* Graph boundary */
rSGP.setViewport (xgn_min, ygn_min, xgn_max, ygn_max);
-
double xminTemp = xa_min, xmaxTemp = xa_max;
double yminTemp = ya_min, ymaxTemp = ya_max;
rSGP.transformNDCtoMC (&xminTemp, &yminTemp); // calc WC to axis boundaries
- rSGP.transformNDCtoMC (&yminTemp, &ymaxTemp);
-
- rSGP.setWindow (xminTemp, yminTemp, xmaxTemp, ymaxTemp); // Set window to axis boundaries
+ rSGP.transformNDCtoMC (&xmaxTemp, &ymaxTemp);
+ rSGP.setWindow (xminTemp, yminTemp, xmaxTemp, ymaxTemp); // Set window to axis boundaries
rSGP.setViewport (xa_min, ya_min, xa_max, ya_max);
symwidth = charwidth * (xgw_max - xgw_min);