diff options
-rw-r--r-- | gyp/core.gypi | 2 | ||||
-rw-r--r-- | include/core/SkFlattenableSerialization.h | 20 | ||||
-rw-r--r-- | src/core/SkFlattenableSerialization.cpp | 28 |
3 files changed, 50 insertions, 0 deletions
diff --git a/gyp/core.gypi b/gyp/core.gypi index 5c3fdf575d..d3d998e671 100644 --- a/gyp/core.gypi +++ b/gyp/core.gypi @@ -87,6 +87,7 @@ '<(skia_src_path)/core/SkFilterShader.cpp', '<(skia_src_path)/core/SkFlattenable.cpp', '<(skia_src_path)/core/SkFlattenableBuffers.cpp', + '<(skia_src_path)/core/SkFlattenableSerialization.cpp', '<(skia_src_path)/core/SkFloat.cpp', '<(skia_src_path)/core/SkFloat.h', '<(skia_src_path)/core/SkFloatBits.cpp', @@ -235,6 +236,7 @@ '<(skia_include_path)/core/SkError.h', '<(skia_include_path)/core/SkFixed.h', '<(skia_include_path)/core/SkFlattenable.h', + '<(skia_include_path)/core/SkFlattenableSerialization.h', '<(skia_include_path)/core/SkFloatBits.h', '<(skia_include_path)/core/SkFloatingPoint.h', '<(skia_include_path)/core/SkFontHost.h', diff --git a/include/core/SkFlattenableSerialization.h b/include/core/SkFlattenableSerialization.h new file mode 100644 index 0000000000..e9076348fd --- /dev/null +++ b/include/core/SkFlattenableSerialization.h @@ -0,0 +1,20 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFlattenableSerialization_DEFINED +#define SkFlattenableSerialization_DEFINED + +#include "SkTypes.h" + +class SkData; +class SkFlattenable; + +SK_API SkData* SkSerializeFlattenable(SkFlattenable*); +SK_API SkFlattenable* SkDeserializeFlattenable(const void* data, size_t size); + +#endif + diff --git a/src/core/SkFlattenableSerialization.cpp b/src/core/SkFlattenableSerialization.cpp new file mode 100644 index 0000000000..b74c82f051 --- /dev/null +++ b/src/core/SkFlattenableSerialization.cpp @@ -0,0 +1,28 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkFlattenableSerialization.h" + +#include "SkData.h" +#include "SkFlattenable.h" +#include "SkOrderedReadBuffer.h" +#include "SkOrderedWriteBuffer.h" + +SkData* SkSerializeFlattenable(SkFlattenable* flattenable) { + SkOrderedWriteBuffer writer(1024); + writer.setFlags(SkOrderedWriteBuffer::kCrossProcess_Flag); + writer.writeFlattenable(flattenable); + uint32_t size = writer.bytesWritten(); + void* data = sk_malloc_throw(size); + writer.writeToMemory(data); + return SkData::NewFromMalloc(data, size); +} + +SkFlattenable* SkDeserializeFlattenable(const void* data, size_t size) { + SkOrderedReadBuffer buffer(data, size); + return buffer.readFlattenable(); +} |