X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=libctgraphics%2Fezplot.cpp;h=fb823b505f15feb1c7f0bbdee9ec052fab08190b;hp=519b7f97396bd398cd710b4e03f841d8d1077090;hb=bfcc769cf8019eabc8c65c07257c8dbee4b4c977;hpb=c85a5b31119b4e0903144c55441717a7ad1e0b8b diff --git a/libctgraphics/ezplot.cpp b/libctgraphics/ezplot.cpp index 519b7f9..fb823b5 100644 --- a/libctgraphics/ezplot.cpp +++ b/libctgraphics/ezplot.cpp @@ -6,7 +6,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ezplot.cpp,v 1.8 2000/07/28 10:51:31 kevin Exp $ +** $Id: ezplot.cpp,v 1.13 2000/09/02 05:10:39 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 @@ -31,7 +31,7 @@ static const double TICKRATIO = 0.4; // ratio of minor to major tick lengths 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; @@ -71,6 +71,18 @@ EZPlot::addCurve (const double *y, int n) } +void +EZPlot::addCurve (const float *y, int n) +{ + double yDouble [n]; + + for (int i = 0; i < n; i++) + yDouble[i] = y[i]; + + addCurve (yDouble, n); +} + + void EZPlot::addCurve (const float x[], const double y[], int num) { @@ -130,13 +142,11 @@ EZPlot::EZPlot (SGP& sgp) void EZPlot::initPlotSettings () { - curveinteract = -1; - charwidth = DEF_CHARWIDTH; charheight = DEF_CHARHEIGHT; - c_xlabel = "X axis"; - c_ylabel = "Y axis"; + c_xlabel = ""; + c_ylabel = ""; c_title = ""; c_legend = ""; @@ -179,12 +189,12 @@ EZPlot::initPlotSettings () 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; } @@ -255,8 +265,8 @@ EZPlot::plot () } /* find nice endpoints for axes */ - axis_scale (xmin, xmax, o_xmajortick - 1, &xgw_min, &xgw_max, &x_nint); - axis_scale (ymin, ymax, o_ymajortick - 1, &ygw_min, &ygw_max, &y_nint); + if (! axis_scale (xmin, xmax, o_xmajortick - 1, &xgw_min, &xgw_max, &x_nint) || ! axis_scale (ymin, ymax, o_ymajortick - 1, &ygw_min, &ygw_max, &y_nint)) + return; /* check if user set x-axis extents */ if (s_xmin == TRUE) { @@ -302,7 +312,8 @@ EZPlot::plot () xtl_wid = x_fldwid * charwidth; /* calc size of tick labels */ ytl_wid = y_fldwid * charwidth; tl_height = charheight; - + + // rSGP.getViewport (xp_min, yp_min, xp_max, yp_max); /* calculate the extent of the plot frame */ xp_min = o_xporigin; yp_min = o_yporigin; @@ -322,7 +333,7 @@ EZPlot::plot () /* adjust frame for title */ if (c_title.length() > 0) ya_max -= 2.5 * charheight; - title_row = ya_max + 0.5 * charheight; + title_row = ya_max + charheight; /* calculate legend box boundaries */ int max_leg = 0; /* longest legend in characters */ @@ -576,7 +587,9 @@ EZPlot::drawAxes(void) rSGP.setViewport (xp_min, yp_min, xp_max, yp_max); if (c_title.length() > 0) { - rSGP.moveAbs (xa_min + (xa_max-xa_min)/2 - c_title.length()*charwidth, title_row); + double wText, hText; + rSGP.getTextExtent (c_title.c_str(), &wText, &hText); + rSGP.moveAbs (xa_min + (xa_max-xa_min)/2 - wText/2, title_row); rSGP.setTextSize (charheight * 2.0); rSGP.setTextColor (clr_title, -1); rSGP.drawText (c_title); @@ -829,7 +842,7 @@ int EZPlot::axis_scale (double min, double max, int nint, double *minp, double *maxp, int *nintp) { if (min >= max || nint < 1) { - sys_error (ERR_WARNING, "Invalid params: min=%lf, min=%lf, num intervals=%d [axis_scale]", min, max, nint); + sys_error (ERR_WARNING, "Invalid params: min=%lf, max=%lf, num intervals=%d [axis_scale]", min, max, nint); return (FALSE); }