diff --git a/sky/engine/core/loader/CanvasImageDecoder.cpp b/sky/engine/core/loader/CanvasImageDecoder.cpp index 084d21e017339f3f22ba01d7d37edd32d8893ceb..702021852ba5509f0f3c9d05136227bcd46de95c 100644 --- a/sky/engine/core/loader/CanvasImageDecoder.cpp +++ b/sky/engine/core/loader/CanvasImageDecoder.cpp @@ -57,7 +57,9 @@ void CanvasImageDecoder::OnDataComplete() { } RefPtr resultImage = CanvasImage::create(); - resultImage->setBitmap(decoder->frameBufferAtIndex(0)->getSkBitmap()); + ImageFrame* imageFrame = decoder->frameBufferAtIndex(0); + RefPtr skImage = adoptRef(SkImage::NewFromBitmap(imageFrame->getSkBitmap())); + resultImage->setImage(skImage.release()); callback_->handleEvent(resultImage.get()); } diff --git a/sky/engine/core/painting/Canvas.cpp b/sky/engine/core/painting/Canvas.cpp index 4624833ca7fc5bcc93b6b25a4daa5f9fb0cec54a..c10a34087dd47aeecd11c8fe2e0a4a3aa1fbe747 100644 --- a/sky/engine/core/painting/Canvas.cpp +++ b/sky/engine/core/painting/Canvas.cpp @@ -229,14 +229,14 @@ void Canvas::drawImage(const CanvasImage* image, const Point& p, const Paint* pa if (!m_canvas) return; ASSERT(image); - m_canvas->drawBitmap(image->bitmap(), p.sk_point.x(), p.sk_point.y(), &paint->paint()); + m_canvas->drawImage(image->image(), p.sk_point.x(), p.sk_point.y(), &paint->paint()); } void Canvas::drawImageRect(const CanvasImage* image, Rect& src, Rect& dst, Paint* paint) { if (!m_canvas) return; ASSERT(image); - m_canvas->drawBitmapRect(image->bitmap(), &src.sk_rect, dst.sk_rect, &paint->paint()); + m_canvas->drawImageRect(image->image(), &src.sk_rect, dst.sk_rect, &paint->paint()); } void Canvas::drawPicture(Picture* picture) @@ -272,7 +272,7 @@ void Canvas::drawAtlas(CanvasImage* atlas, { if (!m_canvas) return; - RefPtr skImage = adoptRef(SkImage::NewFromBitmap(atlas->bitmap())); + RefPtr skImage = atlas->image(); if (transforms.size() != rects.size()) return es.ThrowRangeError("transforms and rects lengths must match"); if (colors.size() && colors.size() != rects.size()) diff --git a/sky/engine/core/painting/CanvasImage.cpp b/sky/engine/core/painting/CanvasImage.cpp index a48ecd35969b061e5730b2756dbea70455b52185..3e105d97b34f744b176256c92b48220169133c16 100644 --- a/sky/engine/core/painting/CanvasImage.cpp +++ b/sky/engine/core/painting/CanvasImage.cpp @@ -13,11 +13,11 @@ CanvasImage::~CanvasImage() { } int CanvasImage::width() const { - return bitmap_.width(); + return image_->width(); } int CanvasImage::height() const { - return bitmap_.height(); + return image_->height(); } } // namespace blink diff --git a/sky/engine/core/painting/CanvasImage.h b/sky/engine/core/painting/CanvasImage.h index c92e9ebd9885a4287ad9e4cf48d24f9515d1bd09..c3ff9b14a14671d3e58b211631d34dd777677552 100644 --- a/sky/engine/core/painting/CanvasImage.h +++ b/sky/engine/core/painting/CanvasImage.h @@ -9,7 +9,7 @@ #include "sky/engine/tonic/dart_wrappable.h" #include "sky/engine/wtf/PassRefPtr.h" #include "sky/engine/wtf/text/AtomicString.h" -#include "third_party/skia/include/core/SkBitmap.h" +#include "third_party/skia/include/core/SkImage.h" namespace blink { @@ -23,13 +23,13 @@ class CanvasImage final : public RefCounted, int width() const; int height() const; - const SkBitmap& bitmap() const { return bitmap_; } - void setBitmap(const SkBitmap& bitmap) { bitmap_ = bitmap; } + SkImage* image() const { return image_.get(); } + void setImage(PassRefPtr image) { image_ = image; } private: CanvasImage(); - SkBitmap bitmap_; + RefPtr image_; }; } // namespace blink