27 Q_DECLARE_PUBLIC(QQuickEllipseShape)
30 QQuickEllipseShapePrivate();
31 ~QQuickEllipseShapePrivate() override;
35 void update(qreal diff, QVector2D a, QVector2D b, QVector2D c, qreal alpha, qreal radius)
41 this->radius = radius;
73 enum class RoundedCornerIndex { Center, InnerEnd, OuterEnd, InnerBegin, OuterBegin };
76 class RoundedCornerArray
79 RoundedCorner &operator[](RoundedCornerIndex index)
81 return array[
static_cast<
int>(index)];
86 for (
auto &rc : array)
91 RoundedCorner array[5];
94 void addLine(QVector2D point);
95 void addArc(QVector2D point, QVector2D arcRadius, QQuickPathArc::ArcDirection dir,
96 bool largeArc =
false);
98 qreal getBorderOffset()
const;
101 void roundCenter(QVector2D center, QVector2D ellipseRadius);
103 void roundBeginEnd(QVector2D center, QVector2D ellipseRadius);
105 bool roundOuter(QVector2D center, QVector2D ellipseRadius, qreal deg, qreal arcAngle1,
106 qreal arcAngle2, RoundedCornerIndex index);
108 bool roundInner(QVector2D center, QVector2D ellipseRadius, qreal deg, qreal arcAngle1,
109 qreal arcAngle2, RoundedCornerIndex index);
112 void drawCenterCorner();
114 void drawInnerEndCorner();
116 void drawInnerBeginCorner();
118 void drawOuterBeginCorner();
121 void drawOuterArcRounded(QVector2D center, QVector2D ellipseRadius);
123 void drawInnerArcRounded(QVector2D center, QVector2D ellipseRadius);
126 void drawOuterArc(QVector2D center, QVector2D ellipseRadius);
128 void drawFullInnerArc(QVector2D center, QVector2D ellipseRadius);
131 void drawWithInnerRadius(QVector2D center, QVector2D ellipseRadius);
133 void drawWithoutInnerRadius(QVector2D center, QVector2D ellipseRadius);
137 QQuickShapePath *path =
nullptr;
139 qreal startAngle = 0;
140 qreal sweepAngle = 360;
141 qreal innerArcRatio = 0;
142 qreal cornerRadius = 10;
143 QQuickEllipseShape::BorderMode borderMode = QQuickEllipseShape::BorderMode::Inside;