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 kFill_RRectType,
25 kStroke_RRectType,
26 kOverstroke_RRectType,
27 };
28
29 struct Geometry {
30 QRgb color;
31 QVector4D outer_radius; // TL, TR, BL, BR
32 scalar inner_radius;
33 scalar blur_radius;
34 QRectF dev_bounds;
35 RRectType type;
36 bool is_circle;
37 };
38
39 ShadowCircularRRectOp(QRgb color, const QRectF& devRect, QVector4D devRadius, bool isCircle,
40 float blurRadius, float insetWidth);
41
42 void fillInCircleVerts(bool isStroked, sg::ShadowVertex** vp) const;
43 void fillInRRectVerts(sg::ShadowVertex** vp) const;
44
45 Geometry fGeoData;
46 int fVertCount;
47 int fIndexCount;
48 const uint16_t* fIndexPtr;
49
50 static const uint16_t* circle_type_to_indices(bool stroked);
51 static const uint16_t* rrect_type_to_indices(RRectType type);
52};
53
54} // namespace qml_material::sk