/src/skia/modules/skparagraph/include/ParagraphPainter.h
Line | Count | Source (jump to first uncovered line) |
1 | | // Copyright 2019 Google LLC. |
2 | | #ifndef ParagraphPainter_DEFINED |
3 | | #define ParagraphPainter_DEFINED |
4 | | |
5 | | #include "include/core/SkPaint.h" |
6 | | #include "include/core/SkTextBlob.h" |
7 | | |
8 | | #include <optional> |
9 | | #include <variant> |
10 | | |
11 | | namespace skia { |
12 | | namespace textlayout { |
13 | | |
14 | | class ParagraphPainter { |
15 | | public: |
16 | | typedef int PaintID; |
17 | | typedef std::variant<SkPaint, PaintID> SkPaintOrID; |
18 | | |
19 | | struct DashPathEffect { |
20 | | DashPathEffect(SkScalar onLength, SkScalar offLength); |
21 | | |
22 | | SkScalar fOnLength; |
23 | | SkScalar fOffLength; |
24 | | }; |
25 | | |
26 | | class DecorationStyle { |
27 | | public: |
28 | | DecorationStyle(); |
29 | | DecorationStyle(SkColor color, SkScalar strokeWidth, |
30 | | std::optional<DashPathEffect> dashPathEffect); |
31 | | |
32 | 0 | SkColor getColor() const { return fColor; } |
33 | 0 | SkScalar getStrokeWidth() const { return fStrokeWidth; } |
34 | 0 | std::optional<DashPathEffect> getDashPathEffect() const { return fDashPathEffect; } |
35 | 0 | const SkPaint& skPaint() const { return fPaint; } |
36 | | |
37 | | private: |
38 | | SkColor fColor; |
39 | | SkScalar fStrokeWidth; |
40 | | std::optional<DashPathEffect> fDashPathEffect; |
41 | | SkPaint fPaint; |
42 | | }; |
43 | | |
44 | 0 | virtual ~ParagraphPainter() = default; |
45 | | |
46 | | virtual void drawTextBlob(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, const SkPaintOrID& paint) = 0; |
47 | | virtual void drawTextShadow(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, SkColor color, SkScalar blurSigma) = 0; |
48 | | virtual void drawRect(const SkRect& rect, const SkPaintOrID& paint) = 0; |
49 | | virtual void drawFilledRect(const SkRect& rect, const DecorationStyle& decorStyle) = 0; |
50 | | virtual void drawPath(const SkPath& path, const DecorationStyle& decorStyle) = 0; |
51 | | virtual void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const DecorationStyle& decorStyle) = 0; |
52 | | |
53 | | virtual void clipRect(const SkRect& rect) = 0; |
54 | | virtual void translate(SkScalar dx, SkScalar dy) = 0; |
55 | | |
56 | | virtual void save() = 0; |
57 | | virtual void restore() = 0; |
58 | | }; |
59 | | |
60 | | } // namespace textlayout |
61 | | } // namespace skia |
62 | | |
63 | | #endif // ParagraphPainter_DEFINED |