| // Copyright 2019 Google LLC. |
| #ifndef ParagraphPainterImpl_DEFINED |
| #define ParagraphPainterImpl_DEFINED |
| |
| #include "include/core/SkCanvas.h" |
| #include "modules/skparagraph/include/ParagraphPainter.h" |
| |
| namespace skia { |
| namespace textlayout { |
| |
| class CanvasParagraphPainter : public ParagraphPainter { |
| public: |
| CanvasParagraphPainter(SkCanvas* canvas); |
| |
| void drawTextBlob(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, const SkPaintOrID& paint) override; |
| void drawTextShadow(const sk_sp<SkTextBlob>& blob, SkScalar x, SkScalar y, SkColor color, SkScalar blurSigma) override; |
| void drawRect(const SkRect& rect, const SkPaintOrID& paint) override; |
| void drawFilledRect(const SkRect& rect, const DecorationStyle& decorStyle) override; |
| void drawPath(const SkPath& path, const DecorationStyle& decorStyle) override; |
| void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const DecorationStyle& decorStyle) override; |
| |
| void clipRect(const SkRect& rect) override; |
| void translate(SkScalar dx, SkScalar dy) override; |
| |
| void save() override; |
| void restore() override; |
| |
| private: |
| SkCanvas* fCanvas; |
| }; |
| |
| class ParagraphPainterAutoRestore { |
| public: |
| ParagraphPainterAutoRestore(ParagraphPainter* painter) |
| : fPainter(painter) { |
| fPainter->save(); |
| } |
| |
| ~ParagraphPainterAutoRestore() { |
| fPainter->restore(); |
| } |
| |
| private: |
| ParagraphPainter* fPainter; |
| }; |
| |
| } // namespace textlayout |
| } // namespace skia |
| |
| #endif // ParagraphPainterImpl_DEFINED |