00001 //-----------------------------------------------------------------------------
00002 //
00003 // File: TxPlotData.h
00004 //
00005 // Purpose: Interface for a class that holds data for a plot
00006 //
00007 // Version: $Id: TxPlotData.h,v 1.1 2001/09/21 21:35:29 kgl Exp $
00008 //
00009 // Copyright 1997-2000, Tech-X Corporation
00010 //
00011 //-----------------------------------------------------------------------------
00012
00013 #ifndef TX_PLOT_DATA_H
00014 #define TX_PLOT_DATA_H
00015
00016 // unix includes
00017 #include <assert.h>
00018 #include <iostream.h>
00019
00020 // txmath includes
00021 #include <TxAttributeSet.h>
00022
00047 // class TxPlotData : public TxDataSet {
00048 class TxPlotData : public TxAttributeSet {
00049
00050 public:
00051
00055 TxPlotData();
00056
00063 TxPlotData(int nr, int nc);
00064
00068 virtual ~TxPlotData();
00069
00075 virtual TXSTD::string getClassID() const { return "TxPlotData";}
00076
00080 virtual void restart();
00081
00087 int getComplete(){ return completed;}
00088
00094 //virtual int read(istream& istr);
00095
00101 // virtual int write(ostream& ostr) const;
00102
00106 virtual void paramsChanged();
00107
00111 virtual void optionsChanged();
00112
00116 virtual void stringsChanged();
00117
00123 virtual int moreData()=0;
00124
00128 virtual void calcLims()=0;
00129
00135 virtual int getNumPlots() const =0;
00136
00142 virtual const TXSTD::string getTitle(int) const =0;
00143
00149 virtual const TXSTD::string getXLabel(int) const =0;
00150
00158 virtual double getXMin(int i) const = 0;
00159
00161 virtual double getXMinPlot(int) const =0;
00162
00164 virtual double getXMax(int) const =0;
00165
00167 virtual double getXMaxPlot(int) const =0;
00168
00170 virtual const TXSTD::string getYLabel(int) const =0;
00171
00173 virtual double getYMin(int) const =0;
00174
00176 virtual double getYMinPlot(int) const =0;
00177
00179 virtual double getYMax(int) const =0;
00180
00182 virtual double getYMaxPlot(int) const =0;
00183
00185 int getMaxNumRows() const { return maxNumRows;}
00186
00188 int getMaxNumColumns() const { return maxNumCols;}
00189
00191 int getNumRows() const { return numRows;}
00192
00194 int getNumColumns() const { return numCols;}
00195
00197 double getData(int i, int j) const { return data[i*maxNumCols+j];}
00198
00200 const double* getDataPtr(int i, int j) const {
00201 // cerr << "DataPtr: accessing i = " << i << ", j = " << j << endl;
00202 return &data[i*maxNumCols+j];
00203 }
00204
00205 protected:
00206
00210 void setComplete(int iflag=1) {
00211 completed = iflag;
00212 }
00213
00215 void setMaxNumRows(int);
00216
00218 void setMaxNumColumns(int);
00219
00221 void setNumRows(int);
00222
00224 void setNumColumns(int);
00225
00227 double& getDataRef(int i, int j) const { return data[i*maxNumCols+j];}
00228
00230 void setData(int, int, double);
00231
00233 void setRow(int i, double*);
00234
00238 void setRow(int, double*, int, int);
00239
00241 void appendRow(double* d) {
00242 setRow(getNumRows(), d);
00243 numRows++;
00244 }
00245
00247 void setColumn(int i, double*);
00248
00257 void setColumn(int i, double* dptr, int rmn, int rmx);
00258
00264 void appendColumn(double* d) {
00265 setColumn(getNumColumns(), d);
00266 numCols++;
00267 }
00268
00269 private:
00270
00274 TxPlotData(TxPlotData&);
00275
00279 const TxPlotData& operator=(const TxPlotData&);
00280
00283 static double chgMemRatio;
00284
00286 int size;
00287
00289 int maxNumRows;
00290
00292 int maxNumCols;
00293
00295 double* data;
00296
00298 int numRows;
00299
00302 int numCols;
00303
00305 int completed;
00306
00308 static double version;
00309
00310 };
00311
00312 #endif // TX_PLOT_DATA_H
Copyright Tech-X Corporation, all rights reserved.