123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997 Josef Wilgen
- * Copyright (C) 2002 Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
- #ifndef QWT_PLOT_RESCALER_H
- #define QWT_PLOT_RESCALER_H 1
- #include "qwt_global.h"
- #include "qwt_interval.h"
- #include "qwt_plot.h"
- #include <qobject.h>
- class QwtPlot;
- class QResizeEvent;
- /*!
- \brief QwtPlotRescaler takes care of fixed aspect ratios for plot scales
- QwtPlotRescaler auto adjusts the axes of a QwtPlot according
- to fixed aspect ratios.
- */
- class QWT_EXPORT QwtPlotRescaler: public QObject
- {
- public:
- /*!
- The rescale policy defines how to rescale the reference axis and
- their depending axes.
- \sa ExpandingDirection, setIntervalHint()
- */
- enum RescalePolicy
- {
- /*!
- The interval of the reference axis remains unchanged, when the
- geometry of the canvas changes. All other axes
- will be adjusted according to their aspect ratio.
- */
- Fixed,
- /*!
- The interval of the reference axis will be shrunk/expanded,
- when the geometry of the canvas changes. All other axes
- will be adjusted according to their aspect ratio.
- The interval, that is represented by one pixel is fixed.
- */
- Expanding,
- /*!
- The intervals of the axes are calculated, so that all axes include
- their interval hint.
- */
- Fitting
- };
- /*!
- When rescalePolicy() is set to Expanding its direction depends
- on ExpandingDirection
- */
- enum ExpandingDirection
- {
- //! The upper limit of the scale is adjusted
- ExpandUp,
- //! The lower limit of the scale is adjusted
- ExpandDown,
- //! Both limits of the scale are adjusted
- ExpandBoth
- };
- explicit QwtPlotRescaler( QWidget *canvas,
- int referenceAxis = QwtPlot::xBottom,
- RescalePolicy = Expanding );
- virtual ~QwtPlotRescaler();
- void setEnabled( bool );
- bool isEnabled() const;
- void setRescalePolicy( RescalePolicy );
- RescalePolicy rescalePolicy() const;
- void setExpandingDirection( ExpandingDirection );
- void setExpandingDirection( int axis, ExpandingDirection );
- ExpandingDirection expandingDirection( int axis ) const;
- void setReferenceAxis( int axis );
- int referenceAxis() const;
- void setAspectRatio( double ratio );
- void setAspectRatio( int axis, double ratio );
- double aspectRatio( int axis ) const;
- void setIntervalHint( int axis, const QwtInterval& );
- QwtInterval intervalHint( int axis ) const;
- QWidget *canvas();
- const QWidget *canvas() const;
- QwtPlot *plot();
- const QwtPlot *plot() const;
- virtual bool eventFilter( QObject *, QEvent * );
- void rescale() const;
- protected:
- virtual void canvasResizeEvent( QResizeEvent * );
- virtual void rescale( const QSize &oldSize, const QSize &newSize ) const;
- virtual QwtInterval expandScale(
- int axis, const QSize &oldSize, const QSize &newSize ) const;
- virtual QwtInterval syncScale(
- int axis, const QwtInterval& reference,
- const QSize &size ) const;
- virtual void updateScales(
- QwtInterval intervals[QwtPlot::axisCnt] ) const;
- Qt::Orientation orientation( int axis ) const;
- QwtInterval interval( int axis ) const;
- QwtInterval expandInterval( const QwtInterval &,
- double width, ExpandingDirection ) const;
- private:
- double pixelDist( int axis, const QSize & ) const;
- class AxisData;
- class PrivateData;
- PrivateData *d_data;
- };
- #endif
|