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" |
11 #include "SkColorFilter.h" | 11 #include "SkColorFilter.h" |
12 #include "SkColorPriv.h" | 12 #include "SkColorPriv.h" |
13 #include "SkColorShader.h" | 13 #include "SkColorShader.h" |
14 #include "SkFlattenableBuffers.h" | 14 #include "SkReadBuffer.h" |
| 15 #include "SkWriteBuffer.h" |
15 #include "SkXfermode.h" | 16 #include "SkXfermode.h" |
16 #include "SkString.h" | 17 #include "SkString.h" |
17 | 18 |
18 /////////////////////////////////////////////////////////////////////////////// | 19 /////////////////////////////////////////////////////////////////////////////// |
19 | 20 |
20 SkComposeShader::SkComposeShader(SkShader* sA, SkShader* sB, SkXfermode* mode) { | 21 SkComposeShader::SkComposeShader(SkShader* sA, SkShader* sB, SkXfermode* mode) { |
21 fShaderA = sA; sA->ref(); | 22 fShaderA = sA; sA->ref(); |
22 fShaderB = sB; sB->ref(); | 23 fShaderB = sB; sB->ref(); |
23 // mode may be null | 24 // mode may be null |
24 fMode = mode; | 25 fMode = mode; |
25 SkSafeRef(mode); | 26 SkSafeRef(mode); |
26 } | 27 } |
27 | 28 |
28 SkComposeShader::SkComposeShader(SkFlattenableReadBuffer& buffer) : | 29 SkComposeShader::SkComposeShader(SkReadBuffer& buffer) : |
29 INHERITED(buffer) { | 30 INHERITED(buffer) { |
30 fShaderA = buffer.readShader(); | 31 fShaderA = buffer.readShader(); |
31 if (NULL == fShaderA) { | 32 if (NULL == fShaderA) { |
32 fShaderA = SkNEW_ARGS(SkColorShader, (0)); | 33 fShaderA = SkNEW_ARGS(SkColorShader, (0)); |
33 } | 34 } |
34 fShaderB = buffer.readShader(); | 35 fShaderB = buffer.readShader(); |
35 if (NULL == fShaderB) { | 36 if (NULL == fShaderB) { |
36 fShaderB = SkNEW_ARGS(SkColorShader, (0)); | 37 fShaderB = SkNEW_ARGS(SkColorShader, (0)); |
37 } | 38 } |
38 fMode = buffer.readXfermode(); | 39 fMode = buffer.readXfermode(); |
(...skipping 15 matching lines...) Expand all Loading... |
54 | 55 |
55 ~SkAutoAlphaRestore() { | 56 ~SkAutoAlphaRestore() { |
56 fPaint->setAlpha(fAlpha); | 57 fPaint->setAlpha(fAlpha); |
57 } | 58 } |
58 private: | 59 private: |
59 SkPaint* fPaint; | 60 SkPaint* fPaint; |
60 uint8_t fAlpha; | 61 uint8_t fAlpha; |
61 }; | 62 }; |
62 #define SkAutoAlphaRestore(...) SK_REQUIRE_LOCAL_VAR(SkAutoAlphaRestore) | 63 #define SkAutoAlphaRestore(...) SK_REQUIRE_LOCAL_VAR(SkAutoAlphaRestore) |
63 | 64 |
64 void SkComposeShader::flatten(SkFlattenableWriteBuffer& buffer) const { | 65 void SkComposeShader::flatten(SkWriteBuffer& buffer) const { |
65 this->INHERITED::flatten(buffer); | 66 this->INHERITED::flatten(buffer); |
66 buffer.writeFlattenable(fShaderA); | 67 buffer.writeFlattenable(fShaderA); |
67 buffer.writeFlattenable(fShaderB); | 68 buffer.writeFlattenable(fShaderB); |
68 buffer.writeFlattenable(fMode); | 69 buffer.writeFlattenable(fMode); |
69 } | 70 } |
70 | 71 |
71 /* We call setContext on our two worker shaders. However, we | 72 /* We call setContext on our two worker shaders. However, we |
72 always let them see opaque alpha, and if the paint really | 73 always let them see opaque alpha, and if the paint really |
73 is translucent, then we apply that after the fact. | 74 is translucent, then we apply that after the fact. |
74 | 75 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 str->append(" ShaderB: "); | 185 str->append(" ShaderB: "); |
185 fShaderB->toString(str); | 186 fShaderB->toString(str); |
186 str->append(" Xfermode: "); | 187 str->append(" Xfermode: "); |
187 fMode->toString(str); | 188 fMode->toString(str); |
188 | 189 |
189 this->INHERITED::toString(str); | 190 this->INHERITED::toString(str); |
190 | 191 |
191 str->append(")"); | 192 str->append(")"); |
192 } | 193 } |
193 #endif | 194 #endif |
OLD | NEW |