blob: 0762386f45f4e128c91724f3cb4fc480b220736e [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Data Visualization module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
//
// W A R N I N G
// -------------
//
// This file is not part of the QtDataVisualization API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
#ifndef QABSTRACT3DSERIES_P_H
#define QABSTRACT3DSERIES_P_H
#include "datavisualizationglobal_p.h"
#include "qabstract3dseries.h"
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class QAbstractDataProxy;
class Abstract3DController;
struct QAbstract3DSeriesChangeBitField {
bool meshChanged : 1;
bool meshSmoothChanged : 1;
bool meshRotationChanged : 1;
bool userDefinedMeshChanged : 1;
bool colorStyleChanged : 1;
bool baseColorChanged : 1;
bool baseGradientChanged : 1;
bool singleHighlightColorChanged : 1;
bool singleHighlightGradientChanged : 1;
bool multiHighlightColorChanged : 1;
bool multiHighlightGradientChanged : 1;
bool nameChanged : 1;
bool itemLabelChanged : 1;
bool itemLabelVisibilityChanged : 1;
bool visibilityChanged : 1;
QAbstract3DSeriesChangeBitField()
: meshChanged(true),
meshSmoothChanged(true),
meshRotationChanged(true),
userDefinedMeshChanged(true),
colorStyleChanged(true),
baseColorChanged(true),
baseGradientChanged(true),
singleHighlightColorChanged(true),
singleHighlightGradientChanged(true),
multiHighlightColorChanged(true),
multiHighlightGradientChanged(true),
nameChanged(true),
itemLabelChanged(true),
itemLabelVisibilityChanged(true),
visibilityChanged(true)
{
}
};
struct QAbstract3DSeriesThemeOverrideBitField {
bool colorStyleOverride : 1;
bool baseColorOverride : 1;
bool baseGradientOverride : 1;
bool singleHighlightColorOverride : 1;
bool singleHighlightGradientOverride : 1;
bool multiHighlightColorOverride : 1;
bool multiHighlightGradientOverride : 1;
QAbstract3DSeriesThemeOverrideBitField()
: colorStyleOverride(false),
baseColorOverride(false),
baseGradientOverride(false),
singleHighlightColorOverride(false),
singleHighlightGradientOverride(false),
multiHighlightColorOverride(false),
multiHighlightGradientOverride(false)
{
}
};
class QAbstract3DSeriesPrivate : public QObject
{
Q_OBJECT
public:
QAbstract3DSeriesPrivate(QAbstract3DSeries *q, QAbstract3DSeries::SeriesType type);
virtual ~QAbstract3DSeriesPrivate();
QAbstractDataProxy *dataProxy() const;
virtual void setDataProxy(QAbstractDataProxy *proxy);
virtual void setController(Abstract3DController *controller);
virtual void connectControllerAndProxy(Abstract3DController *newController) = 0;
virtual void createItemLabel() = 0;
void setItemLabelFormat(const QString &format);
void setVisible(bool visible);
void setMesh(QAbstract3DSeries::Mesh mesh);
void setMeshSmooth(bool enable);
void setMeshRotation(const QQuaternion &rotation);
void setUserDefinedMesh(const QString &meshFile);
void setColorStyle(Q3DTheme::ColorStyle style);
void setBaseColor(const QColor &color);
void setBaseGradient(const QLinearGradient &gradient);
void setSingleHighlightColor(const QColor &color);
void setSingleHighlightGradient(const QLinearGradient &gradient);
void setMultiHighlightColor(const QColor &color);
void setMultiHighlightGradient(const QLinearGradient &gradient);
void setName(const QString &name);
void resetToTheme(const Q3DTheme &theme, int seriesIndex, bool force);
QString itemLabel();
void markItemLabelDirty();
inline bool itemLabelDirty() const { return m_itemLabelDirty; }
void setItemLabelVisible(bool visible);
QAbstract3DSeriesChangeBitField m_changeTracker;
QAbstract3DSeriesThemeOverrideBitField m_themeTracker;
QAbstract3DSeries *q_ptr;
QAbstract3DSeries::SeriesType m_type;
QString m_itemLabelFormat;
QAbstractDataProxy *m_dataProxy;
bool m_visible;
Abstract3DController *m_controller;
QAbstract3DSeries::Mesh m_mesh;
bool m_meshSmooth;
QQuaternion m_meshRotation;
QString m_userDefinedMesh;
Q3DTheme::ColorStyle m_colorStyle;
QColor m_baseColor;
QLinearGradient m_baseGradient;
QColor m_singleHighlightColor;
QLinearGradient m_singleHighlightGradient;
QColor m_multiHighlightColor;
QLinearGradient m_multiHighlightGradient;
QString m_name;
QString m_itemLabel;
bool m_itemLabelDirty;
bool m_itemLabelVisible;
};
QT_END_NAMESPACE_DATAVISUALIZATION
#endif