MultivariatePlot.h

00001 #ifndef _MultivariatePlot_h
00002 #define _MultivariatePlot_h
00003 
00007 #include "../UnivariateFunction.h"
00008 #include "IntervalCountLimiter.h"
00009 #include "PlotControl.h"
00010 
00011 class MultivariatePlot
00012     : public PlotControl
00013 {
00014 public:
00015     enum ToolType
00016     {
00017         PAN,
00018         ZOOM_IN,
00019         ZOOM_OUT
00020     };
00021 
00022     MultivariatePlot(
00023         wxWindow*                   pParent,
00024         wxWindowID                  id,
00025         const FunctionBase&         function,
00026         const VariableNames&        variables,
00027         PlotStatus*                 pPlotStatus = NULL,
00028         const wxPoint&              position = wxDefaultPosition,
00029         const wxSize&               size = wxDefaultSize);
00030 
00031     ~MultivariatePlot();
00032 
00033     bool            KeepAspectRatio() const;
00034     bool&           rKeepAspectRatio();
00035 
00036     const VariableNames&    Variables() const;
00037     int             VariableXIndex() const;
00038     int             VariableYIndex() const;
00039 
00040     void            SetVariables(int variableXIndex, int variableYIndex);
00041 
00042     virtual void    OnAspectChange(bool redraw);
00043 protected:
00044 
00045     virtual void    DrawDisplaced(long x, long y);
00046 
00047     virtual void    Pan(wxCoord x, wxCoord y);
00048 
00049     virtual void    ZoomIn(wxCoord x, wxCoord y);
00050     virtual void    ZoomRegionIn(wxCoord x,
00051                                  wxCoord y,
00052                                  wxCoord width,
00053                                  wxCoord height);
00054     virtual void    ZoomOut(wxCoord x, wxCoord y);
00055 
00056     virtual void    UpdateStatusOnMove(long x, long y);
00057 
00058     virtual void    UpdateScale();
00059 
00060 private:
00061 
00062 
00063     void            EnforceAspectRatio();
00064 
00065     void            FitToWidth(double& rStart, double& rEnd, double newWidth)
00066                         const;
00067 
00068 
00070     int                     mVariableXIndex;
00072     int                     mVariableYIndex;
00073     const VariableNames&    mVariables; 
00074 
00075     bool                    mKeepAspectRatio;   
00076 };
00077 
00078 #endif

Wygenerowano Fri Sep 29 21:04:49 2006 dla EduOptim2 programem  doxygen 1.4.6