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 "SkBlitRow.h" | 10 #include "SkBlitRow.h" |
11 #include "SkColorFilter.h" | 11 #include "SkColorFilter.h" |
12 #include "SkColorPriv.h" | 12 #include "SkColorPriv.h" |
13 #include "SkFlattenableBuffers.h" | 13 #include "SkFlattenableBuffers.h" |
14 #include "SkUtils.h" | 14 #include "SkUtils.h" |
15 #include "SkString.h" | 15 #include "SkString.h" |
| 16 #include "SkValidationUtils.h" |
16 | 17 |
17 #define ILLEGAL_XFERMODE_MODE ((SkXfermode::Mode)-1) | 18 #define ILLEGAL_XFERMODE_MODE ((SkXfermode::Mode)-1) |
18 | 19 |
19 // baseclass for filters that store a color and mode | 20 // baseclass for filters that store a color and mode |
20 class SkModeColorFilter : public SkColorFilter { | 21 class SkModeColorFilter : public SkColorFilter { |
21 public: | 22 public: |
22 SkModeColorFilter(SkColor color) { | 23 SkModeColorFilter(SkColor color) { |
23 fColor = color; | 24 fColor = color; |
24 fMode = ILLEGAL_XFERMODE_MODE; | 25 fMode = ILLEGAL_XFERMODE_MODE; |
25 this->updateCache(); | 26 this->updateCache(); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { | 92 virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { |
92 this->INHERITED::flatten(buffer); | 93 this->INHERITED::flatten(buffer); |
93 buffer.writeColor(fColor); | 94 buffer.writeColor(fColor); |
94 buffer.writeUInt(fMode); | 95 buffer.writeUInt(fMode); |
95 } | 96 } |
96 | 97 |
97 SkModeColorFilter(SkFlattenableReadBuffer& buffer) { | 98 SkModeColorFilter(SkFlattenableReadBuffer& buffer) { |
98 fColor = buffer.readColor(); | 99 fColor = buffer.readColor(); |
99 fMode = (SkXfermode::Mode)buffer.readUInt(); | 100 fMode = (SkXfermode::Mode)buffer.readUInt(); |
100 this->updateCache(); | 101 this->updateCache(); |
| 102 buffer.validate(SkIsValidMode(fMode)); |
101 } | 103 } |
102 | 104 |
103 private: | 105 private: |
104 SkColor fColor; | 106 SkColor fColor; |
105 SkXfermode::Mode fMode; | 107 SkXfermode::Mode fMode; |
106 // cache | 108 // cache |
107 SkPMColor fPMColor; | 109 SkPMColor fPMColor; |
108 SkXfermodeProc fProc; | 110 SkXfermodeProc fProc; |
109 SkXfermodeProc16 fProc16; | 111 SkXfermodeProc16 fProc16; |
110 | 112 |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkModeColorFilter) | 540 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkModeColorFilter) |
539 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Src_SkModeColorFilter) | 541 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Src_SkModeColorFilter) |
540 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SrcOver_SkModeColorFilter) | 542 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SrcOver_SkModeColorFilter) |
541 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter) | 543 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter) |
542 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_JustAdd) | 544 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_JustAdd) |
543 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_JustMul) | 545 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_JustMul) |
544 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_SingleMul) | 546 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_SingleMul) |
545 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_NoPin) | 547 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_NoPin) |
546 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSimpleColorFilter) | 548 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSimpleColorFilter) |
547 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 549 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
OLD | NEW |