File indexing completed on 2024-06-16 04:09:12
0001 /* 0002 * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved. 0003 * 0004 * This file is part of the KD Chart library. 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef KCHARTABSTRACTPOLARDIAGRAM_P_H 0010 #define KCHARTABSTRACTPOLARDIAGRAM_P_H 0011 0012 // 0013 // W A R N I N G 0014 // ------------- 0015 // 0016 // This file is not part of the KD Chart API. It exists purely as an 0017 // implementation detail. This header file may change from version to 0018 // version without notice, or even be removed. 0019 // 0020 // We mean it. 0021 // 0022 0023 #include "KChartAbstractPolarDiagram.h" 0024 #include "KChartAbstractDiagram_p.h" 0025 #include <KChartGridAttributes.h> 0026 #include "KChartMath_p.h" 0027 0028 0029 namespace KChart { 0030 0031 class PolarCoordinatePlane; 0032 0033 /** 0034 * \internal 0035 */ 0036 class Q_DECL_HIDDEN AbstractPolarDiagram::Private : public AbstractDiagram::Private 0037 { 0038 friend class AbstractPolarDiagram; 0039 public: 0040 Private(); 0041 ~Private() override; 0042 0043 Private( const Private& rhs ) : 0044 AbstractDiagram::Private( rhs ), 0045 granularity( 0 ) 0046 { 0047 // just for consistency 0048 } 0049 0050 /** \reimpl */ 0051 // FIXME: Optimize when needed 0052 qreal calcPercentValue( const QModelIndex & index ) const override 0053 { 0054 Q_ASSERT( index.isValid() ); 0055 qreal sum = 0.0; 0056 for ( int row = 0; row < attributesModel->rowCount( QModelIndex() ); row++ ) 0057 sum += attributesModel->data( attributesModel->index( row, index.column(), QModelIndex() ) ).toReal(); // checked 0058 if ( sum == 0.0 ) 0059 return 0.0; 0060 return attributesModel->data( attributesModel->mapFromSource( index ) ).toReal() / sum * 100.0; 0061 } 0062 0063 private: 0064 qreal granularity; 0065 }; 0066 0067 KCHART_IMPL_DERIVED_DIAGRAM( AbstractPolarDiagram, AbstractDiagram, PolarCoordinatePlane ) 0068 /* 0069 inline AbstractPolarDiagram::AbstractPolarDiagram( Private * p ) 0070 : AbstractDiagram( p ) { init(); } 0071 inline AbstractPolarDiagram::AbstractPolarDiagram( 0072 Private *p, QWidget* parent, PolarCoordinatePlane* plane ) 0073 : AbstractDiagram( p, parent, plane ) { init(); } 0074 inline AbstractPolarDiagram::Private * AbstractPolarDiagram::d_func() 0075 { return static_cast<Private*>( AbstractDiagram::d_func() ); } 0076 inline const AbstractPolarDiagram::Private * AbstractPolarDiagram::d_func() const 0077 { return static_cast<const Private*>( AbstractDiagram::d_func() ); } 0078 */ 0079 0080 } 0081 #endif /* KCHARTABSTRACTCARTESIANDIAGRAM_P_H */