1 /* 2 * Copyright 2013 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "SkFlattenableSerialization.h" 9 10 #include "SkData.h" 11 #include "SkValidatingReadBuffer.h" 12 #include "SkWriteBuffer.h" 13 SkValidatingSerializeFlattenable(SkFlattenable * flattenable)14SkData* SkValidatingSerializeFlattenable(SkFlattenable* flattenable) { 15 SkBinaryWriteBuffer writer; 16 writer.writeFlattenable(flattenable); 17 size_t size = writer.bytesWritten(); 18 auto data = SkData::MakeUninitialized(size); 19 writer.writeToMemory(data->writable_data()); 20 return data.release(); 21 } 22 SkValidatingDeserializeFlattenable(const void * data,size_t size,SkFlattenable::Type type)23SkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size, 24 SkFlattenable::Type type) { 25 SkValidatingReadBuffer buffer(data, size); 26 return buffer.readFlattenable(type); 27 } 28 SkValidatingDeserializeImageFilter(const void * data,size_t size)29sk_sp<SkImageFilter> SkValidatingDeserializeImageFilter(const void* data, size_t size) { 30 return sk_sp<SkImageFilter>((SkImageFilter*)SkValidatingDeserializeFlattenable( 31 data, size, SkImageFilter::GetFlattenableType())); 32 } 33