Coverage Report

Created: 2024-05-20 07:14

/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