QmlMaterial 0.1.0
Loading...
Searching...
No Matches
skia_shadow.h
Go to the documentation of this file.
1#pragma once
2
3#include <QRectF>
4#include <QVector4D>
5
6#include "qml_material/scenegraph/geometry.h"
7
16namespace qml_material::sk
17{
18
19using scalar = float;
20
21class ShadowCircularRRectOp {
22public:
23 enum RRectType
24 {
25 kFill_RRectType,
26 kStroke_RRectType,
27 kOverstroke_RRectType,
28 };
29
30 struct Geometry {
31 QRgb color;
32 QVector4D outer_radius; // TL, TR, BL, BR
33 scalar inner_radius;
34 scalar blur_radius;
35 QRectF dev_bounds;
36 RRectType type;
37 bool is_circle;
38 };
39
40 ShadowCircularRRectOp(QRgb color, const QRectF& devRect, QVector4D devRadius, bool isCircle,
41 float blurRadius, float insetWidth);
42
43 void fillInCircleVerts(bool isStroked, sg::ShadowVertex** vp) const;
44 void fillInRRectVerts(sg::ShadowVertex** vp) const;
45
46 Geometry fGeoData;
47 int fVertCount;
48 int fIndexCount;
49 const uint16_t* fIndexPtr;
50
51 static const uint16_t* circle_type_to_indices(bool stroked);
52 static const uint16_t* rrect_type_to_indices(RRectType type);
53};
54
55} // namespace qml_material::sk