pieslicedata_p.h
141 lines
| 3.5 KiB
| text/x-c
|
CLexer
Jani Honkonen
|
r794 | /**************************************************************************** | ||
** | ||||
** Copyright (C) 2012 Digia Plc | ||||
** All rights reserved. | ||||
** For any questions to Digia, please use contact form at http://qt.digia.com | ||||
** | ||||
** This file is part of the Qt Commercial Charts Add-on. | ||||
** | ||||
** $QT_BEGIN_LICENSE$ | ||||
** Licensees holding valid Qt Commercial licenses may use this file in | ||||
** accordance with the Qt Commercial License Agreement provided with the | ||||
** Software or, alternatively, in accordance with the terms contained in | ||||
** a written agreement between you and Digia. | ||||
** | ||||
** If you have questions regarding the use of this file, please use | ||||
** contact form at http://qt.digia.com | ||||
** $QT_END_LICENSE$ | ||||
** | ||||
****************************************************************************/ | ||||
Jani Honkonen
|
r675 | #ifndef PIESLICEDATA_P_H | ||
#define PIESLICEDATA_P_H | ||||
Jani Honkonen
|
r818 | #include "qchartglobal.h" | ||
#include "qpieslice.h" | ||||
Jani Honkonen
|
r675 | #include <QPen> | ||
#include <QBrush> | ||||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
Jani Honkonen
|
r691 | template <class T> | ||
class Themed : public T | ||||
{ | ||||
public: | ||||
Themed():m_isThemed(true) {} | ||||
inline T &operator=(const T &other) { return T::operator =(other); } | ||||
Jani Honkonen
|
r794 | inline bool operator!=(const T &other) const { return T::operator !=(other); } | ||
inline bool operator!=(const Themed &other) const | ||||
Jani Honkonen
|
r691 | { | ||
if (T::operator !=(other)) | ||||
return true; | ||||
if (m_isThemed != other.m_isThemed) | ||||
return true; | ||||
return false; | ||||
} | ||||
inline void setThemed(bool state) { m_isThemed = state; } | ||||
inline bool isThemed() const { return m_isThemed; } | ||||
private: | ||||
bool m_isThemed; | ||||
}; | ||||
Jani Honkonen
|
r675 | class PieSliceData | ||
{ | ||||
public: | ||||
PieSliceData() | ||||
{ | ||||
m_value = 0; | ||||
Jani Honkonen
|
r691 | |||
Jani Honkonen
|
r675 | m_isExploded = false; | ||
m_explodeDistanceFactor = 0.15; | ||||
Jani Honkonen
|
r691 | |||
m_isLabelVisible = false; | ||||
Jani Honkonen
|
r675 | m_labelArmLengthFactor = 0.15; | ||
Jani Honkonen
|
r691 | |||
m_percentage = 0; | ||||
m_radius = 0; | ||||
m_startAngle = 0; | ||||
m_angleSpan = 0; | ||||
} | ||||
Jani Honkonen
|
r794 | bool operator!=(const PieSliceData &other) const | ||
Jani Honkonen
|
r691 | { | ||
Jani Honkonen
|
r768 | if (!qFuzzyIsNull(m_value - other.m_value)) | ||
Jani Honkonen
|
r691 | return true; | ||
if (m_slicePen != other.m_slicePen || | ||||
m_sliceBrush != other.m_sliceBrush) | ||||
return true; | ||||
if (m_isExploded != other.m_isExploded || | ||||
Jani Honkonen
|
r765 | !qFuzzyIsNull(m_explodeDistanceFactor - other.m_explodeDistanceFactor)) | ||
Jani Honkonen
|
r691 | return true; | ||
if (m_isLabelVisible != other.m_isLabelVisible || | ||||
m_labelText != other.m_labelText || | ||||
m_labelFont != other.m_labelFont || | ||||
Jani Honkonen
|
r765 | !qFuzzyIsNull(m_labelArmLengthFactor - other.m_labelArmLengthFactor) || | ||
Jani Honkonen
|
r714 | m_labelPen != other.m_labelPen) | ||
Jani Honkonen
|
r691 | return true; | ||
Jani Honkonen
|
r765 | if (!qFuzzyIsNull(m_percentage - other.m_percentage) || | ||
Jani Honkonen
|
r691 | m_center != other.m_center || | ||
Jani Honkonen
|
r765 | !qFuzzyIsNull(m_radius - other.m_radius) || | ||
!qFuzzyIsNull(m_startAngle - other.m_startAngle) || | ||||
!qFuzzyIsNull(m_angleSpan - other.m_angleSpan)) | ||||
Jani Honkonen
|
r691 | return true; | ||
return false; | ||||
Jani Honkonen
|
r675 | } | ||
Jani Honkonen
|
r818 | void emitChangedSignal(QPieSlice *s) | ||
{ | ||||
emit s->changed(); | ||||
} | ||||
Jani Honkonen
|
r822 | static PieSliceData &data(QPieSlice *slice) | ||
{ | ||||
Q_ASSERT(slice); | ||||
return *slice->d; | ||||
} | ||||
Jani Honkonen
|
r675 | qreal m_value; | ||
Jani Honkonen
|
r691 | Themed<QPen> m_slicePen; | ||
Themed<QBrush> m_sliceBrush; | ||||
Jani Honkonen
|
r675 | |||
bool m_isExploded; | ||||
qreal m_explodeDistanceFactor; | ||||
Jani Honkonen
|
r691 | bool m_isLabelVisible; | ||
Jani Honkonen
|
r675 | QString m_labelText; | ||
Jani Honkonen
|
r691 | Themed<QFont> m_labelFont; | ||
Jani Honkonen
|
r675 | qreal m_labelArmLengthFactor; | ||
Jani Honkonen
|
r714 | Themed<QPen> m_labelPen; | ||
Jani Honkonen
|
r675 | |||
qreal m_percentage; | ||||
QPointF m_center; | ||||
qreal m_radius; | ||||
qreal m_startAngle; | ||||
qreal m_angleSpan; | ||||
}; | ||||
QTCOMMERCIALCHART_END_NAMESPACE | ||||
#endif // PIESLICEDATA_P_H | ||||