add drawData() to canvas, to record data blobs
git-svn-id: http://skia.googlecode.com/svn/trunk@452 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h
index 8fba6cf..40b5c56 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -626,6 +626,14 @@
const uint16_t indices[], int indexCount,
const SkPaint& paint);
+ /** Send a blob of data to the canvas.
+ For canvases that draw, this call is effectively a no-op, as the data
+ is not parsed, but just ignored. However, this call exists for
+ subclasses like SkPicture's recording canvas, that can store the data
+ and then play it back later (via another call to drawData).
+ */
+ virtual void drawData(const void* data, size_t length);
+
//////////////////////////////////////////////////////////////////////////
/** Get the current bounder object.
diff --git a/include/utils/SkDumpCanvas.h b/include/utils/SkDumpCanvas.h
index 6f16c92..3731bef 100644
--- a/include/utils/SkDumpCanvas.h
+++ b/include/utils/SkDumpCanvas.h
@@ -34,7 +34,8 @@
kDrawText_Verb,
kDrawPicture_Verb,
kDrawShape_Verb,
- kDrawVertices_Verb
+ kDrawVertices_Verb,
+ kDrawData_Verb
};
/** Subclasses of this are installed on the DumpCanvas, and then called for
@@ -102,6 +103,7 @@
const SkColor colors[], SkXfermode* xmode,
const uint16_t indices[], int indexCount,
const SkPaint& paint);
+ virtual void drawData(const void*, size_t);
private:
Dumper* fDumper;
diff --git a/include/utils/SkProxyCanvas.h b/include/utils/SkProxyCanvas.h
index f2e57ab..082e0fd 100644
--- a/include/utils/SkProxyCanvas.h
+++ b/include/utils/SkProxyCanvas.h
@@ -75,7 +75,8 @@
const SkColor colors[], SkXfermode* xmode,
const uint16_t indices[], int indexCount,
const SkPaint& paint);
-
+ virtual void drawData(const void* data, size_t length);
+
virtual SkBounder* setBounder(SkBounder* bounder);
virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter);