Qwt User's Guide 5.2.2

qwt_plot_rescaler.h

00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
00008  *****************************************************************************/
00009 
00010 #ifndef QWT_PLOT_RESCALER_H
00011 #define QWT_PLOT_RESCALER_H 1
00012 
00013 #include "qwt_global.h"
00014 #include "qwt_double_rect.h"
00015 #include "qwt_double_interval.h"
00016 #include "qwt_plot.h"
00017 #include <qobject.h>
00018 
00019 class QwtPlotCanvas;
00020 class QResizeEvent;
00021 
00029 class QWT_EXPORT QwtPlotRescaler: public QObject
00030 {
00031 public:
00058     enum RescalePolicy
00059     {
00060         Fixed,
00061         Expanding,
00062         Fitting
00063     };
00064 
00065     enum ExpandingDirection
00066     {
00067         ExpandUp,
00068         ExpandDown,
00069         ExpandBoth
00070     };
00071 
00072     explicit QwtPlotRescaler(QwtPlotCanvas *, 
00073         int referenceAxis = QwtPlot::xBottom, 
00074         RescalePolicy = Expanding );
00075 
00076     virtual ~QwtPlotRescaler();
00077 
00078     void setEnabled(bool);
00079     bool isEnabled() const;
00080 
00081     void setRescalePolicy(RescalePolicy);
00082     RescalePolicy rescalePolicy() const;
00083 
00084     void setExpandingDirection(ExpandingDirection);
00085     void setExpandingDirection(int axis, ExpandingDirection);
00086     ExpandingDirection expandingDirection(int axis) const;
00087 
00088     void setReferenceAxis(int axis);
00089     int referenceAxis() const;
00090 
00091     void setAspectRatio(double ratio);
00092     void setAspectRatio(int axis, double ratio);
00093     double aspectRatio(int axis) const;
00094 
00095     void setIntervalHint(int axis, const QwtDoubleInterval&);
00096     QwtDoubleInterval intervalHint(int axis) const;
00097 
00098     QwtPlotCanvas *canvas();
00099     const QwtPlotCanvas *canvas() const;
00100 
00101     QwtPlot *plot();
00102     const QwtPlot *plot() const;
00103 
00104     virtual bool eventFilter(QObject *, QEvent *);
00105 
00106     void rescale() const;
00107 
00108 protected:
00109     virtual void canvasResizeEvent(QResizeEvent *);
00110 
00111     virtual void rescale(const QSize &oldSize, const QSize &newSize) const;
00112     virtual QwtDoubleInterval expandScale( int axis, 
00113         const QSize &oldSize, const QSize &newSize) const;
00114  
00115     virtual QwtDoubleInterval syncScale(
00116         int axis, const QwtDoubleInterval& reference,
00117         const QSize &size) const; 
00118 
00119     virtual void updateScales(
00120         QwtDoubleInterval intervals[QwtPlot::axisCnt]) const;
00121 
00122     Qt::Orientation orientation(int axis) const;
00123     QwtDoubleInterval interval(int axis) const;
00124     QwtDoubleInterval expandInterval(const QwtDoubleInterval &, 
00125         double width, ExpandingDirection) const;
00126 
00127 private:
00128     double pixelDist(int axis, const QSize &) const;
00129 
00130     class AxisData;
00131     class PrivateData;
00132     PrivateData *d_data;
00133 };
00134 
00135 #endif