Add Canvas#drawParagraph

Fixes #2694
This commit is contained in:
Adam Barth 2016-03-17 12:38:09 -07:00
parent 8c9f556716
commit 1e55e997de
3 changed files with 14 additions and 1 deletions

View File

@ -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<Point> vertices,
List<Point> textureCoordinates,

View File

@ -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<Point>& vertices,
const std::vector<Point>& textureCoordinates,

View File

@ -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<SkCanvas::VertexMode> : public DartConverterInteger<SkCanvas::VertexMode> {};
@ -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<Point>& vertices,