00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PLOT_RESCALER_H
00011 #define QWT_PLOT_RESCALER_H 1
00012
00013 #include "qwt_global.h"
00014 #include "qwt_interval.h"
00015 #include "qwt_plot.h"
00016 #include <qobject.h>
00017
00018 class QwtPlotCanvas;
00019 class QwtPlot;
00020 class QResizeEvent;
00021
00029 class QWT_EXPORT QwtPlotRescaler: public QObject
00030 {
00031 public:
00054 enum RescalePolicy
00055 {
00056 Fixed,
00057 Expanding,
00058 Fitting
00059 };
00060
00074 enum ExpandingDirection
00075 {
00076 ExpandUp,
00077 ExpandDown,
00078 ExpandBoth
00079 };
00080
00081 explicit QwtPlotRescaler( QwtPlotCanvas *,
00082 int referenceAxis = QwtPlot::xBottom,
00083 RescalePolicy = Expanding );
00084
00085 virtual ~QwtPlotRescaler();
00086
00087 void setEnabled( bool );
00088 bool isEnabled() const;
00089
00090 void setRescalePolicy( RescalePolicy );
00091 RescalePolicy rescalePolicy() const;
00092
00093 void setExpandingDirection( ExpandingDirection );
00094 void setExpandingDirection( int axis, ExpandingDirection );
00095 ExpandingDirection expandingDirection( int axis ) const;
00096
00097 void setReferenceAxis( int axis );
00098 int referenceAxis() const;
00099
00100 void setAspectRatio( double ratio );
00101 void setAspectRatio( int axis, double ratio );
00102 double aspectRatio( int axis ) const;
00103
00104 void setIntervalHint( int axis, const QwtInterval& );
00105 QwtInterval intervalHint( int axis ) const;
00106
00107 QwtPlotCanvas *canvas();
00108 const QwtPlotCanvas *canvas() const;
00109
00110 QwtPlot *plot();
00111 const QwtPlot *plot() const;
00112
00113 virtual bool eventFilter( QObject *, QEvent * );
00114
00115 void rescale() const;
00116
00117 protected:
00118 virtual void canvasResizeEvent( QResizeEvent * );
00119
00120 virtual void rescale( const QSize &oldSize, const QSize &newSize ) const;
00121 virtual QwtInterval expandScale(
00122 int axis, const QSize &oldSize, const QSize &newSize ) const;
00123
00124 virtual QwtInterval syncScale(
00125 int axis, const QwtInterval& reference,
00126 const QSize &size ) const;
00127
00128 virtual void updateScales(
00129 QwtInterval intervals[QwtPlot::axisCnt] ) const;
00130
00131 Qt::Orientation orientation( int axis ) const;
00132 QwtInterval interval( int axis ) const;
00133 QwtInterval expandInterval( const QwtInterval &,
00134 double width, ExpandingDirection ) const;
00135
00136 private:
00137 double pixelDist( int axis, const QSize & ) const;
00138
00139 class AxisData;
00140 class PrivateData;
00141 PrivateData *d_data;
00142 };
00143
00144 #endif