r261: Use explicit std:: namespace
[ctsim.git] / include / ezplot.h
index 716fd3e2b361c8946448a7ecb5ea12d5edcbac6c..31291bd617872d2b6c7c77313515fdb08306ff6c 100644 (file)
@@ -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
 #ifndef __H_EZPLOT
 #define __H_EZPLOT
 
-#include <stdio.h>
+#include <cstdio>
+#include <cctype>
+#include <cmath>
 #include <stddef.h>
-#include <ctype.h>
-#include <math.h>
 #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 <vector>
-using namespace std;
 
-typedef vector<EZPlotCurve*>::iterator EZPlotCurveIterator;
-typedef vector<EZPlotCurve*>::const_iterator EZPlotCurveConstIterator;
+typedef std::vector<EZPlotCurve*>::iterator EZPlotCurveIterator;
+typedef std::vector<EZPlotCurve*>::const_iterator EZPlotCurveConstIterator;
 
 class SGP;
 class EZPlot {
  private:
-    vector<class EZPlotCurve*> m_vecCurves;
+        std::vector<class EZPlotCurve*> 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