| |
| /* |
| * 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); |
| } |