OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 #include "SkFlattenableBuffers.h" | 8 #include "SkFlattenableBuffers.h" |
9 #include "SkPaint.h" | 9 #include "SkPaint.h" |
10 #include "SkTypeface.h" | 10 #include "SkTypeface.h" |
11 | 11 |
| 12 #include "SkColorFilter.h" |
| 13 #include "SkDrawLooper.h" |
| 14 #include "SkImageFilter.h" |
| 15 #include "SkMaskFilter.h" |
| 16 #include "SkPathEffect.h" |
| 17 #include "SkPixelRef.h" |
| 18 #include "SkRasterizer.h" |
| 19 #include "SkShader.h" |
| 20 #include "SkUnitMapper.h" |
| 21 #include "SkXfermode.h" |
| 22 |
12 SkFlattenableReadBuffer::SkFlattenableReadBuffer() { | 23 SkFlattenableReadBuffer::SkFlattenableReadBuffer() { |
13 // Set default values. These should be explicitly set by our client | 24 // Set default values. These should be explicitly set by our client |
14 // via setFlags() if the buffer came from serialization. | 25 // via setFlags() if the buffer came from serialization. |
15 fFlags = 0; | 26 fFlags = 0; |
16 #ifdef SK_SCALAR_IS_FLOAT | 27 #ifdef SK_SCALAR_IS_FLOAT |
17 fFlags |= kScalarIsFloat_Flag; | 28 fFlags |= kScalarIsFloat_Flag; |
18 #endif | 29 #endif |
19 if (8 == sizeof(void*)) { | 30 if (8 == sizeof(void*)) { |
20 fFlags |= kPtrIs64Bit_Flag; | 31 fFlags |= kPtrIs64Bit_Flag; |
21 } | 32 } |
22 } | 33 } |
23 | 34 |
24 SkFlattenableReadBuffer::~SkFlattenableReadBuffer() { } | 35 SkFlattenableReadBuffer::~SkFlattenableReadBuffer() { } |
25 | 36 |
26 void* SkFlattenableReadBuffer::readFunctionPtr() { | 37 void* SkFlattenableReadBuffer::readFunctionPtr() { |
27 void* proc; | 38 void* proc; |
28 SkASSERT(sizeof(void*) == this->getArrayCount()); | 39 SkASSERT(sizeof(void*) == this->getArrayCount()); |
29 this->readByteArray(&proc); | 40 this->readByteArray(&proc); |
30 return proc; | 41 return proc; |
31 } | 42 } |
32 | 43 |
33 void SkFlattenableReadBuffer::readPaint(SkPaint* paint) { | 44 void SkFlattenableReadBuffer::readPaint(SkPaint* paint) { |
34 paint->unflatten(*this); | 45 paint->unflatten(*this); |
35 } | 46 } |
36 | 47 |
| 48 template <typename T> T* SkFlattenableReadBuffer::readFlattenableT() { |
| 49 return static_cast<T*>(this->readFlattenable(T::GetFlattenableType())); |
| 50 } |
| 51 |
| 52 SkColorFilter* SkFlattenableReadBuffer::readColorFilter() { |
| 53 return this->readFlattenableT<SkColorFilter>(); |
| 54 } |
| 55 |
| 56 SkDrawLooper* SkFlattenableReadBuffer::readDrawLooper() { |
| 57 return this->readFlattenableT<SkDrawLooper>(); |
| 58 } |
| 59 |
| 60 SkImageFilter* SkFlattenableReadBuffer::readImageFilter() { |
| 61 return this->readFlattenableT<SkImageFilter>(); |
| 62 } |
| 63 |
| 64 SkMaskFilter* SkFlattenableReadBuffer::readMaskFilter() { |
| 65 return this->readFlattenableT<SkMaskFilter>(); |
| 66 } |
| 67 |
| 68 SkPathEffect* SkFlattenableReadBuffer::readPathEffect() { |
| 69 return this->readFlattenableT<SkPathEffect>(); |
| 70 } |
| 71 |
| 72 SkPixelRef* SkFlattenableReadBuffer::readPixelRef() { |
| 73 return this->readFlattenableT<SkPixelRef>(); |
| 74 } |
| 75 |
| 76 SkRasterizer* SkFlattenableReadBuffer::readRasterizer() { |
| 77 return this->readFlattenableT<SkRasterizer>(); |
| 78 } |
| 79 |
| 80 SkShader* SkFlattenableReadBuffer::readShader() { |
| 81 return this->readFlattenableT<SkShader>(); |
| 82 } |
| 83 |
| 84 SkUnitMapper* SkFlattenableReadBuffer::readUnitMapper() { |
| 85 return this->readFlattenableT<SkUnitMapper>(); |
| 86 } |
| 87 |
| 88 SkXfermode* SkFlattenableReadBuffer::readXfermode() { |
| 89 return this->readFlattenableT<SkXfermode>(); |
| 90 } |
| 91 |
37 /////////////////////////////////////////////////////////////////////////////// | 92 /////////////////////////////////////////////////////////////////////////////// |
38 | 93 |
39 SkFlattenableWriteBuffer::SkFlattenableWriteBuffer() { | 94 SkFlattenableWriteBuffer::SkFlattenableWriteBuffer() { |
40 fFlags = (Flags)0; | 95 fFlags = (Flags)0; |
41 } | 96 } |
42 | 97 |
43 SkFlattenableWriteBuffer::~SkFlattenableWriteBuffer() { } | 98 SkFlattenableWriteBuffer::~SkFlattenableWriteBuffer() { } |
44 | 99 |
45 void SkFlattenableWriteBuffer::writeFunctionPtr(void* ptr) { | 100 void SkFlattenableWriteBuffer::writeFunctionPtr(void* ptr) { |
46 void* ptrStorage[] = { ptr }; | 101 void* ptrStorage[] = { ptr }; |
47 this->writeByteArray(ptrStorage, sizeof(void*)); | 102 this->writeByteArray(ptrStorage, sizeof(void*)); |
48 } | 103 } |
49 | 104 |
50 void SkFlattenableWriteBuffer::writePaint(const SkPaint& paint) { | 105 void SkFlattenableWriteBuffer::writePaint(const SkPaint& paint) { |
51 paint.flatten(*this); | 106 paint.flatten(*this); |
52 } | 107 } |
53 | 108 |
54 void SkFlattenableWriteBuffer::flattenObject(const SkFlattenable* obj, | 109 void SkFlattenableWriteBuffer::flattenObject(const SkFlattenable* obj, |
55 SkFlattenableWriteBuffer& buffer) { | 110 SkFlattenableWriteBuffer& buffer) { |
56 obj->flatten(buffer); | 111 obj->flatten(buffer); |
57 } | 112 } |
OLD | NEW |