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