qwt_polar_panner.cpp
Go to the documentation of this file.
1 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
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 
25 {
26 }
27 
30 {
31  return qobject_cast<QwtPolarCanvas *>( parent() );
32 }
33 
36 {
37  return qobject_cast<const QwtPolarCanvas *>( parent() );
38 }
39 
42 {
43  QwtPolarCanvas *c = canvas();
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 
68 void 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 
108 void QwtPolarPanner::widgetMousePressEvent( QMouseEvent *event )
109 {
111  if ( plot )
112  {
113  if ( plot->zoomFactor() < 1.0 )
115  }
116 }
117 
118 #if QWT_MOC_INCLUDE
119 #include "moc_qwt_polar_panner.cpp"
120 #endif
double p1() const
Definition: qwt_scale_map.h:99
A plotting widget, displaying a polar coordinate system.
double zoomFactor() const
QwtPolarPlot * plot()
A point in polar coordinates.
double s1() const
Definition: qwt_scale_map.h:83
virtual void widgetMousePressEvent(QMouseEvent *) QWT_OVERRIDE
QwtPolarCanvas * canvas()
double radius() const
Returns the radius.
void setRadius(double)
Sets the radius to radius.
QwtPanner provides panning of a widget.
Definition: qwt_panner.h:35
QwtPointPolar zoomPos() const
QwtScaleMap scaleMap(int scaleId, double radius) const
virtual void movePlot(int dx, int dy)
double s2() const
Definition: qwt_scale_map.h:91
void setAutoReplot(bool tf=true)
Set or reset the autoReplot option.
void setPoint(const QPointF &)
QPointF toPoint() const
Radius.
Definition: qwt_polar.h:39
void zoom(const QwtPointPolar &, double factor)
Translate and in/decrease the zoom factor.
virtual void widgetMousePressEvent(QMouseEvent *)
Definition: qwt_panner.cpp:381
bool autoReplot() const
QwtPolarPlot * plot()
Canvas of a QwtPolarPlot.
void panned(int dx, int dy)
A scale map.
Definition: qwt_scale_map.h:26
double invTransform(double p) const
virtual ~QwtPolarPanner()
Destructor.
MQTTClient c
Definition: test10.c:1656
double transform(double s) const
QwtPolarPanner(QwtPolarCanvas *)
Create a plot panner for a polar plot canvas.
virtual void replot()
Redraw the plot.


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:10