Index: src/core/SkCanvasPriv.h |
diff --git a/src/core/SkCanvasPriv.h b/src/core/SkCanvasPriv.h |
index dfae154ecb8e4910669b39a55bbf55e8c280aa0a..dd920ea249085ec8116ba73ae8a4c5e076d6c97a 100644 |
--- a/src/core/SkCanvasPriv.h |
+++ b/src/core/SkCanvasPriv.h |
@@ -9,6 +9,7 @@ |
#define SkCanvasPriv_DEFINED |
#include "SkCanvas.h" |
+#include "SkData.h" |
class SkAutoCanvasMatrixPaint : SkNoncopyable { |
public: |
@@ -20,4 +21,30 @@ private: |
int fSaveCount; |
}; |
+/** |
+ * Allows NinePatchDivs to be serialized to and from data. |
+ */ |
+struct SkNinePatchDivs : SkCanvas::NinePatchDivs { |
+ |
+ sk_sp<SkData> asData() const { |
+ sk_sp<SkData> data = SkData::MakeUninitialized(sizeof(int32_t) * (2 + fXCount + fYCount)); |
+ int32_t* ptr = (int32_t*) data->writable_data(); |
+ ptr[0] = fXCount; |
+ ptr[1] = fYCount; |
+ memcpy(&ptr[2], fXDivs, sizeof(int32_t) * fXCount); |
+ memcpy(&ptr[2 + fXCount], fYDivs, sizeof(int32_t) * fYCount); |
+ return data; |
+ } |
+ |
+ static NinePatchDivs FromData(SkData* data) { |
+ int32_t* ptr = (int32_t*) data->writable_data(); |
+ NinePatchDivs divs; |
+ divs.fXCount = ptr[0]; |
+ divs.fYCount = ptr[1]; |
+ divs.fXDivs = &ptr[2]; |
+ divs.fYDivs = &ptr[2 + divs.fXCount]; |
+ return divs; |
+ } |
+}; |
+ |
#endif |