Skip to content
Snippets Groups Projects
ScrollZoomer.h 1.76 KiB
Newer Older
  • Learn to ignore specific revisions
  • pixhawk's avatar
    pixhawk committed
    #ifndef _SCROLLZOOMER_H
    #define _SCROLLZOOMER_H
    
    #include <qglobal.h>
    #if QT_VERSION < 0x040000
    #include <qscrollview.h>
    #endif
    #include <qwt_plot_zoomer.h>
    
    #include <qwt_plot_canvas.h>
    
    pixhawk's avatar
    pixhawk committed
    
    class ScrollData;
    class ScrollBar;
    
    class ScrollZoomer: public QwtPlotZoomer
    {
        Q_OBJECT
    public:
    
        enum ScrollBarPosition {
    
    pixhawk's avatar
    pixhawk committed
            AttachedToScale,
            OppositeToScale
        };
    
        ScrollZoomer(QwtPlotCanvas *);
        virtual ~ScrollZoomer();
    
        ScrollBar *horizontalScrollBar() const;
        ScrollBar *verticalScrollBar() const;
    
    #if QT_VERSION < 0x040000
        void setHScrollBarMode(QScrollView::ScrollBarMode);
        void setVScrollBarMode(QScrollView::ScrollBarMode);
    
        QScrollView::ScrollBarMode vScrollBarMode () const;
        QScrollView::ScrollBarMode hScrollBarMode () const;
    #else
        void setHScrollBarMode(Qt::ScrollBarPolicy);
        void setVScrollBarMode(Qt::ScrollBarPolicy);
    
        Qt::ScrollBarPolicy vScrollBarMode () const;
        Qt::ScrollBarPolicy hScrollBarMode () const;
    #endif
    
        void setHScrollBarPosition(ScrollBarPosition);
        void setVScrollBarPosition(ScrollBarPosition);
    
        ScrollBarPosition hScrollBarPosition() const;
        ScrollBarPosition vScrollBarPosition() const;
    
        QWidget* cornerWidget() const;
    
        virtual void setCornerWidget(QWidget *);
    
    
    pixhawk's avatar
    pixhawk committed
        virtual bool eventFilter(QObject *, QEvent *);
    
        virtual void rescale();
    
    protected:
        virtual ScrollBar *scrollBar(Qt::Orientation);
        virtual void updateScrollBars();
        virtual void layoutScrollBars(const QRect &);
    
    private slots:
        void scrollBarMoved(Qt::Orientation o, double min, double max);
    
    private:
        bool needScrollBar(Qt::Orientation) const;
        int oppositeAxis(int) const;
    
        QWidget *d_cornerWidget;
    
        ScrollData *d_hScrollData;
        ScrollData *d_vScrollData;
    
        bool d_inZoom;
    };
    
    pixhawk's avatar
    pixhawk committed
    #endif