Classes | Public Member Functions | Protected Member Functions

QwtPlotMagnifier Class Reference

QwtPlotMagnifier provides zooming, by magnifying in steps. More...

#include <qwt_plot_magnifier.h>

Inheritance diagram for QwtPlotMagnifier:
Inheritance graph
[legend]
Collaboration diagram for QwtPlotMagnifier:
Collaboration graph
[legend]

List of all members.

Classes

class  PrivateData

Public Member Functions

 QwtPlotMagnifier (QwtPlotCanvas *)
virtual ~QwtPlotMagnifier ()
 Destructor.
void setAxisEnabled (int axis, bool on)
 En/Disable an axis.
bool isAxisEnabled (int axis) const
QwtPlotCanvascanvas ()
 Return observed plot canvas.
const QwtPlotCanvascanvas () const
 Return Observed plot canvas.
QwtPlotplot ()
 Return plot widget, containing the observed plot canvas.
const QwtPlotplot () const
 Return plot widget, containing the observed plot canvas.

Protected Member Functions

virtual void rescale (double factor)

Detailed Description

QwtPlotMagnifier provides zooming, by magnifying in steps.

Using QwtPlotMagnifier a plot can be zoomed in/out in steps using keys, the mouse wheel or moving a mouse button in vertical direction.

Together with QwtPlotZoomer and QwtPlotPanner it is possible to implement individual and powerful navigation of the plot canvas.

See also:
QwtPlotZoomer, QwtPlotPanner, QwtPlot

Definition at line 30 of file qwt_plot_magnifier.h.


Constructor & Destructor Documentation

QwtPlotMagnifier::QwtPlotMagnifier ( QwtPlotCanvas canvas ) [explicit]

Constructor

Parameters:
canvasPlot canvas to be magnified

Definition at line 35 of file qwt_plot_magnifier.cpp.

                                                       :
    QwtMagnifier(canvas)
{
    d_data = new PrivateData();
}
QwtPlotMagnifier::~QwtPlotMagnifier (  ) [virtual]

Destructor.

Definition at line 42 of file qwt_plot_magnifier.cpp.

{
    delete d_data;
}

Member Function Documentation

QwtPlotCanvas * QwtPlotMagnifier::canvas (  )

Return observed plot canvas.

Definition at line 81 of file qwt_plot_magnifier.cpp.

Referenced by plot().

{
    QObject *w = parent();
    if ( w && w->inherits("QwtPlotCanvas") )
        return (QwtPlotCanvas *)w;

    return NULL;
}
const QwtPlotCanvas * QwtPlotMagnifier::canvas (  ) const

Return Observed plot canvas.

Definition at line 91 of file qwt_plot_magnifier.cpp.

{
    return ((QwtPlotMagnifier *)this)->canvas();
}
bool QwtPlotMagnifier::isAxisEnabled ( int  axis ) const

Test if an axis is enabled

Parameters:
axisAxis, see QwtPlot::Axis
Returns:
True, if the axis is enabled
See also:
setAxisEnabled()

Definition at line 72 of file qwt_plot_magnifier.cpp.

References QwtPlot::axisCnt, and QwtPlotMagnifier::PrivateData::isAxisEnabled.

Referenced by rescale().

{
    if ( axis >= 0 && axis < QwtPlot::axisCnt )
        return d_data->isAxisEnabled[axis];

    return true;
}
QwtPlot * QwtPlotMagnifier::plot (  )

Return plot widget, containing the observed plot canvas.

Definition at line 97 of file qwt_plot_magnifier.cpp.

References canvas().

Referenced by rescale().

{
    QObject *w = canvas();
    if ( w )
    {
        w = w->parent();
        if ( w && w->inherits("QwtPlot") )
            return (QwtPlot *)w;
    }

    return NULL;
}
const QwtPlot * QwtPlotMagnifier::plot (  ) const

Return plot widget, containing the observed plot canvas.

Definition at line 111 of file qwt_plot_magnifier.cpp.

{
    return ((QwtPlotMagnifier *)this)->plot();
}
void QwtPlotMagnifier::rescale ( double  factor ) [protected, virtual]

Zoom in/out the axes scales

Parameters:
factorA value < 1.0 zooms in, a value > 1.0 zooms out.

Implements QwtMagnifier.

Definition at line 120 of file qwt_plot_magnifier.cpp.

References QwtPlot::autoReplot(), QwtPlot::axisCnt, QwtPlot::axisScaleDiv(), isAxisEnabled(), QwtScaleDiv::isValid(), QwtScaleDiv::lowerBound(), plot(), qwtAbs, QwtScaleDiv::range(), QwtPlot::replot(), QwtPlot::setAutoReplot(), and QwtPlot::setAxisScale().

{
    factor = qwtAbs(factor);
    if ( factor == 1.0 || factor == 0.0 )
        return;

    bool doReplot = false;
    QwtPlot* plt = plot();

    const bool autoReplot = plt->autoReplot();
    plt->setAutoReplot(false);

    for ( int axisId = 0; axisId < QwtPlot::axisCnt; axisId++ )
    {
        const QwtScaleDiv *scaleDiv = plt->axisScaleDiv(axisId);
        if ( isAxisEnabled(axisId) && scaleDiv->isValid() )
        {
            const double center =
                scaleDiv->lowerBound() + scaleDiv->range() / 2;
            const double width_2 = scaleDiv->range() / 2 * factor;

            plt->setAxisScale(axisId, center - width_2, center + width_2);
            doReplot = true;
        }
    }

    plt->setAutoReplot(autoReplot);

    if ( doReplot )
        plt->replot();
}
void QwtPlotMagnifier::setAxisEnabled ( int  axis,
bool  on 
)

En/Disable an axis.

Axes that are enabled will be synchronized to the result of panning. All other axes will remain unchanged.

Parameters:
axisAxis, see QwtPlot::Axis
onOn/Off
See also:
isAxisEnabled()

Definition at line 58 of file qwt_plot_magnifier.cpp.

References QwtPlot::axisCnt, and QwtPlotMagnifier::PrivateData::isAxisEnabled.

{
    if ( axis >= 0 && axis < QwtPlot::axisCnt )
        d_data->isAxisEnabled[axis] = on;
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines