diff --git a/sky/engine/core/dart/painting.dart b/sky/engine/core/dart/painting.dart index 09d029ffff6..936ffae1398 100644 --- a/sky/engine/core/dart/painting.dart +++ b/sky/engine/core/dart/painting.dart @@ -407,6 +407,8 @@ class Canvas extends NativeFieldWrapperClass2 { /// [PictureRecorder]. void drawPicture(Picture picture) native "Canvas_drawPicture"; + void drawParagraph(Paragraph paragraph, Offset offset) native "Canvas_drawParagraph"; + void drawVertices(VertexMode vertexMode, List vertices, List textureCoordinates, diff --git a/sky/engine/core/painting/Canvas.cpp b/sky/engine/core/painting/Canvas.cpp index 5c950c30ab2..cb501c1aff6 100644 --- a/sky/engine/core/painting/Canvas.cpp +++ b/sky/engine/core/painting/Canvas.cpp @@ -8,6 +8,7 @@ #include "sky/engine/core/painting/CanvasImage.h" #include "sky/engine/core/painting/Matrix.h" +#include "sky/engine/core/text/Paragraph.h" #include "sky/engine/platform/geometry/IntRect.h" #include "sky/engine/tonic/dart_args.h" #include "sky/engine/tonic/dart_binding_macros.h" @@ -52,6 +53,7 @@ IMPLEMENT_WRAPPERTYPEINFO(ui, Canvas); V(Canvas, drawImageRect) \ V(Canvas, drawImageNine) \ V(Canvas, drawPicture) \ + V(Canvas, drawParagraph) \ V(Canvas, drawVertices) \ V(Canvas, drawAtlas) @@ -278,6 +280,13 @@ void Canvas::drawPicture(Picture* picture) m_canvas->drawPicture(picture->toSkia()); } +void Canvas::drawParagraph(Paragraph* paragraph, const Offset& offset) { + if (!m_canvas) + return; + ASSERT(paragraph); + paragraph->paint(this, offset); +} + void Canvas::drawVertices(SkCanvas::VertexMode vertexMode, const std::vector& vertices, const std::vector& textureCoordinates, diff --git a/sky/engine/core/painting/Canvas.h b/sky/engine/core/painting/Canvas.h index c413a3b1c8b..8c1e42667d5 100644 --- a/sky/engine/core/painting/Canvas.h +++ b/sky/engine/core/painting/Canvas.h @@ -22,8 +22,9 @@ #include "third_party/skia/include/core/SkCanvas.h" namespace blink { -class DartLibraryNatives; class CanvasImage; +class DartLibraryNatives; +class Paragraph; template <> struct DartConverter : public DartConverterInteger {}; @@ -66,6 +67,7 @@ public: void drawImageRect(const CanvasImage* image, Rect& src, Rect& dst, const Paint& paint); void drawImageNine(const CanvasImage* image, Rect& center, Rect& dst, const Paint& paint); void drawPicture(Picture* picture); + void drawParagraph(Paragraph* paragraph, const Offset& offset); void drawVertices(SkCanvas::VertexMode vertexMode, const std::vector& vertices,