Chromium Code Reviews| Index: sky/engine/core/painting/Canvas.cpp |
| diff --git a/sky/engine/core/painting/Canvas.cpp b/sky/engine/core/painting/Canvas.cpp |
| index 5e25baf4893daf35302066caabb6bb74ca24b369..f0f587a3e62fd234fc44959b22dd51501ba49c20 100644 |
| --- a/sky/engine/core/painting/Canvas.cpp |
| +++ b/sky/engine/core/painting/Canvas.cpp |
| @@ -13,6 +13,14 @@ |
| namespace blink { |
| +SkRect toSkRect(Vector<float> rect) |
| +{ |
| + ASSERT(rect.size() == 4); |
| + SkRect sk_rect; |
| + sk_rect.set(rect[0], rect[1], rect[2], rect[3]); |
| + return sk_rect; |
| +} |
| + |
| Canvas::Canvas(const FloatSize& size) |
| : m_size(size) |
| { |
| @@ -24,6 +32,112 @@ Canvas::~Canvas() |
| { |
| } |
| +void Canvas::save() |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->save(); |
| +} |
| + |
| +void Canvas::saveLayer(Vector<float> bounds, Paint* paint) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + SkRect sk_bounds; |
| + if (bounds.size() != 0) |
|
eseidel
2015/05/13 20:24:37
isEmpty()
|
| + sk_bounds = toSkRect(bounds); |
| + m_canvas->saveLayer(bounds.size() != 0 ? &sk_bounds : nullptr, |
|
eseidel
2015/05/13 20:24:38
isEmpty() again.
|
| + paint ? &paint->paint() : nullptr); |
| +} |
| + |
| +void Canvas::restore() |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->restore(); |
| +} |
| + |
| +void Canvas::translate(float dx, float dy) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->translate(dx, dy); |
| +} |
| + |
| +void Canvas::scale(float sx, float sy) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->scale(sx, sy); |
| +} |
| + |
| +void Canvas::rotate(float degrees) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->rotate(degrees); |
| +} |
| + |
| +void Canvas::skew(float sx, float sy) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->skew(sx, sy); |
| +} |
| + |
| +void Canvas::concat(Vector<float> matrix) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + ASSERT(matrix.size() == 9); |
| + SkMatrix sk_matrix; |
| + sk_matrix.set9(matrix.data()); |
| + m_canvas->concat(sk_matrix); |
| +} |
| + |
| +void Canvas::clipRect(Vector<float> rect) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->clipRect(toSkRect(rect)); |
| +} |
| + |
| +void Canvas::drawPaint(Paint* paint) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(paint); |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->drawPaint(paint->paint()); |
| +} |
| + |
| +void Canvas::drawOval(Vector<float> rect, Paint* paint) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(paint); |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->drawOval(toSkRect(rect), paint->paint()); |
| +} |
| + |
| +void Canvas::drawRect(Vector<float> rect, Paint* paint) |
| +{ |
| + if (!m_canvas) |
| + return; |
| + ASSERT(paint); |
| + ASSERT(m_displayList->isRecording()); |
| + m_canvas->drawRect(toSkRect(rect), paint->paint()); |
| +} |
| + |
| void Canvas::drawCircle(double x, double y, double radius, Paint* paint) |
| { |
| if (!m_canvas) |