OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
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 | 8 |
9 | 9 |
10 #include "SkComposeShader.h" | 10 #include "SkComposeShader.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 }; | 53 }; |
54 #define SkAutoAlphaRestore(...) SK_REQUIRE_LOCAL_VAR(SkAutoAlphaRestore) | 54 #define SkAutoAlphaRestore(...) SK_REQUIRE_LOCAL_VAR(SkAutoAlphaRestore) |
55 | 55 |
56 SkFlattenable* SkComposeShader::CreateProc(SkReadBuffer& buffer) { | 56 SkFlattenable* SkComposeShader::CreateProc(SkReadBuffer& buffer) { |
57 SkAutoTUnref<SkShader> shaderA(buffer.readShader()); | 57 SkAutoTUnref<SkShader> shaderA(buffer.readShader()); |
58 SkAutoTUnref<SkShader> shaderB(buffer.readShader()); | 58 SkAutoTUnref<SkShader> shaderB(buffer.readShader()); |
59 SkAutoTUnref<SkXfermode> mode(buffer.readXfermode()); | 59 SkAutoTUnref<SkXfermode> mode(buffer.readXfermode()); |
60 if (!shaderA.get() || !shaderB.get()) { | 60 if (!shaderA.get() || !shaderB.get()) { |
61 return NULL; | 61 return NULL; |
62 } | 62 } |
63 return SkNEW_ARGS(SkComposeShader, (shaderA, shaderB, mode)); | 63 return new SkComposeShader(shaderA, shaderB, mode); |
64 } | 64 } |
65 | 65 |
66 void SkComposeShader::flatten(SkWriteBuffer& buffer) const { | 66 void SkComposeShader::flatten(SkWriteBuffer& buffer) const { |
67 buffer.writeFlattenable(fShaderA); | 67 buffer.writeFlattenable(fShaderA); |
68 buffer.writeFlattenable(fShaderB); | 68 buffer.writeFlattenable(fShaderB); |
69 buffer.writeFlattenable(fMode); | 69 buffer.writeFlattenable(fMode); |
70 } | 70 } |
71 | 71 |
72 template <typename T> void safe_call_destructor(T* obj) { | 72 template <typename T> void safe_call_destructor(T* obj) { |
73 if (obj) { | 73 if (obj) { |
(...skipping 21 matching lines...) Expand all Loading... |
95 newRec.fPaint = &opaquePaint; | 95 newRec.fPaint = &opaquePaint; |
96 | 96 |
97 SkShader::Context* contextA = fShaderA->createContext(newRec, aStorage); | 97 SkShader::Context* contextA = fShaderA->createContext(newRec, aStorage); |
98 SkShader::Context* contextB = fShaderB->createContext(newRec, bStorage); | 98 SkShader::Context* contextB = fShaderB->createContext(newRec, bStorage); |
99 if (!contextA || !contextB) { | 99 if (!contextA || !contextB) { |
100 safe_call_destructor(contextA); | 100 safe_call_destructor(contextA); |
101 safe_call_destructor(contextB); | 101 safe_call_destructor(contextB); |
102 return NULL; | 102 return NULL; |
103 } | 103 } |
104 | 104 |
105 return SkNEW_PLACEMENT_ARGS(storage, ComposeShaderContext, (*this, rec, cont
extA, contextB)); | 105 return new (storage) ComposeShaderContext(*this, rec, contextA, contextB); |
106 } | 106 } |
107 | 107 |
108 SkComposeShader::ComposeShaderContext::ComposeShaderContext( | 108 SkComposeShader::ComposeShaderContext::ComposeShaderContext( |
109 const SkComposeShader& shader, const ContextRec& rec, | 109 const SkComposeShader& shader, const ContextRec& rec, |
110 SkShader::Context* contextA, SkShader::Context* contextB) | 110 SkShader::Context* contextA, SkShader::Context* contextB) |
111 : INHERITED(shader, rec) | 111 : INHERITED(shader, rec) |
112 , fShaderContextA(contextA) | 112 , fShaderContextA(contextA) |
113 , fShaderContextB(contextB) {} | 113 , fShaderContextB(contextB) {} |
114 | 114 |
115 SkComposeShader::ComposeShaderContext::~ComposeShaderContext() { | 115 SkComposeShader::ComposeShaderContext::~ComposeShaderContext() { |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 if (fMode) { | 205 if (fMode) { |
206 str->append(" Xfermode: "); | 206 str->append(" Xfermode: "); |
207 fMode->toString(str); | 207 fMode->toString(str); |
208 } | 208 } |
209 | 209 |
210 this->INHERITED::toString(str); | 210 this->INHERITED::toString(str); |
211 | 211 |
212 str->append(")"); | 212 str->append(")"); |
213 } | 213 } |
214 #endif | 214 #endif |
OLD | NEW |