Qwt User's Guide 6.3.0
Loading...
Searching...
No Matches
qwt_polar_panner.cpp
1/******************************************************************************
2 * QwtPolar Widget Library
3 * Copyright (C) 2008 Uwe Rathmann
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the Qwt License, Version 1.0
7 *****************************************************************************/
8
9#include "qwt_polar_panner.h"
10#include "qwt_polar_plot.h"
11#include "qwt_polar_canvas.h"
12#include "qwt_scale_div.h"
13#include "qwt_point_polar.h"
14
17 : QwtPanner( canvas )
18{
19 connect( this, SIGNAL(panned(int,int)),
20 SLOT(movePlot(int,int)) );
21}
22
27
30{
31 return qobject_cast< QwtPolarCanvas* >( parent() );
32}
33
36{
37 return qobject_cast< const QwtPolarCanvas* >( parent() );
38}
39
42{
44 if ( c )
45 return c->plot();
46
47 return NULL;
48}
49
52{
53 const QwtPolarCanvas* c = canvas();
54 if ( c )
55 return c->plot();
56
57 return NULL;
58}
59
68void QwtPolarPanner::movePlot( int dx, int dy )
69{
71 if ( plot == NULL || ( dx == 0 && dy == 0 ) )
72 return;
73
74 const QwtScaleMap map = plot->scaleMap( QwtPolar::Radius );
75
76 QwtPointPolar pos = plot->zoomPos();
77 if ( map.s1() <= map.s2() )
78 {
79 pos.setRadius(
80 map.transform( map.s1() + pos.radius() ) - map.p1() );
81 pos.setPoint( pos.toPoint() - QPointF( dx, -dy ) );
82 pos.setRadius(
83 map.invTransform( map.p1() + pos.radius() ) - map.s1() );
84 }
85 else
86 {
87 pos.setRadius(
88 map.transform( map.s1() - pos.radius() ) - map.p1() );
89 pos.setPoint( pos.toPoint() - QPointF( dx, -dy ) );
90 pos.setRadius(
91 map.s1() - map.invTransform( map.p1() + pos.radius() ) );
92 }
93
94 const bool doAutoReplot = plot->autoReplot();
95 plot->setAutoReplot( false );
96
97 plot->zoom( pos, plot->zoomFactor() );
98
99 plot->setAutoReplot( doAutoReplot );
100 plot->replot();
101}
102
109{
111 if ( plot )
112 {
113 if ( plot->zoomFactor() < 1.0 )
115 }
116}
117
118#include "moc_qwt_polar_panner.cpp"
QwtPanner provides panning of a widget.
Definition qwt_panner.h:36
virtual void widgetMousePressEvent(QMouseEvent *)
void panned(int dx, int dy)
A point in polar coordinates.
double radius() const
Returns the radius.
void setRadius(double)
Sets the radius to radius.
QPointF toPoint() const
void setPoint(const QPointF &)
Canvas of a QwtPolarPlot.
QwtPolarPlot * plot()
QwtPolarCanvas * canvas()
virtual ~QwtPolarPanner()
Destructor.
virtual void widgetMousePressEvent(QMouseEvent *) override
QwtPolarPanner(QwtPolarCanvas *)
Create a plot panner for a polar plot canvas.
virtual void movePlot(int dx, int dy)
QwtPolarPlot * plot()
A plotting widget, displaying a polar coordinate system.
QwtScaleMap scaleMap(int scaleId, double radius) const
QwtPointPolar zoomPos() const
virtual void replot()
Redraw the plot.
void zoom(const QwtPointPolar &, double factor)
Translate and in/decrease the zoom factor.
double zoomFactor() const
bool autoReplot() const
void setAutoReplot(bool tf=true)
Set or reset the autoReplot option.
A scale map.
double p1() const
double transform(double s) const
double s1() const
double s2() const
double invTransform(double p) const