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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { | 95 virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE { |
95 this->INHERITED::flatten(buffer); | 96 this->INHERITED::flatten(buffer); |
96 buffer.writeColor(fColor); | 97 buffer.writeColor(fColor); |
97 buffer.writeUInt(fMode); | 98 buffer.writeUInt(fMode); |
98 } | 99 } |
99 | 100 |
100 SkModeColorFilter(SkFlattenableReadBuffer& buffer) { | 101 SkModeColorFilter(SkFlattenableReadBuffer& buffer) { |
101 fColor = buffer.readColor(); | 102 fColor = buffer.readColor(); |
102 fMode = (SkXfermode::Mode)buffer.readUInt(); | 103 fMode = (SkXfermode::Mode)buffer.readUInt(); |
103 this->updateCache(); | 104 this->updateCache(); |
| 105 buffer.validate(SkIsValidMode(fMode)); |
104 } | 106 } |
105 | 107 |
106 private: | 108 private: |
107 SkColor fColor; | 109 SkColor fColor; |
108 SkXfermode::Mode fMode; | 110 SkXfermode::Mode fMode; |
109 // cache | 111 // cache |
110 SkPMColor fPMColor; | 112 SkPMColor fPMColor; |
111 SkXfermodeProc fProc; | 113 SkXfermodeProc fProc; |
112 SkXfermodeProc16 fProc16; | 114 SkXfermodeProc16 fProc16; |
113 | 115 |
(...skipping 714 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkModeColorFilter) | 830 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkModeColorFilter) |
829 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Src_SkModeColorFilter) | 831 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Src_SkModeColorFilter) |
830 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SrcOver_SkModeColorFilter) | 832 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SrcOver_SkModeColorFilter) |
831 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter) | 833 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter) |
832 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_JustAdd) | 834 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_JustAdd) |
833 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_JustMul) | 835 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_JustMul) |
834 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_SingleMul) | 836 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_SingleMul) |
835 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_NoPin) | 837 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLightingColorFilter_NoPin) |
836 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSimpleColorFilter) | 838 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSimpleColorFilter) |
837 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 839 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
OLD | NEW |