xref: /aosp_15_r20/external/skia/modules/skparagraph/src/ParagraphPainterImpl.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker // Copyright 2019 Google LLC.
2*c8dee2aaSAndroid Build Coastguard Worker #ifndef ParagraphPainterImpl_DEFINED
3*c8dee2aaSAndroid Build Coastguard Worker #define ParagraphPainterImpl_DEFINED
4*c8dee2aaSAndroid Build Coastguard Worker 
5*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkCanvas.h"
6*c8dee2aaSAndroid Build Coastguard Worker #include "modules/skparagraph/include/ParagraphPainter.h"
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker namespace skia {
9*c8dee2aaSAndroid Build Coastguard Worker namespace textlayout {
10*c8dee2aaSAndroid Build Coastguard Worker 
11*c8dee2aaSAndroid Build Coastguard Worker class CanvasParagraphPainter : public ParagraphPainter {
12*c8dee2aaSAndroid Build Coastguard Worker public:
13*c8dee2aaSAndroid Build Coastguard Worker     CanvasParagraphPainter(SkCanvas* canvas);
14*c8dee2aaSAndroid Build Coastguard Worker 
15*c8dee2aaSAndroid Build Coastguard Worker     void drawTextBlob(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, const SkPaintOrID& paint) override;
16*c8dee2aaSAndroid Build Coastguard Worker     void drawTextShadow(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, SkColor color, SkScalar blurSigma) override;
17*c8dee2aaSAndroid Build Coastguard Worker     void drawRect(const SkRect& rect, const SkPaintOrID& paint) override;
18*c8dee2aaSAndroid Build Coastguard Worker     void drawFilledRect(const SkRect& rect, const DecorationStyle& decorStyle) override;
19*c8dee2aaSAndroid Build Coastguard Worker     void drawPath(const SkPath& path, const DecorationStyle& decorStyle) override;
20*c8dee2aaSAndroid Build Coastguard Worker     void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const DecorationStyle& decorStyle) override;
21*c8dee2aaSAndroid Build Coastguard Worker 
22*c8dee2aaSAndroid Build Coastguard Worker     void clipRect(const SkRect& rect) override;
23*c8dee2aaSAndroid Build Coastguard Worker     void translate(SkScalar dx, SkScalar dy) override;
24*c8dee2aaSAndroid Build Coastguard Worker 
25*c8dee2aaSAndroid Build Coastguard Worker     void save() override;
26*c8dee2aaSAndroid Build Coastguard Worker     void restore() override;
27*c8dee2aaSAndroid Build Coastguard Worker 
28*c8dee2aaSAndroid Build Coastguard Worker private:
29*c8dee2aaSAndroid Build Coastguard Worker     SkCanvas* fCanvas;
30*c8dee2aaSAndroid Build Coastguard Worker };
31*c8dee2aaSAndroid Build Coastguard Worker 
32*c8dee2aaSAndroid Build Coastguard Worker class ParagraphPainterAutoRestore {
33*c8dee2aaSAndroid Build Coastguard Worker public:
ParagraphPainterAutoRestore(ParagraphPainter * painter)34*c8dee2aaSAndroid Build Coastguard Worker     ParagraphPainterAutoRestore(ParagraphPainter* painter)
35*c8dee2aaSAndroid Build Coastguard Worker         : fPainter(painter) {
36*c8dee2aaSAndroid Build Coastguard Worker         fPainter->save();
37*c8dee2aaSAndroid Build Coastguard Worker     }
38*c8dee2aaSAndroid Build Coastguard Worker 
~ParagraphPainterAutoRestore()39*c8dee2aaSAndroid Build Coastguard Worker     ~ParagraphPainterAutoRestore() {
40*c8dee2aaSAndroid Build Coastguard Worker         fPainter->restore();
41*c8dee2aaSAndroid Build Coastguard Worker     }
42*c8dee2aaSAndroid Build Coastguard Worker 
43*c8dee2aaSAndroid Build Coastguard Worker private:
44*c8dee2aaSAndroid Build Coastguard Worker     ParagraphPainter*   fPainter;
45*c8dee2aaSAndroid Build Coastguard Worker };
46*c8dee2aaSAndroid Build Coastguard Worker 
47*c8dee2aaSAndroid Build Coastguard Worker }  // namespace textlayout
48*c8dee2aaSAndroid Build Coastguard Worker }  // namespace skia
49*c8dee2aaSAndroid Build Coastguard Worker 
50*c8dee2aaSAndroid Build Coastguard Worker #endif  // ParagraphPainterImpl_DEFINED
51