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