implement device::clear until we can remove callers in chrome skia/ext
authorreed <reed@google.com>
Tue, 2 Dec 2014 20:53:04 +0000 (12:53 -0800)
committerCommit bot <commit-bot@chromium.org>
Tue, 2 Dec 2014 20:53:05 +0000 (12:53 -0800)
BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/773903002

src/core/SkDevice.cpp

index 570cea4..329ee33 100644 (file)
@@ -10,6 +10,7 @@
 #include "SkDraw.h"
 #include "SkMetaData.h"
 #include "SkPatchUtils.h"
+#include "SkRasterClip.h"
 #include "SkShader.h"
 #include "SkTextBlob.h"
 
@@ -92,7 +93,24 @@ const void* SkBaseDevice::peekPixels(SkImageInfo*, size_t*) { return NULL; }
 
 // DEPRECATED : remove when chrome subclass have been updated to not override clear()
 void SkBaseDevice::clear(SkColor color) {
-    SkFAIL("SkDevice::clear() should not be called");
+    SkPaint paint;
+    paint.setColor(color);
+    paint.setXfermodeMode(SkXfermode::kSrc_Mode);
+
+    SkMatrix matrix;
+    matrix.reset();
+
+    SkRasterClip rc(SkIRect::MakeWH(this->width(), this->height()));
+
+    SkDraw draw;
+    sk_bzero(&draw, sizeof(draw));
+
+    draw.fBitmap = &this->accessBitmap(true);
+    draw.fMatrix = &matrix;
+    draw.fClip   = &rc.forceGetBW();
+    draw.fRC     = &rc;
+    draw.fDevice = this;
+    this->drawPaint(draw, paint);
 }
 
 void SkBaseDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer,