| 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 |