From 119468b71f8f4f45657ab30ead331be665de5a57 Mon Sep 17 00:00:00 2001 From: reed Date: Tue, 5 May 2015 05:42:02 -0700 Subject: Revert of Make drawImage a virtual on SkDevice (patchset #3 id:40001 of https://codereview.chromium.org/11188… (patchset #2 id:20001 of https://codereview.chromium.org/1122813002/) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reason for revert: did not update DeferredCanvas Original issue's description: > Make drawImage a virtual on SkDevice (patchset #3 id:40001 of https://codereview.chromium.org/1118823004/)" > > Fixed serialization from prev CL > > This reverts commit 973d1f1f60f2710a268a3165aa4f3460502d4be5. > > BUG=skia:3803 > TBR= > > Committed: https://skia.googlesource.com/skia/+/5392785080001fe737fac9e5801fc2127a78d4fb TBR= NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:3803 Review URL: https://codereview.chromium.org/1123743006 --- src/image/SkImage.cpp | 9 +++++++++ src/image/SkImage_Base.h | 3 +++ src/image/SkImage_Gpu.cpp | 9 +++++++++ src/image/SkImage_Gpu.h | 3 +++ src/image/SkImage_Raster.cpp | 13 +++++++++++++ 5 files changed, 37 insertions(+) (limited to 'src/image') diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index 494e21004a..f427755d47 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -25,6 +25,15 @@ uint32_t SkImage::NextUniqueID() { return id; } +void SkImage::draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const { + as_IB(this)->onDraw(canvas, x, y, paint); +} + +void SkImage::drawRect(SkCanvas* canvas, const SkRect* src, const SkRect& dst, + const SkPaint* paint) const { + as_IB(this)->onDrawRect(canvas, src, dst, paint); +} + const void* SkImage::peekPixels(SkImageInfo* info, size_t* rowBytes) const { SkImageInfo infoStorage; size_t rowBytesStorage; diff --git a/src/image/SkImage_Base.h b/src/image/SkImage_Base.h index 5daf4195e2..512c80c44b 100644 --- a/src/image/SkImage_Base.h +++ b/src/image/SkImage_Base.h @@ -36,6 +36,9 @@ public: const SkSurfaceProps& props() const { return fProps; } + virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) const = 0; + virtual void onDrawRect(SkCanvas*, const SkRect* src, + const SkRect& dst, const SkPaint*) const = 0; virtual SkSurface* onNewSurface(const SkImageInfo&, const SkSurfaceProps&) const = 0; virtual const void* onPeekPixels(SkImageInfo*, size_t* /*rowBytes*/) const { diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp index eec0d19760..7ccff17d9b 100644 --- a/src/image/SkImage_Gpu.cpp +++ b/src/image/SkImage_Gpu.cpp @@ -26,6 +26,15 @@ SkShader* SkImage_Gpu::onNewShader(SkShader::TileMode tileX, return SkShader::CreateBitmapShader(fBitmap, tileX, tileY, localMatrix); } +void SkImage_Gpu::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const { + canvas->drawBitmap(fBitmap, x, y, paint); +} + +void SkImage_Gpu::onDrawRect(SkCanvas* canvas, const SkRect* src, const SkRect& dst, + const SkPaint* paint) const { + canvas->drawBitmapRectToRect(fBitmap, src, dst, paint); +} + SkSurface* SkImage_Gpu::onNewSurface(const SkImageInfo& info, const SkSurfaceProps& props) const { GrContext* ctx = this->getTexture()->getContext(); // TODO: Change signature of onNewSurface to take a budgeted param. diff --git a/src/image/SkImage_Gpu.h b/src/image/SkImage_Gpu.h index 7b38e60ea3..a771ddab24 100644 --- a/src/image/SkImage_Gpu.h +++ b/src/image/SkImage_Gpu.h @@ -21,6 +21,9 @@ public: SkImage_Gpu(const SkBitmap&, int sampleCountForNewSurfaces, SkSurface::Budgeted); + void onDraw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) const override; + void onDrawRect(SkCanvas*, const SkRect* src, const SkRect& dst, + const SkPaint*) const override; SkSurface* onNewSurface(const SkImageInfo&, const SkSurfaceProps&) const override; GrTexture* onGetTexture() const override; bool getROPixels(SkBitmap*) const override; diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp index 20ae62c9f7..acf805829d 100644 --- a/src/image/SkImage_Raster.cpp +++ b/src/image/SkImage_Raster.cpp @@ -53,6 +53,8 @@ public: SkImage_Raster(const SkImageInfo&, SkData*, size_t rb, const SkSurfaceProps*); virtual ~SkImage_Raster(); + void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) const override; + void onDrawRect(SkCanvas*, const SkRect*, const SkRect&, const SkPaint*) const override; SkSurface* onNewSurface(const SkImageInfo&, const SkSurfaceProps&) const override; bool onReadPixels(const SkImageInfo&, void*, size_t, int srcX, int srcY) const override; const void* onPeekPixels(SkImageInfo*, size_t* /*rowBytes*/) const override; @@ -118,6 +120,17 @@ SkShader* SkImage_Raster::onNewShader(SkShader::TileMode tileX, SkShader::TileMo return SkShader::CreateBitmapShader(fBitmap, tileX, tileY, localMatrix); } +void SkImage_Raster::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const { + SkBitmap shallowCopy(fBitmap); + canvas->drawBitmap(shallowCopy, x, y, paint); +} + +void SkImage_Raster::onDrawRect(SkCanvas* canvas, const SkRect* src, const SkRect& dst, + const SkPaint* paint) const { + SkBitmap shallowCopy(fBitmap); + canvas->drawBitmapRectToRect(shallowCopy, src, dst, paint); +} + SkSurface* SkImage_Raster::onNewSurface(const SkImageInfo& info, const SkSurfaceProps& props) const { return SkSurface::NewRaster(info, &props); } -- cgit v1.2.3