KD Chart 2  [rev.2.7]
KDChartRingDiagram.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2001-2020 Klaralvdalens Datakonsult AB. All rights reserved.
3 **
4 ** This file is part of the KD Chart library.
5 **
6 ** Licensees holding valid commercial KD Chart licenses may use this file in
7 ** accordance with the KD Chart Commercial License Agreement provided with
8 ** the Software.
9 **
10 **
11 ** This file may be distributed and/or modified under the terms of the
12 ** GNU General Public License version 2 and version 3 as published by the
13 ** Free Software Foundation and appearing in the file LICENSE.GPL.txt included.
14 **
15 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17 **
18 ** Contact info@kdab.com if any conditions of this licensing are not
19 ** clear to you.
20 **
21 **********************************************************************/
22 
23 #ifndef KDCHARTRINGDIAGRAM_H
24 #define KDCHARTRINGDIAGRAM_H
25 
27 
28 namespace KDChart {
29 
33 class KDCHART_EXPORT RingDiagram : public AbstractPieDiagram
34 {
35  Q_OBJECT
36 
37  Q_DISABLE_COPY( RingDiagram )
39 
40 public:
41  explicit RingDiagram(
42  QWidget* parent = 0, PolarCoordinatePlane* plane = 0 );
43  ~RingDiagram() override;
44 
45 protected:
46  // Implement AbstractDiagram
48  void paint( PaintContext* paintContext ) override;
49 public:
51  void resize( const QSizeF& area ) override;
52 
53  // Implement AbstractPolarDiagram
55  qreal valueTotals() const override;
57  qreal numberOfValuesPerDataset() const override;
58  qreal numberOfDatasets() const override;
60  qreal numberOfGridRings() const override;
61 
62  qreal valueTotals( int dataset ) const;
63 
64  virtual RingDiagram * clone() const;
65 
69  bool compare( const RingDiagram* other ) const;
70 
71  void setRelativeThickness( bool relativeThickness );
72  bool relativeThickness() const;
73 
74  virtual void setExpandWhenExploded( bool expand );
75  virtual bool expandWhenExploded() const;
76 
77 protected:
79  const QPair<QPointF, QPointF> calculateDataBoundaries() const override;
80  void paintEvent( QPaintEvent* ) override;
81  void resizeEvent( QResizeEvent* ) override;
82 
83 private:
84  void drawOneSlice( QPainter* painter, uint dataset, uint slice, qreal granularity );
85  void drawPieSurface( QPainter* painter, uint dataset, uint slice, qreal granularity );
86  QPointF pointOnEllipse( const QRectF& rect, int dataset, int slice, bool outer, qreal angle,
87  qreal totalGapFactor, qreal totalExplodeFactor );
88 }; // End of class RingDiagram
89 
90 }
91 
92 #endif // KDCHARTRINGDIAGRAM_H
Stores information about painting diagrams.
Base class for any diagram type.
#define KDCHART_DECLARE_DERIVED_DIAGRAM(X, PLANE)
Class only listed here to document inheritance of some KDChart classes.
RingDiagram defines a common ring diagram.

Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/

https://www.kdab.com/development-resources/qt-tools/kd-chart/