aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickshapes/designhelpers/qquickellipseshape_p.h
blob: 60537054645b78f89b24f3f12d3fea5899b5c6de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

#ifndef QQUICKELLIPSESHAPE_P_H
#define QQUICKELLIPSESHAPE_P_H

//
//  W A R N I N G
//  -------------
//
// This file is not part of the Qt 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.
//

#include <QtQuickShapes/private/qquickshape_p.h>
#include <QtQuickShapesDesignHelpers/qtquickshapesdesignhelpersexports.h>

QT_BEGIN_NAMESPACE

class QQuickEllipseShapePrivate;

class Q_QUICKSHAPESDESIGNHELPERS_EXPORT QQuickEllipseShape : public QQuickShape
{
public:
    Q_OBJECT
    Q_PROPERTY(qreal sweepAngle READ sweepAngle WRITE setSweepAngle NOTIFY sweepAngleChanged FINAL)
    Q_PROPERTY(qreal startAngle READ startAngle WRITE setStartAngle NOTIFY startAngleChanged FINAL)
    Q_PROPERTY(qreal dashOffset READ dashOffset WRITE setDashOffset NOTIFY dashOffsetChanged FINAL)
    Q_PROPERTY(qreal innerArcRatio READ innerArcRatio WRITE setInnerArcRatio NOTIFY
                       innerArcRatioChanged FINAL)
    Q_PROPERTY(qreal cornerRadius READ cornerRadius WRITE setCornerRadius NOTIFY cornerRadiusChanged
                       FINAL)
    Q_PROPERTY(
            qreal strokeWidth READ strokeWidth WRITE setStrokeWidth NOTIFY strokeWidthChanged FINAL)
    Q_PROPERTY(QColor fillColor READ fillColor WRITE setFillColor NOTIFY fillColorChanged FINAL)
    Q_PROPERTY(QColor strokeColor READ strokeColor WRITE setStrokeColor NOTIFY strokeColorChanged
                       FINAL)
    Q_PROPERTY(QQuickShapePath::CapStyle capStyle READ capStyle WRITE setCapStyle NOTIFY
                       capStyleChanged FINAL)
    Q_PROPERTY(QQuickShapePath::JoinStyle joinStyle READ joinStyle WRITE setJoinStyle NOTIFY
                       joinStyleChanged FINAL)
    Q_PROPERTY(QQuickShapePath::StrokeStyle strokeStyle READ strokeStyle WRITE setStrokeStyle NOTIFY
                       strokeStyleChanged FINAL)
    Q_PROPERTY(QQuickShapePath::FillRule fillRule READ fillRule WRITE setFillRule NOTIFY
                       fillRuleChanged FINAL)
    Q_PROPERTY(QVector<qreal> dashPattern READ dashPattern WRITE setDashPattern NOTIFY
                       dashPatternChanged FINAL)
    Q_PROPERTY(QQuickShapeGradient *fillGradient READ fillGradient WRITE setFillGradient NOTIFY
                       gradientChanged RESET resetFillGradient FINAL)
    Q_PROPERTY(BorderMode borderMode READ borderMode WRITE setBorderMode NOTIFY borderModeChanged
                       RESET resetBorderMode FINAL)

    QML_NAMED_ELEMENT(EllipseShape)
    QML_ADDED_IN_VERSION(6, 10)

public:
    QQuickEllipseShape(QQuickItem *parent = nullptr);
    ~QQuickEllipseShape() override;

    qreal sweepAngle() const;
    void setSweepAngle(qreal sweepAngle);

    qreal startAngle() const;
    void setStartAngle(qreal startAngle);

    qreal dashOffset() const;
    void setDashOffset(qreal offset);

    qreal innerArcRatio() const;
    void setInnerArcRatio(qreal innerArcRatio);

    qreal cornerRadius() const;
    void setCornerRadius(qreal cornerRadius);

    qreal strokeWidth() const;
    void setStrokeWidth(qreal width);

    QColor fillColor() const;
    void setFillColor(const QColor &color);

    QColor strokeColor() const;
    void setStrokeColor(const QColor &color);

    QQuickShapePath::CapStyle capStyle() const;
    void setCapStyle(QQuickShapePath::CapStyle style);

    QQuickShapePath::JoinStyle joinStyle() const;
    void setJoinStyle(QQuickShapePath::JoinStyle style);

    QQuickShapePath::StrokeStyle strokeStyle() const;
    void setStrokeStyle(QQuickShapePath::StrokeStyle style);

    QQuickShapePath::FillRule fillRule() const;
    void setFillRule(QQuickShapePath::FillRule fillRule);

    QVector<qreal> dashPattern() const;
    void setDashPattern(const QVector<qreal> &array);

    QQuickShapeGradient *fillGradient() const;
    void setFillGradient(QQuickShapeGradient *fillGradient);
    void resetFillGradient();

    enum class BorderMode { Inside, Middle, Outside };
    Q_ENUM(BorderMode)
    BorderMode borderMode() const;
    void setBorderMode(BorderMode borderMode);
    void resetBorderMode();

Q_SIGNALS:
    void innerArcRatioChanged();
    void cornerRadiusChanged();
    void startAngleChanged();
    void sweepAngleChanged();
    void strokeColorChanged();
    void strokeWidthChanged();
    void fillColorChanged();
    void joinStyleChanged();
    void capStyleChanged();
    void fillRuleChanged();
    void strokeStyleChanged();
    void dashOffsetChanged();
    void dashPatternChanged();
    void gradientChanged();
    void borderModeChanged();

protected:
    void itemChange(ItemChange change, const ItemChangeData &value) override;

private:
    Q_DISABLE_COPY(QQuickEllipseShape)
    Q_DECLARE_PRIVATE(QQuickEllipseShape)
};

QT_END_NAMESPACE

#endif // QQUICKELLIPSE1SHAPE_P_H