r460: no message
[ctsim.git] / include / ezplot.h
index 6ad4b5b3b1e9901c813cf940390d4db6a5458bea..d605f92583e84d974ea416e2e4762d94f95e50bf 100644 (file)
@@ -5,9 +5,9 @@
 **         Purpose: Header file for EZplot library
 **
 **  This is part of the CTSim program
-**  Copyright (C) 1983-2000 Kevin Rosenberg
+**  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: ezplot.h,v 1.20 2000/12/23 18:12:35 kevin Exp $
+**  $Id: ezplot.h,v 1.25 2001/01/28 19:10:18 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
@@ -33,6 +33,7 @@
 #include <stddef.h>
 #include "ctsupport.h"
 #include "sgp.h"
+#include "pol.h"
 
 
 class EZPlotCurve {
@@ -40,13 +41,8 @@ public:
   double *x;
   double *y;
   int m_iPointCount;
-  int m_iLineStyle;
-  int m_iSymbol;
-  int m_iSymbolFreq;
-  int m_iColor;
-  std::string m_sLegend;
   
-  EZPlotCurve (const double* x, const double* y, int n, int color, int linestyle, int symbol, int sumbolFreq, const std::string& legend);
+  EZPlotCurve (const double* x, const double* y, int n);
   
   ~EZPlotCurve();
 };
@@ -56,21 +52,21 @@ public:
 //----------------------------------------------------------------------
 
 // axis definitions 
-enum {\r
+enum {
   LINEAR =     1,              // linear axis 
   LOG,         // logrithmic axis 
-  NOAXIS,      // don't plot axis \r
+  NOAXIS,      // don't plot axis 
 };
 
 // tick definitions 
-enum {\r
+enum {
   ABOVE = 1,
  BELOW,
  RIGHT,
- LEFT,\r
+ LEFT,
 };
 
-// line types \r
+// line types 
 enum {
  NOLINE =      0,
  SOLID,
@@ -78,31 +74,31 @@ enum {
  DASH1,
  DASH2,
  DASH3,
- DASH4,\r
-};\r
+ DASH4,
+};
 
 // symbol definitions 
-enum {\r
+enum {
  SB_CROSS = 1,
  SB_PLUS,
  SB_BOX,
  SB_CIRCLE,
  SB_ERRORBAR,
- MAXSYMBOL,\r
+ MAXSYMBOL,
 };
 
-enum {\r
+enum {
  INSIDE = 1,           // values of o_legendbox 
  OUTSIDE,
- NOLEGEND,\r
-};\r
-\r
+ NOLEGEND,
+};
+
+
+struct KeywordCodeTable {
+  char* keyword;
+  int code;
+};
 
-struct KeywordCodeTable {\r
-  char* keyword;\r
-  int code;\r
-};\r
-\r
 /*-----------------------------------------------------------------------------
 *                              GLOBAL VARIABLES
 *
@@ -142,13 +138,14 @@ private:
     S_DATA = 2,
       S_HELP,
       S_EXIT,
+      S_CURVE,
       S_SOLID,
       S_DASH,      
       S_NOLINE,
       S_BLACK,
       S_RED,
       S_GREEN,
-      S_BLUE,\r
+      S_BLUE,
       S_SYMBOL,
       S_PEN,
       S_EVERY,
@@ -210,12 +207,37 @@ private:
       S_TAG,
       S_TEXTSIZE,
   };
-  \r
-  static const struct KeywordCodeTable m_sKeywords[];\r
-  static const int NKEYS;\r
   
-  std::vector<class EZPlotCurve*> m_vecCurves;
+  static const struct KeywordCodeTable m_sKeywords[];
+  static const int NKEYS;
   
+  std::vector<class EZPlotCurve*> m_vecCurves;
+  std::vector<int> m_veciColor;
+  std::vector<bool> m_vecbColorSet;
+  std::vector<int> m_veciSymbol;
+  std::vector<bool> m_vecbSymbolSet;
+  std::vector<int> m_veciSymbolFreq;
+  std::vector<bool> m_vecbSymbolFreqSet;
+  std::vector<int> m_veciLinestyle;
+  std::vector<bool> m_vecbLinestyleSet;
+  std::vector<std::string> m_vecsLegend;
+  std::vector<bool> m_vecbLegendSet;
+
+  int getColor (unsigned int iCurve) const;
+  int getSymbol (unsigned int iCurve) const;
+  const std::string* getLegend (unsigned int iCurve) const;
+  int getSymbolFreq (unsigned int iCurve) const;
+  int getLinestyle (unsigned int iCurve) const;
+
+  void setColor (unsigned int iCurve, int iColor);
+  void setSymbol (unsigned int iCurve, int iSymbol);
+  void setSymbolFreq (unsigned int iCurve, int iSymbolFreq);
+  void setLinestyle (unsigned int iCurve, int iLinestyle);
+  void setLegend (unsigned int iCurve, const std::string& strLegend);
+  void setLegend (unsigned int iCurve, const char* const pszLegend);
+
+  int m_iCurrentCurve;
+
   // Colors
   int clr_axis;                        // color of all axis lines 
   int clr_title;                       // color of main title 
@@ -231,7 +253,6 @@ private:
   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 
   int o_xaxis, o_yaxis;                // Specifies where axis & labels are drawn 
@@ -293,24 +314,23 @@ private:
   double m_dVP_xscale, m_dVP_yscale;
   double m_xWorldScale, m_yWorldScale;
   
-  void drawAxes(void);
+  void drawAxes();
   void symbol (int sym, double symwidth, double symheight);
   void make_numfmt(char *fmtstr, int *fldwid, int *nfrac, double min, double max, int nint);
   int axis_scale (double min, double max, int nint, double *minp, double *maxp, int *nintp);
   
-  SGP& rSGP;
+  SGP* m_pSGP;
+  POL m_pol;
   
   void clearCurves ();
   
-  bool ezcmd (const char const *comm);\r
+  bool ezcmd (const char* const comm);
   bool do_cmd(int lx);
   void bad_option(char *opt);
   void initPlotSettings();
   
-  static void initkw(void);
-  
-  static bool ezset_initialized;
-  
+  void initKeywords ();
+   
   double convertWorldToNDC_X (double x)
   { return xgn_min + (x - xgw_min) * m_xWorldScale; }
   
@@ -318,11 +338,11 @@ private:
   { return ygn_min + (y - ygw_min) * m_yWorldScale; }
   
  public:
-   EZPlot (SGP& sgp);
+   EZPlot ();
    ~EZPlot ();
    
-   bool ezset (const std::string& command);\r
-   bool ezset (const char const *command);
+   bool ezset (const std::string& command);
+   bool ezset (const char* const command);
    
    void addCurve (const float* x, const double* y, int num);
    void addCurve (const double* x, const float* y, int num);
@@ -330,7 +350,7 @@ private:
    void addCurve (const double* y, int n);
    void addCurve (const float* y, int n);
    
-   void plot ();
+   void plot (SGP* pSGP);
 };     
 
 #endif