Index: src/utils/SkDeferredCanvas.cpp |
diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp |
index efc65463b52181a75aee7c854f22b0893e37670d..af604a2119e3ee712bd0a174cf6fa1afc8fa4365 100644 |
--- a/src/utils/SkDeferredCanvas.cpp |
+++ b/src/utils/SkDeferredCanvas.cpp |
@@ -137,8 +137,7 @@ void DeferredPipeController::playback(bool silent) { |
//----------------------------------------------------------------------------- |
// DeferredDevice |
//----------------------------------------------------------------------------- |
-// FIXME: Derive from SkBaseDevice. |
-class DeferredDevice : public SkBitmapDevice { |
+class DeferredDevice : public SkBaseDevice { |
public: |
explicit DeferredDevice(SkSurface* surface); |
~DeferredDevice(); |
@@ -163,6 +162,10 @@ public: |
virtual uint32_t getDeviceCapabilities() SK_OVERRIDE; |
virtual int width() const SK_OVERRIDE; |
virtual int height() const SK_OVERRIDE; |
+ virtual SkBitmap::Config config() const SK_OVERRIDE; |
+ virtual bool isOpaque() const SK_OVERRIDE; |
+ virtual SkImageInfo imageInfo() const SK_OVERRIDE; |
+ |
virtual GrRenderTarget* accessRenderTarget() SK_OVERRIDE; |
virtual SkBaseDevice* onCreateCompatibleDevice(SkBitmap::Config config, |
@@ -199,9 +202,11 @@ protected: |
virtual void drawRect(const SkDraw&, const SkRect& r, |
const SkPaint& paint) SK_OVERRIDE |
{SkASSERT(0);} |
+ virtual void drawOval(const SkDraw&, const SkRect&, const SkPaint&) SK_OVERRIDE |
+ {SkASSERT(0);} |
virtual void drawRRect(const SkDraw&, const SkRRect& rr, |
const SkPaint& paint) SK_OVERRIDE |
- {SkASSERT(0);} |
+ {SkASSERT(0);} |
virtual void drawPath(const SkDraw&, const SkPath& path, |
const SkPaint& paint, |
const SkMatrix* prePathMatrix = NULL, |
@@ -210,6 +215,10 @@ protected: |
virtual void drawBitmap(const SkDraw&, const SkBitmap& bitmap, |
const SkMatrix& matrix, const SkPaint& paint) SK_OVERRIDE |
{SkASSERT(0);} |
+ virtual void drawBitmapRect(const SkDraw&, const SkBitmap&, const SkRect*, |
+ const SkRect&, const SkPaint&, |
+ SkCanvas::DrawBitmapRectFlags) SK_OVERRIDE |
+ {SkASSERT(0);} |
virtual void drawSprite(const SkDraw&, const SkBitmap& bitmap, |
int x, int y, const SkPaint& paint) SK_OVERRIDE |
{SkASSERT(0);} |
@@ -234,8 +243,24 @@ protected: |
virtual void drawDevice(const SkDraw&, SkBaseDevice*, int x, int y, |
const SkPaint&) SK_OVERRIDE |
{SkASSERT(0);} |
+ |
+ virtual void lockPixels() SK_OVERRIDE { SkASSERT(0); } |
+ virtual void unlockPixels() SK_OVERRIDE { SkASSERT(0); } |
+ |
+ virtual bool allowImageFilter(const SkImageFilter*) SK_OVERRIDE { |
+ return false; |
+ } |
+ virtual bool canHandleImageFilter(const SkImageFilter*) SK_OVERRIDE { |
+ return false; |
+ } |
+ virtual bool filterImage(const SkImageFilter*, const SkBitmap&, |
+ const SkMatrix&, SkBitmap*, SkIPoint*) SK_OVERRIDE { |
+ return false; |
+ } |
+ |
private: |
virtual void flush() SK_OVERRIDE; |
+ virtual void replaceBitmapBackendForRasterSurface(const SkBitmap&) SK_OVERRIDE {} |
void beginRecording(); |
void init(); |
@@ -255,12 +280,7 @@ private: |
size_t fBitmapSizeThreshold; |
}; |
-DeferredDevice::DeferredDevice(SkSurface* surface) |
- : SkBitmapDevice(SkBitmap::kNo_Config, |
- surface->getCanvas()->getDevice()->width(), |
- surface->getCanvas()->getDevice()->height(), |
- surface->getCanvas()->getDevice()->isOpaque(), |
- surface->getCanvas()->getDevice()->getDeviceProperties()) { |
+DeferredDevice::DeferredDevice(SkSurface* surface) { |
fMaxRecordingStorageBytes = kDefaultMaxRecordingStorageBytes; |
fNotificationClient = NULL; |
fImmediateCanvas = NULL; |
@@ -427,6 +447,18 @@ int DeferredDevice::height() const { |
return immediateDevice()->height(); |
} |
+SkBitmap::Config DeferredDevice::config() const { |
+ return immediateDevice()->config(); |
+} |
+ |
+bool DeferredDevice::isOpaque() const { |
+ return immediateDevice()->isOpaque(); |
+} |
+ |
+SkImageInfo DeferredDevice::imageInfo() const { |
+ return immediateDevice()->imageInfo(); |
+} |
+ |
GrRenderTarget* DeferredDevice::accessRenderTarget() { |
this->flushPendingCommands(kNormal_PlaybackMode); |
return immediateDevice()->accessRenderTarget(); |