• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2019 Google LLC.
2 #ifndef ParagraphPainterImpl_DEFINED
3 #define ParagraphPainterImpl_DEFINED
4 
5 #include "include/core/SkCanvas.h"
6 #include "modules/skparagraph/include/ParagraphPainter.h"
7 
8 namespace skia {
9 namespace textlayout {
10 
11 class CanvasParagraphPainter : public ParagraphPainter {
12 public:
13     CanvasParagraphPainter(SkCanvas* canvas);
14 
15 #ifndef USE_SKIA_TXT
16     void drawTextBlob(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, const SkPaintOrID& paint) override;
17     void drawTextShadow(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, SkColor color, SkScalar blurSigma) override;
18 #else
drawTextBlob(const std::shared_ptr<RSTextBlob> & blob,SkScalar x,SkScalar y,const SkPaintOrID & paint)19     void drawTextBlob(
20         const std::shared_ptr<RSTextBlob>& blob, SkScalar x, SkScalar y, const SkPaintOrID& paint) override {}
drawTextShadow(const std::shared_ptr<RSTextBlob> & blob,SkScalar x,SkScalar y,SkColor color,SkScalar blurSigma)21     void drawTextShadow(
22         const std::shared_ptr<RSTextBlob>& blob, SkScalar x, SkScalar y, SkColor color, SkScalar blurSigma) override {}
23 #endif
24     void drawRect(const SkRect& rect, const SkPaintOrID& paint) override;
25     void drawRRect(const SkRRect& rrect, const SkColor color) override;
26     void drawFilledRect(const SkRect& rect, const DecorationStyle& decorStyle) override;
27 #ifndef USE_SKIA_TXT
28     void drawPath(const SkPath& path, const DecorationStyle& decorStyle) override;
29 #else
drawPath(const RSPath & path,const DecorationStyle & decorStyle)30     void drawPath(const RSPath& path, const DecorationStyle& decorStyle) override {}
31 #endif
32     void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const DecorationStyle& decorStyle) override;
33 
34     void clipRect(const SkRect& rect) override;
35     void translate(SkScalar dx, SkScalar dy) override;
36 
37     void save() override;
38     void restore() override;
39 
40 private:
41     SkCanvas* fCanvas;
42 };
43 
44 class ParagraphPainterAutoRestore {
45 public:
ParagraphPainterAutoRestore(ParagraphPainter * painter)46     ParagraphPainterAutoRestore(ParagraphPainter* painter)
47         : fPainter(painter) {
48         fPainter->save();
49     }
50 
~ParagraphPainterAutoRestore()51     ~ParagraphPainterAutoRestore() {
52         fPainter->restore();
53     }
54 
55 private:
56     ParagraphPainter*   fPainter;
57 };
58 
59 }  // namespace textlayout
60 }  // namespace skia
61 
62 #endif  // ParagraphPainterImpl_DEFINED
63