Qwt User's Guide: qwt_polar_item.cpp Source File

Qwt User's Guide 6.2.0

qwt_polar_item.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_plot.h"
10 #include "qwt_polar_item.h"
11 #include "qwt_legend.h"
12 #include "qwt_scale_div.h"
13
14 #include <qpainter.h>
15
16 class QwtPolarItem::PrivateData
17 {
18 public:
19 PrivateData()
20 : plot( NULL )
21 , isVisible( true )
22 , renderThreadCount( 1 )
23 , z( 0.0 )
24 , legendIconSize( 8, 8 )
25 {
26 }
27
28 mutable QwtPolarPlot* plot;
29
30 bool isVisible;
31 QwtPolarItem::ItemAttributes attributes;
32 QwtPolarItem::RenderHints renderHints;
33 uint renderThreadCount;
34
35 double z;
36
37 QwtText title;
38 QSize legendIconSize;
39 };
40
48 QwtPolarItem::QwtPolarItem( const QwtText& title )
49 {
50 m_data = new PrivateData;
51 m_data->title = title;
52 }
53
55 QwtPolarItem::~QwtPolarItem()
56 {
57 attach( NULL );
58 delete m_data;
59 }
60
74 void QwtPolarItem::attach( QwtPolarPlot* plot )
75 {
76 if ( plot == m_data->plot )
77 return;
78
79 if ( m_data->plot )
80 m_data->plot->attachItem( this, false );
81
82 m_data->plot = plot;
83
84 if ( m_data->plot )
85 m_data->plot->attachItem( this, true );
86 }
87
95 void QwtPolarItem::detach()
96 {
97 attach( NULL );
98 }
99
112 int QwtPolarItem::rtti() const
113 {
114 return Rtti_PolarItem;
115 }
116
118 QwtPolarPlot* QwtPolarItem::plot() const
119 {
120 return m_data->plot;
121 }
122
129 double QwtPolarItem::z() const
130 {
131 return m_data->z;
132 }
133
142 void QwtPolarItem::setZ( double z )
143 {
144 if ( m_data->z != z )
145 {
146 if ( m_data->plot )
147 m_data->plot->attachItem( this, false );
148
149 m_data->z = z;
150
151 if ( m_data->plot )
152 m_data->plot->attachItem( this, true );
153
154 itemChanged();
155 }
156 }
157
164 void QwtPolarItem::setTitle( const QString& title )
165 {
166 setTitle( QwtText( title ) );
167 }
168
175 void QwtPolarItem::setTitle( const QwtText& title )
176 {
177 if ( m_data->title != title )
178 {
179 m_data->title = title;
180 itemChanged();
181 }
182 }
183
188 const QwtText& QwtPolarItem::title() const
189 {
190 return m_data->title;
191 }
192
201 void QwtPolarItem::setItemAttribute( ItemAttribute attribute, bool on )
202 {
203 if ( bool( m_data->attributes & attribute ) != on )
204 {
205 if ( on )
206 m_data->attributes |= attribute;
207 else
208 m_data->attributes &= ~attribute;
209
210 itemChanged();
211 }
212 }
213
221 bool QwtPolarItem::testItemAttribute( ItemAttribute attribute ) const
222 {
223 return m_data->attributes & attribute;
224 }
225
234 void QwtPolarItem::setRenderHint( RenderHint hint, bool on )
235 {
236 if ( ( ( m_data->renderHints & hint ) != 0 ) != on )
237 {
238 if ( on )
239 m_data->renderHints |= hint;
240 else
241 m_data->renderHints &= ~hint;
242
243 itemChanged();
244 }
245 }
246
254 bool QwtPolarItem::testRenderHint( RenderHint hint ) const
255 {
256 return ( m_data->renderHints & hint );
257 }
258
272 void QwtPolarItem::setRenderThreadCount( uint numThreads )
273 {
274 m_data->renderThreadCount = numThreads;
275 }
276
282 uint QwtPolarItem::renderThreadCount() const
283 {
284 return m_data->renderThreadCount;
285 }
286
295 void QwtPolarItem::setLegendIconSize( const QSize& size )
296 {
297 if ( m_data->legendIconSize != size )
298 {
299 m_data->legendIconSize = size;
300 legendChanged();
301 }
302 }
303
308 QSize QwtPolarItem::legendIconSize() const
309 {
310 return m_data->legendIconSize;
311 }
312
314 void QwtPolarItem::show()
315 {
316 setVisible( true );
317 }
318
320 void QwtPolarItem::hide()
321 {
322 setVisible( false );
323 }
324
331 void QwtPolarItem::setVisible( bool on )
332 {
333 if ( on != m_data->isVisible )
334 {
335 m_data->isVisible = on;
336 itemChanged();
337 }
338 }
339
344 bool QwtPolarItem::isVisible() const
345 {
346 return m_data->isVisible;
347 }
348
355 void QwtPolarItem::itemChanged()
356 {
357 if ( m_data->plot )
358 m_data->plot->autoRefresh();
359 }
360
365 void QwtPolarItem::legendChanged()
366 {
367 if ( testItemAttribute( QwtPolarItem::Legend ) && m_data->plot )
368 m_data->plot->updateLegend( this );
369 }
370
381 QwtInterval QwtPolarItem::boundingInterval( int scaleId ) const
382 {
383 Q_UNUSED( scaleId );
384
385 return QwtInterval(); // invalid
386 }
387
403 void QwtPolarItem::updateScaleDiv( const QwtScaleDiv& azimuthScaleDiv,
404 const QwtScaleDiv& radialScaleDiv, const QwtInterval& interval )
405 {
406 Q_UNUSED( azimuthScaleDiv );
407 Q_UNUSED( radialScaleDiv );
408 Q_UNUSED( interval );
409 }
410
428 QList< QwtLegendData > QwtPolarItem::legendData() const
429 {
430 QwtLegendData data;
431
432 QwtText label = title();
433 label.setRenderFlags( label.renderFlags() & Qt::AlignLeft );
434
435 data.setValue( QwtLegendData::TitleRole,
436 QVariant::fromValue( label ) );
437
438 const QwtGraphic graphic = legendIcon( 0, legendIconSize() );
439 if ( !graphic.isNull() )
440 {
441 data.setValue( QwtLegendData::IconRole,
442 QVariant::fromValue( graphic ) );
443 }
444
445 QList< QwtLegendData > list;
446 list += data;
447
448 return list;
449 }
450
462 QwtGraphic QwtPolarItem::legendIcon(
463 int index, const QSizeF& size ) const
464 {
465 Q_UNUSED( index )
466 Q_UNUSED( size )
467
468 return QwtGraphic();
469 }
470
478 int QwtPolarItem::marginHint() const
479 {
480 return 0;
481 }
QList
Definition: qwt_abstract_legend.h:17
QwtGraphic
A paint device for scalable graphics.
Definition: qwt_graphic.h:76
QwtGraphic::isNull
bool isNull() const
Definition: qwt_graphic.cpp:413
QwtInterval
A class representing an interval.
Definition: qwt_interval.h:23
QwtLegendData
Attributes of an entry on a legend.
Definition: qwt_legend_data.h:37
QwtLegendData::setValue
void setValue(int role, const QVariant &)
Definition: qwt_legend_data.cpp:64
QwtPolarItem::testItemAttribute
bool testItemAttribute(ItemAttribute) const
Definition: qwt_polar_item.cpp:221
QwtPolarItem::boundingInterval
virtual QwtInterval boundingInterval(int scaleId) const
Definition: qwt_polar_item.cpp:381
QwtPolarItem::legendIconSize
QSize legendIconSize() const
Definition: qwt_polar_item.cpp:308
QwtPolarItem::itemChanged
virtual void itemChanged()
Definition: qwt_polar_item.cpp:355
QwtPolarItem::setLegendIconSize
void setLegendIconSize(const QSize &)
Definition: qwt_polar_item.cpp:295
QwtPolarItem::QwtPolarItem
QwtPolarItem(const QwtText &title=QwtText())
Definition: qwt_polar_item.cpp:48
QwtPolarItem::isVisible
bool isVisible() const
Definition: qwt_polar_item.cpp:344
QwtPolarItem::detach
void detach()
This method detaches a QwtPolarItem from the QwtPolarPlot it has been associated with.
Definition: qwt_polar_item.cpp:95
QwtPolarItem::setRenderThreadCount
void setRenderThreadCount(uint numThreads)
Definition: qwt_polar_item.cpp:272
QwtPolarItem::ItemAttribute
ItemAttribute
Plot Item Attributes.
Definition: qwt_polar_item.h:75
QwtPolarItem::Legend
@ Legend
The item is represented on the legend.
Definition: qwt_polar_item.h:77
QwtPolarItem::z
double z() const
Definition: qwt_polar_item.cpp:129
QwtPolarItem::updateScaleDiv
virtual void updateScaleDiv(const QwtScaleDiv &, const QwtScaleDiv &, const QwtInterval &)
Update the item to changes of the axes scale division.
Definition: qwt_polar_item.cpp:403
QwtPolarItem::legendData
virtual QList< QwtLegendData > legendData() const
Return all information, that is needed to represent the item on the legend.
Definition: qwt_polar_item.cpp:428
QwtPolarItem::setTitle
void setTitle(const QString &title)
Definition: qwt_polar_item.cpp:164
QwtPolarItem::title
const QwtText & title() const
Definition: qwt_polar_item.cpp:188
QwtPolarItem::ItemAttributes
QFlags< ItemAttribute > ItemAttributes
Definition: qwt_polar_item.h:86
QwtPolarItem::testRenderHint
bool testRenderHint(RenderHint) const
Definition: qwt_polar_item.cpp:254
QwtPolarItem::Rtti_PolarItem
@ Rtti_PolarItem
Unspecific value, that can be used, when it doesn't matter.
Definition: qwt_polar_item.h:49
QwtPolarItem::hide
void hide()
Hide the item.
Definition: qwt_polar_item.cpp:320
QwtPolarItem::setVisible
virtual void setVisible(bool)
Definition: qwt_polar_item.cpp:331
QwtPolarItem::plot
QwtPolarPlot * plot() const
Definition: qwt_polar_item.cpp:118
QwtPolarItem::~QwtPolarItem
virtual ~QwtPolarItem()
Destroy the QwtPolarItem.
Definition: qwt_polar_item.cpp:55
QwtPolarItem::marginHint
virtual int marginHint() const
Definition: qwt_polar_item.cpp:478
QwtPolarItem::RenderHints
QFlags< RenderHint > RenderHints
Definition: qwt_polar_item.h:98
QwtPolarItem::attach
void attach(QwtPolarPlot *plot)
Attach the item to a plot.
Definition: qwt_polar_item.cpp:74
QwtPolarItem::legendIcon
virtual QwtGraphic legendIcon(int index, const QSizeF &) const
Definition: qwt_polar_item.cpp:462
QwtPolarItem::renderThreadCount
uint renderThreadCount() const
Definition: qwt_polar_item.cpp:282
QwtPolarItem::setItemAttribute
void setItemAttribute(ItemAttribute, bool on=true)
Definition: qwt_polar_item.cpp:201
QwtPolarItem::RenderHint
RenderHint
Render hints.
Definition: qwt_polar_item.h:93
QwtPolarItem::show
void show()
Show the item.
Definition: qwt_polar_item.cpp:314
QwtPolarItem::legendChanged
virtual void legendChanged()
Definition: qwt_polar_item.cpp:365
QwtPolarItem::setRenderHint
void setRenderHint(RenderHint, bool on=true)
Definition: qwt_polar_item.cpp:234
QwtPolarItem::setZ
void setZ(double z)
Set the z value.
Definition: qwt_polar_item.cpp:142
QwtPolarItem::rtti
virtual int rtti() const
Definition: qwt_polar_item.cpp:112
QwtPolarPlot
A plotting widget, displaying a polar coordinate system.
Definition: qwt_polar_plot.h:47
QwtScaleDiv
A class representing a scale division.
Definition: qwt_scale_div.h:34
QwtText
A class representing a text.
Definition: qwt_text.h:52
QwtText::renderFlags
int renderFlags() const
Definition: qwt_text.cpp:317
QwtText::setRenderFlags
void setRenderFlags(int)
Change the render flags.
Definition: qwt_text.cpp:304