00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00034 #ifndef ACADO_TOOLKIT_PLOT_WINDOW_SUBPLOT_HPP
00035 #define ACADO_TOOLKIT_PLOT_WINDOW_SUBPLOT_HPP
00036
00037
00038 #include <acado/utils/acado_utils.hpp>
00039 #include <acado/matrix_vector/matrix_vector.hpp>
00040 #include <acado/symbolic_expression/symbolic_expression.hpp>
00041
00042 BEGIN_NAMESPACE_ACADO
00043
00044 class Curve;
00045
00065 class PlotWindowSubplot
00066 {
00067 friend class GnuplotWindow;
00068
00069
00070
00071
00072 public:
00074 PlotWindowSubplot( );
00075
00089 PlotWindowSubplot( const Expression& _expression,
00090 const char* const _title = "",
00091 const char* const _xLabel = "",
00092 const char* const _yLabel = "",
00093 PlotMode _plotMode = PM_UNKNOWN,
00094 double _xRangeLowerLimit = INFTY,
00095 double _xRangeUpperLimit = INFTY,
00096 double _yRangeLowerLimit = INFTY,
00097 double _yRangeUpperLimit = INFTY
00098 );
00099
00114 PlotWindowSubplot( const Expression& _expressionX,
00115 const Expression& _expressionY,
00116 const char* const _title = "",
00117 const char* const _xLabel = "",
00118 const char* const _yLabel = "",
00119 PlotMode _plotMode = PM_UNKNOWN,
00120 double _xRangeLowerLimit = INFTY,
00121 double _xRangeUpperLimit = INFTY,
00122 double _yRangeLowerLimit = INFTY,
00123 double _yRangeUpperLimit = INFTY
00124 );
00125
00139 PlotWindowSubplot( PlotName _name,
00140 const char* const _title = "",
00141 const char* const _xLabel = "",
00142 const char* const _yLabel = "",
00143 PlotMode _plotMode = PM_UNKNOWN,
00144 double _xRangeLowerLimit = INFTY,
00145 double _xRangeUpperLimit = INFTY,
00146 double _yRangeLowerLimit = INFTY,
00147 double _yRangeUpperLimit = INFTY
00148 );
00149
00163 PlotWindowSubplot( const VariablesGrid& _plotVariable,
00164 const char* const _title = "",
00165 const char* const _xLabel = "",
00166 const char* const _yLabel = "",
00167 PlotMode _plotMode = PM_UNKNOWN,
00168 double _xRangeLowerLimit = INFTY,
00169 double _xRangeUpperLimit = INFTY,
00170 double _yRangeLowerLimit = INFTY,
00171 double _yRangeUpperLimit = INFTY,
00172 BooleanType _plot3D = BT_FALSE
00173 );
00174
00176 PlotWindowSubplot( const Curve& _curve,
00177 double _xRangeLowerLimit = 0.0,
00178 double _xRangeUpperLimit = 1.0,
00179 const char* const _title = "",
00180 const char* const _xLabel = "",
00181 const char* const _yLabel = "",
00182 PlotMode _plotMode = PM_UNKNOWN,
00183 double _yRangeLowerLimit = INFTY,
00184 double _yRangeUpperLimit = INFTY
00185 );
00186
00191 PlotWindowSubplot( const PlotWindowSubplot& rhs
00192 );
00193
00195 ~PlotWindowSubplot( );
00196
00201 PlotWindowSubplot& operator=( const PlotWindowSubplot& rhs
00202 );
00203
00204
00211 inline returnValue setTitle( const std::string& _title
00212 );
00213
00220 inline returnValue setXLabel( const std::string& _xLabel
00221 );
00222
00229 inline returnValue setYLabel( const std::string& _yLabel
00230 );
00231
00238 inline returnValue setPlotMode( PlotMode _plotMode
00239 );
00240
00247 inline returnValue setPlotFormat( PlotFormat _plotFormat
00248 );
00249
00260 inline returnValue setRanges( double _xRangeLowerLimit,
00261 double _xRangeUpperLimit,
00262 double _yRangeLowerLimit,
00263 double _yRangeUpperLimit
00264 );
00265
00272 returnValue addLine( double _lineValue
00273 );
00274
00281 returnValue addData( const VariablesGrid& _newData
00282 );
00283
00284
00291 inline returnValue getTitle( std::string& _title
00292 );
00293
00300 inline returnValue getXLabel( std::string& _xLabel
00301 );
00302
00309 inline returnValue getYLabel( std::string& _yLabel
00310 );
00311
00316 inline PlotMode getPlotMode( ) const;
00317
00322 inline PlotFormat getPlotFormat( ) const;
00323
00333 inline returnValue getRanges( double& _xRangeLowerLimit,
00334 double& _xRangeUpperLimit,
00335 double& _yRangeLowerLimit,
00336 double& _yRangeUpperLimit
00337 ) const;
00338
00343 inline uint getNumLines( ) const;
00344
00349 inline uint getNumData( ) const;
00350
00351
00356 inline SubPlotType getSubPlotType( ) const;
00357
00362 inline VariableType getXVariableType( ) const;
00363
00368 inline VariableType getYVariableType( ) const;
00369
00374 inline Expression* getXPlotExpression( ) const;
00375
00380 inline Expression* getYPlotExpression( ) const;
00381
00386 inline PlotName getPlotEnum( ) const;
00387
00388
00395 inline returnValue setNext( PlotWindowSubplot* const _next
00396 );
00397
00402 inline PlotWindowSubplot* getNext( ) const;
00403
00404
00405
00406
00407
00408 protected:
00409
00410
00411
00412
00413
00414 protected:
00415
00416 Expression* plotVariableX;
00417 Expression* plotVariableY;
00418 VariablesGrid* plotVariablesGrid;
00419 Expression* plotExpressionX;
00420 Expression* plotExpressionY;
00421 PlotName plotEnum;
00423 std::string title;
00424 std::string xLabel;
00425 std::string yLabel;
00427 PlotMode plotMode;
00428 PlotFormat plotFormat;
00430 double xRangeLowerLimit;
00431 double xRangeUpperLimit;
00432 double yRangeLowerLimit;
00433 double yRangeUpperLimit;
00435 BooleanType plot3D;
00437 uint nLines;
00438 double* lineValues;
00440 uint nData;
00441 VariablesGrid** data;
00443 PlotWindowSubplot* next;
00444 };
00445
00446
00447 CLOSE_NAMESPACE_ACADO
00448
00449
00450
00451 #include <acado/user_interaction/plot_window_subplot.ipp>
00452
00453
00454 #endif // ACADO_TOOLKIT_PLOT_WINDOW_SUBPLOT_HPP
00455
00456
00457
00458
00459