C
Qt Cluster: Rendering and Recovery from Main UI Failure
// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause // This file is part of the Qt Safe Renderer module #ifndef GAUGE_H #define GAUGE_H #include <QQuickItem> #include <QColor> class Gauge : public QQuickItem { Q_OBJECT Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged) Q_PROPERTY(qreal angle READ angle NOTIFY angleChanged) Q_PROPERTY(int numVertices READ numVertices WRITE setNumVertices NOTIFY numVerticesChanged) Q_PROPERTY(double fillWidth READ fillWidth WRITE setFillWidth NOTIFY fillWidthChanged) Q_PROPERTY(int radius READ radius WRITE setRadius NOTIFY radiusChanged) Q_PROPERTY(double minAngle READ minAngle WRITE setMinAngle NOTIFY minAngleChanged) Q_PROPERTY(double maxAngle READ maxAngle WRITE setMaxAngle NOTIFY maxAngleChanged) Q_PROPERTY(double minValue READ minValue WRITE setMinValue NOTIFY minValueChanged) Q_PROPERTY(double maxValue READ maxValue WRITE setMaxValue NOTIFY maxValueChanged) Q_PROPERTY(bool doNotFill READ doNotFill WRITE setDoNotFill NOTIFY doNotFillChanged) Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) public: Gauge(QQuickItem *parent = 0); ~Gauge(); QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override; #if QT_VERSION >= 0x060000 void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; #else void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; #endif qreal value() const { return m_value; } qreal angle() const { return m_angle; } int numVertices() const { return m_numVertices; } double fillWidth() const { return m_fillWidth; } int radius() const { return m_radius; } double minAngle() const { return m_minAngle; } double maxAngle() const { return m_maxAngle; } double minValue() const { return m_minValue; } double maxValue() const { return m_maxValue; } bool doNotFill() const { return m_doNotFill; } QColor color() const { return m_color; } void setValue(qreal value); void setNumVertices(int numVertices); void setFillWidth(double fillWidth); void setRadius(int radius); void setMinAngle(double minAngle); void setMaxAngle(double maxAngle); void setMinValue(double minValue); void setMaxValue(double maxValue); void setDoNotFill(bool doNotFill); void setColor(QColor color); void setUpdateGeometry(bool updateGeometry); signals: void valueChanged(qreal value); void angleChanged(qreal angle); void numVerticesChanged(int numVertices); void fillWidthChanged(double fillWidth); void radiusChanged(int radius); void minAngleChanged(double minAngle); void maxAngleChanged(double maxAngle); void minValueChanged(double minValue); void maxValueChanged(double maxValue); void doNotFillChanged(bool doNotFill); void colorChanged(QColor color); public slots: private: void calcArc(); void updateValue(); private: qreal m_value; double m_angle; int m_numVertices; double m_fillWidth; int m_radius; bool m_lefttoright; double m_minAngle; double m_maxAngle; double m_minValue; double m_maxValue; bool m_doNotFill; QColor m_color; //Internal double arc_length; double arc_dist_per_vertices; double frontCutDeg; double backCutDeg; double frontCutRad; double backCutRad; float m_cutRad; }; #endif // GAUGE_H