Index: include/core/SkPicture.h |
diff --git a/include/core/SkPicture.h b/include/core/SkPicture.h |
index d01cadce891598b77c08db554c5ec4f42051fb10..0bac3f7e9ed62fb4bf8fbe1370594d1ddc9d2ac8 100644 |
--- a/include/core/SkPicture.h |
+++ b/include/core/SkPicture.h |
@@ -11,6 +11,7 @@ |
#define SkPicture_DEFINED |
#include "SkBitmap.h" |
+#include "SkImageDecoder.h" |
#include "SkRefCnt.h" |
class SkBBoxHierarchy; |
@@ -22,6 +23,8 @@ class SkPictureRecord; |
class SkStream; |
class SkWStream; |
+struct SkPictInfo; |
+ |
/** \class SkPicture |
The SkPicture class records the drawing commands made to a canvas, to |
@@ -42,13 +45,6 @@ public: |
SkPicture(const SkPicture& src); |
/** |
- * Recreate a picture that was serialized into a stream. |
- * On failure, silently creates an empty picture. |
- * @param SkStream Serialized picture data. |
- */ |
- explicit SkPicture(SkStream*); |
- |
- /** |
* Function signature defining a function that sets up an SkBitmap from encoded data. On |
* success, the SkBitmap should have its Config, width, height, rowBytes and pixelref set. |
* If the installed pixelref has decoded the data into pixels, then the src buffer need not be |
@@ -64,12 +60,13 @@ public: |
/** |
* Recreate a picture that was serialized into a stream. |
* @param SkStream Serialized picture data. |
- * @param success Output parameter. If non-NULL, will be set to true if the picture was |
- * deserialized successfully and false otherwise. |
* @param proc Function pointer for installing pixelrefs on SkBitmaps representing the |
* encoded bitmap data from the stream. |
+ * @return A new SkPicture representing the serialized data, or NULL if the stream is |
+ * invalid. |
*/ |
- SkPicture(SkStream*, bool* success, InstallPixelRefProc proc); |
+ static SkPicture* CreateFromStream(SkStream*, |
+ InstallPixelRefProc proc = &SkImageDecoder::DecodeMemory); |
virtual ~SkPicture(); |
@@ -220,13 +217,20 @@ protected: |
SkPictureRecord* fRecord; |
int fWidth, fHeight; |
+ // Create a new SkPicture from an existing SkPicturePlayback. Ref count of |
+ // playback is unchanged. |
+ SkPicture(SkPicturePlayback*, int width, int height); |
+ |
// For testing. Derived classes may instantiate an alternate |
// SkBBoxHierarchy implementation |
virtual SkBBoxHierarchy* createBBoxHierarchy() const; |
+ // Return true if the SkStream represents a serialized picture, and fills out |
+ // SkPictInfo. After this function returns, the SkStream is not rewound; it |
+ // will be ready to be parsed to create an SkPicturePlayback. |
+ // If false is returned, SkPictInfo is unmodified. |
+ static bool StreamIsSKP(SkStream*, SkPictInfo*); |
private: |
- void initFromStream(SkStream*, bool* success, InstallPixelRefProc); |
- |
friend class SkFlatPicture; |
friend class SkPicturePlayback; |