X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fezplot.h;h=31291bd617872d2b6c7c77313515fdb08306ff6c;hp=716fd3e2b361c8946448a7ecb5ea12d5edcbac6c;hb=dc034c9d0b7d9c3874a324a4c2c189a02945adc8;hpb=a05f3cb550877e94aa118cc04b361c0c8fdb3dc3 diff --git a/include/ezplot.h b/include/ezplot.h index 716fd3e..31291bd 100644 --- a/include/ezplot.h +++ b/include/ezplot.h @@ -7,7 +7,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ezplot.h,v 1.13 2000/08/31 08:38:58 kevin Exp $ +** $Id: ezplot.h,v 1.18 2000/12/16 06:12:47 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 @@ -27,10 +27,10 @@ #ifndef __H_EZPLOT #define __H_EZPLOT -#include +#include +#include +#include #include -#include -#include #include "ctsupport.h" #include "sgp.h" @@ -44,29 +44,29 @@ class EZPlotCurve { int m_iSymbol; int m_iSymbolFreq; int m_iColor; - string m_sLegend; + std::string m_sLegend; - EZPlotCurve (const double* x, const double* y, int n, int color, int linestyle, int symbol, int sumbolFreq, const string& legend); + EZPlotCurve (const double* x, const double* y, int n, int color, int linestyle, int symbol, int sumbolFreq, const std::string& legend); ~EZPlotCurve(); }; -/*----------------------------------------------------------------------*/ -/* GLOBAL VARIABLES */ -/*----------------------------------------------------------------------*/ +//---------------------------------------------------------------------- +// GLOBAL VARIABLES +//---------------------------------------------------------------------- -/* axis definitions */ -#define LINEAR 1 /* linear axis */ -#define LOG 2 /* logrithmic axis */ -#define NOAXIS 3 /* don't plot axis */ +// axis definitions +#define LINEAR 1 // linear axis +#define LOG 2 // logrithmic axis +#define NOAXIS 3 // don't plot axis -/* tick definitions */ +// tick definitions #define ABOVE 1 #define BELOW 2 #define RIGHT 4 #define LEFT 8 -/* line types */ +// line types #define NOLINE 0 #define SOLID 1 #define DASH 2 @@ -75,7 +75,7 @@ class EZPlotCurve { #define DASH3 12 #define DASH4 13 -/* symbol definitions */ +// symbol definitions #define SB_CROSS 1 #define SB_PLUS 2 #define SB_BOX 3 @@ -83,7 +83,7 @@ class EZPlotCurve { #define SB_ERRORBAR 5 #define MAXSYMBOL 5 -#define INSIDE 1 /* values of o_legendbox */ +#define INSIDE 1 // values of o_legendbox #define OUTSIDE 2 #define NOLEGEND 3 @@ -111,87 +111,91 @@ class EZPlotCurve { *---------------------------------------------------------------------------*/ #include -using namespace std; -typedef vector::iterator EZPlotCurveIterator; -typedef vector::const_iterator EZPlotCurveConstIterator; +typedef std::vector::iterator EZPlotCurveIterator; +typedef std::vector::const_iterator EZPlotCurveConstIterator; class SGP; class EZPlot { private: - vector m_vecCurves; + std::vector m_vecCurves; // Colors - int clr_axis; /* color of all axis lines */ - int clr_title; /* color of main title */ - int clr_label; /* color of axis labels */ - int clr_legend; /* color of legend box */ - int clr_grid; /* color of grid lines */ - int clr_number; /* color of axis number labels */ + int clr_axis; // color of all axis lines + int clr_title; // color of main title + int clr_label; // color of axis labels + int clr_legend; // color of legend box + int clr_grid; // color of grid lines + int clr_number; // color of axis number labels // Options - double o_xporigin, o_yporigin; /* origin of plot frame in NDC */ - double o_xlength, o_ylength; /* length of plot frame in NDC */ + double o_xporigin, o_yporigin; // origin of plot frame in NDC + double o_xlength, o_ylength; // length of plot frame in NDC - string c_xlabel; /* label for x axis */ - string c_ylabel; /* label for y axis */ - string c_title; /* title to print above graph */ - string c_legend;; /* current legend specified */ + std::string c_xlabel; // label for x axis + std::string c_ylabel; // label for y axis + std::string c_title; // title to print above graph + std::string c_legend;; // current legend specified - int o_linestyle, o_color; /* style to use for curves all subsequent curves to EZPLOT */ - bool o_xaxis, o_yaxis; /* Specifies where axis & labels are drawn */ - bool o_grid; /* Flag to draw a grid at major ticks */ - bool o_box; /* Flag to draw a box around the graph */ + int o_linestyle, o_color; // style to use for curves all subsequent curves to EZPLOT + int o_xaxis, o_yaxis; // Specifies where axis & labels are drawn + bool o_grid; // Flag to draw a grid at major ticks + bool o_box; // Flag to draw a box around the graph - int o_xticks, o_yticks; /* direction to draw tick marks */ - bool o_xtlabel, o_ytlabel; /* TRUE if label tick marks */ + int o_xticks, o_yticks; // direction to draw tick marks + bool o_xtlabel, o_ytlabel; // TRUE if label tick marks - int o_xmajortick, o_ymajortick; /* number of major ticks to draw */ - int o_xminortick, o_yminortick; /* number of minor ticks between major ticks */ + int o_xmajortick, o_ymajortick; // number of major ticks to draw + int o_xminortick, o_yminortick; // number of minor ticks between major ticks - int o_symbol; /* Symbol type, (0 = no symbol) */ - int o_symfreq; /* frequency to draw symbols at curve points */ + int o_symbol; // Symbol type, (0 = no symbol) + int o_symfreq; // frequency to draw symbols at curve points - int o_legendbox; /* controls whether legend is inside or outside of the axis extents */ - int o_tag; /* controls whether to draw tag at end of axes */ + int o_legendbox; // controls whether legend is inside or outside of the axis extents + int o_tag; // controls whether to draw tag at end of axes // VALUE & SET variables - double v_xmin, v_xmax, v_ymin, v_ymax; /* user supplied axis endpoints */ - bool s_xmin, s_xmax, s_ymin, s_ymax; /* TRUE is endpoint has been set */ - double v_xtitle, v_ytitle; /* NDC position to plot title */ - bool s_xtitle, s_ytitle; /* TRUE if set position for title */ - double v_xcross, v_ycross; /* position that axes cross */ - bool s_xcross, s_ycross; /* TRUE if set axes cross position */ - double v_xlegend, v_ylegend; /* upper-left position of legend box in NDC */ - bool s_xlegend, s_ylegend; /* TRUE if set position of legend box */ - int v_lxfrac, v_lyfrac; /* number of digits to right of decimal place */ - bool s_lxfrac, s_lyfrac; /* TRUE if set number of fractional digits */ - double v_textsize; /* size of text in NDC */ - bool s_textsize; /* TRUE if user set size of text */ + double v_xmin, v_xmax, v_ymin, v_ymax; // user supplied axis endpoints + bool s_xmin, s_xmax, s_ymin, s_ymax; // TRUE is endpoint has been set + double v_xtitle, v_ytitle; // NDC position to plot title + bool s_xtitle, s_ytitle; // TRUE if set position for title + double v_xcross, v_ycross; // position that axes cross + bool s_xcross, s_ycross; // TRUE if set axes cross position + double v_xlegend, v_ylegend; // upper-left position of legend box in NDC + bool s_xlegend, s_ylegend; // TRUE if set position of legend box + int v_lxfrac, v_lyfrac; // number of digits to right of decimal place + bool s_lxfrac, s_lyfrac; // TRUE if set number of fractional digits + double v_textsize; // size of text in NDC + bool s_textsize; // TRUE if user set size of text // Global variables - double charheight; /* Height of characters in NDC */ - double charwidth; /* Height of characters in NDC */ - double xp_min, xp_max, yp_min, yp_max; /* boundry of plot frame in NDC */ - double xa_min, xa_max, ya_min, ya_max; /* extent of axes in NDC */ - double xgw_min, xgw_max, ygw_min, ygw_max; /* boundary of graph in input coords */ - double xgn_min, xgn_max, ygn_min, ygn_max; /* boundy of graph in NDC */ - double xt_min, xt_max, yt_min, yt_max; /* boundary of axis ticks */ - double xl_min, xl_max, yl_min, yl_max; /* boundary of legend box */ - double title_row; /* y-coord of title row */ - double xtl_ofs; /* Offset y-coord of x tick labels from axis */ - double ytl_ofs; /* Offset x-coord of y tick labels from axis */ - double xlbl_row; /* row of x label in world coord */ - double ylbl_col; /* column of y label in world coord */ - double xw_tickinc, yw_tickinc; /* increment between major ticks in WC */ - double xn_tickinc, yn_tickinc; /* increment between major ticks in NDC */ - int x_nint, y_nint; /* number of intervals along x & y axes */ - int x_fldwid, x_frac; /* numeric field sizes & number of digits */ - int y_fldwid, y_frac; /* in fraction of number, used for printf() */ - double xtl_wid, ytl_wid; /* length of ticks labels in NDC */ - double tl_height; /* height of tick labels in NDC */ - char x_numfmt[20]; /* format to print x tick labels */ - char y_numfmt[20]; /* format to print y tick labels */ + double charheight; // Height of characters in NDC + double charwidth; // Height of characters in NDC + double xp_min, xp_max, yp_min, yp_max; // boundry of plot frame in NDC + double xa_min, xa_max, ya_min, ya_max; // extent of axes in NDC + double xgw_min, xgw_max, ygw_min, ygw_max; // boundary of graph in input coords + double xgn_min, xgn_max, ygn_min, ygn_max; // boundy of graph in NDC + double xt_min, xt_max, yt_min, yt_max; // boundary of axis ticks + double xl_min, xl_max, yl_min, yl_max; // boundary of legend box + double title_row; // y-coord of title row + double xtl_ofs; // Offset y-coord of x tick labels from axis + double ytl_ofs; // Offset x-coord of y tick labels from axis + double xlbl_row; // row of x label in world coord + double ylbl_col; // column of y label in world coord + double xw_tickinc, yw_tickinc; // increment between major ticks in WC + double xn_tickinc, yn_tickinc; // increment between major ticks in NDC + int x_nint, y_nint; // number of intervals along x & y axes + int x_fldwid, x_frac; // numeric field sizes & number of digits + int y_fldwid, y_frac; // in fraction of number, used for printf() + double xtl_wid, ytl_wid; // length of ticks labels in NDC + double tl_height; // height of tick labels in NDC + char x_numfmt[20]; // format to print x tick labels + char y_numfmt[20]; // format to print y tick labels + + double m_dVP_xmin, m_dVP_ymin; + double m_dVP_xmax, m_dVP_ymax; + double m_dVP_xscale, m_dVP_yscale; + double m_xWorldScale, m_yWorldScale; void drawAxes(void); void symbol (int sym, double symwidth, double symheight); @@ -203,7 +207,7 @@ class EZPlot { void clearCurves (); bool ezcmd (char *comm); - int do_cmd(int lx); + bool do_cmd(int lx); void bad_option(char *opt); void initPlotSettings(); @@ -211,6 +215,12 @@ class EZPlot { static bool ezset_initialized; + double convertWorldToNDC_X (double x) + { return xgn_min + (x - xgw_min) * m_xWorldScale; } + + double convertWorldToNDC_Y (double y) + { return ygn_min + (y - ygw_min) * m_yWorldScale; } + public: EZPlot (SGP& sgp); ~EZPlot (); @@ -226,9 +236,9 @@ class EZPlot { void plot (); }; -/*----------------------------------------------------------------------*/ -/* Codes from LEX */ -/*----------------------------------------------------------------------*/ +//---------------------------------------------------------------------- +// Codes from LEX +//---------------------------------------------------------------------- #define S_DATA 2 #define S_HELP 3