/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkFlattenableBuffers.h" #include "SkPaint.h" #include "SkTypeface.h" SkFlattenableReadBuffer::SkFlattenableReadBuffer() { // Set default values. These should be explicitly set by our client // via setFlags() if the buffer came from serialization. fFlags = 0; #ifdef SK_SCALAR_IS_FLOAT fFlags |= kScalarIsFloat_Flag; #endif if (8 == sizeof(void*)) { fFlags |= kPtrIs64Bit_Flag; } } SkFlattenableReadBuffer::~SkFlattenableReadBuffer() { } void* SkFlattenableReadBuffer::readFunctionPtr() { void* proc; SkASSERT(sizeof(void*) == this->getArrayCount()); this->readByteArray(&proc); return proc; } void SkFlattenableReadBuffer::readPaint(SkPaint* paint) { paint->unflatten(*this); } /////////////////////////////////////////////////////////////////////////////// SkFlattenableWriteBuffer::SkFlattenableWriteBuffer() { fFlags = (Flags)0; } SkFlattenableWriteBuffer::~SkFlattenableWriteBuffer() { } void SkFlattenableWriteBuffer::writeFunctionPtr(void* ptr) { void* ptrStorage[] = { ptr }; this->writeByteArray(ptrStorage, sizeof(void*)); } void SkFlattenableWriteBuffer::writePaint(const SkPaint& paint) { paint.flatten(*this); } void SkFlattenableWriteBuffer::flattenObject(SkFlattenable* obj, SkFlattenableWriteBuffer& buffer) { obj->flatten(buffer); }