blob: dec4d44682ff80f0424d195f9fbb7354f08143de [file] [log] [blame]
// 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