// 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& blob, SkScalar x, SkScalar y, const SkPaintOrID& paint) override; void drawTextShadow(const sk_sp& 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