diff options
Diffstat (limited to 'src/libpcp_qwt/src/qwt_plot_zoomer.h')
-rw-r--r-- | src/libpcp_qwt/src/qwt_plot_zoomer.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/libpcp_qwt/src/qwt_plot_zoomer.h b/src/libpcp_qwt/src/qwt_plot_zoomer.h new file mode 100644 index 0000000..84e23c7 --- /dev/null +++ b/src/libpcp_qwt/src/qwt_plot_zoomer.h @@ -0,0 +1,104 @@ +/* -*- 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_ZOOMER_H +#define QWT_PLOT_ZOOMER_H + +#include "qwt_global.h" +#include "qwt_plot_picker.h" +#include <qstack.h> + +/*! + \brief QwtPlotZoomer provides stacked zooming for a plot widget + + QwtPlotZoomer offers rubberband selections on the plot canvas, + translating the selected rectangles into plot coordinates and + adjusting the axes to them. Zooming can repeated as often as + possible, limited only by maxStackDepth() or minZoomSize(). + Each rectangle is pushed on a stack. + + Zoom rectangles can be selected depending on selectionFlags() using the + mouse or keyboard (QwtEventPattern, QwtPickerMachine). + QwtEventPattern::MouseSelect3,QwtEventPattern::KeyUndo, + or QwtEventPattern::MouseSelect6,QwtEventPattern::KeyRedo + walk up and down the zoom stack. + QwtEventPattern::MouseSelect2 or QwtEventPattern::KeyHome unzoom to + the initial size. + + QwtPlotZoomer is tailored for plots with one x and y axis, but it is + allowed to attach a second QwtPlotZoomer for the other axes. + + \note The realtime example includes an derived zoomer class that adds + scrollbars to the plot canvas. +*/ + +class QWT_EXPORT QwtPlotZoomer: public QwtPlotPicker +{ + Q_OBJECT +public: + explicit QwtPlotZoomer( QwtPlotCanvas *, bool doReplot = true ); + explicit QwtPlotZoomer( int xAxis, int yAxis, + QwtPlotCanvas *, bool doReplot = true ); + + virtual ~QwtPlotZoomer(); + + virtual void setZoomBase( bool doReplot = true ); + virtual void setZoomBase( const QRectF & ); + + QRectF zoomBase() const; + QRectF zoomRect() const; + + virtual void setAxis( int xAxis, int yAxis ); + + void setMaxStackDepth( int ); + int maxStackDepth() const; + + const QStack<QRectF> &zoomStack() const; + void setZoomStack( const QStack<QRectF> &, + int zoomRectIndex = -1 ); + + uint zoomRectIndex() const; + +public Q_SLOTS: + void moveBy( double x, double y ); + virtual void moveTo( const QPointF & ); + + virtual void zoom( const QRectF & ); + virtual void zoom( int up ); + +Q_SIGNALS: + /*! + A signal emitting the zoomRect(), when the plot has been + zoomed in or out. + + \param rect Current zoom rectangle. + */ + + void zoomed( const QRectF &rect ); + +protected: + virtual void rescale(); + + virtual QSizeF minZoomSize() const; + + virtual void widgetMouseReleaseEvent( QMouseEvent * ); + virtual void widgetKeyPressEvent( QKeyEvent * ); + + virtual void begin(); + virtual bool end( bool ok = true ); + virtual bool accept( QPolygon & ) const; + +private: + void init( bool doReplot ); + + class PrivateData; + PrivateData *d_data; +}; + +#endif |