// Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only // // W A R N I N G // ------------- // // This file is not part of the QtGraphs 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 #include #include "qabstract3dseries.h" QT_BEGIN_NAMESPACE class QAbstractDataProxy; class QQuickGraphsItem; 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 QObjectPrivate { Q_DECLARE_PUBLIC(QAbstract3DSeries) public: QAbstract3DSeriesPrivate(QAbstract3DSeries::SeriesType type); ~QAbstract3DSeriesPrivate() override; QAbstractDataProxy *dataProxy() const; virtual void setDataProxy(QAbstractDataProxy *proxy); virtual void setGraph(QQuickGraphsItem *graph); virtual void connectGraphAndProxy(QQuickGraphsItem *newGraph) = 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(QGraphsTheme::ColorStyle style); void setBaseColor(QColor color); void setBaseGradient(const QLinearGradient &gradient); void setSingleHighlightColor(QColor color); void setSingleHighlightGradient(const QLinearGradient &gradient); void setMultiHighlightColor(QColor color); void setMultiHighlightGradient(const QLinearGradient &gradient); void setName(const QString &name); void resetToTheme(const QGraphsTheme &theme, qsizetype seriesIndex, bool force); QString itemLabel(); void markItemLabelDirty(); bool itemLabelDirty() const { return m_itemLabelDirty; } void setItemLabelVisible(bool visible); bool isUsingGradient(); protected: QAbstract3DSeriesChangeBitField m_changeTracker; QAbstract3DSeriesThemeOverrideBitField m_themeTracker; QAbstract3DSeries::SeriesType m_type; QString m_itemLabelFormat; QAbstractDataProxy *m_dataProxy; bool m_visible; QQuickGraphsItem *m_graph; QAbstract3DSeries::Mesh m_mesh; bool m_meshSmooth; QQuaternion m_meshRotation; QString m_userDefinedMesh; QGraphsTheme::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; friend class QQuickGraphsScatter; friend class QQuickGraphsSurface; friend class QQuickGraphsBars; friend class QQuickGraphsItem; }; QT_END_NAMESPACE #endif