OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkGradientShaderPriv.h" | 8 #include "SkGradientShaderPriv.h" |
9 #include "SkLinearGradient.h" | 9 #include "SkLinearGradient.h" |
10 #include "SkRadialGradient.h" | 10 #include "SkRadialGradient.h" |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 } | 132 } |
133 | 133 |
134 static SkShader::TileMode unpack_mode(uint32_t packed) { | 134 static SkShader::TileMode unpack_mode(uint32_t packed) { |
135 return (SkShader::TileMode)(packed & 0xF); | 135 return (SkShader::TileMode)(packed & 0xF); |
136 } | 136 } |
137 | 137 |
138 static uint32_t unpack_flags(uint32_t packed) { | 138 static uint32_t unpack_flags(uint32_t packed) { |
139 return packed >> 4; | 139 return packed >> 4; |
140 } | 140 } |
141 | 141 |
| 142 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
142 SkGradientShaderBase::SkGradientShaderBase(SkReadBuffer& buffer) : INHERITED(buf
fer) { | 143 SkGradientShaderBase::SkGradientShaderBase(SkReadBuffer& buffer) : INHERITED(buf
fer) { |
143 if (buffer.isVersionLT(SkReadBuffer::kNoUnitMappers_Version)) { | 144 if (buffer.isVersionLT(SkReadBuffer::kNoUnitMappers_Version)) { |
144 // skip the old SkUnitMapper slot | 145 // skip the old SkUnitMapper slot |
145 buffer.skipFlattenable(); | 146 buffer.skipFlattenable(); |
146 } | 147 } |
147 | 148 |
148 int colorCount = fColorCount = buffer.getArrayCount(); | 149 int colorCount = fColorCount = buffer.getArrayCount(); |
149 if (colorCount > kColorStorageCount) { | 150 if (colorCount > kColorStorageCount) { |
150 size_t allocSize = (sizeof(SkColor) + sizeof(SkPMColor) + sizeof(Rec)) *
colorCount; | 151 size_t allocSize = (sizeof(SkColor) + sizeof(SkPMColor) + sizeof(Rec)) *
colorCount; |
151 if (buffer.validateAvailable(allocSize)) { | 152 if (buffer.validateAvailable(allocSize)) { |
(...skipping 18 matching lines...) Expand all Loading... |
170 Rec* recs = fRecs; | 171 Rec* recs = fRecs; |
171 recs[0].fPos = 0; | 172 recs[0].fPos = 0; |
172 for (int i = 1; i < colorCount; i++) { | 173 for (int i = 1; i < colorCount; i++) { |
173 recs[i].fPos = buffer.readInt(); | 174 recs[i].fPos = buffer.readInt(); |
174 recs[i].fScale = buffer.readUInt(); | 175 recs[i].fScale = buffer.readUInt(); |
175 } | 176 } |
176 } | 177 } |
177 buffer.readMatrix(&fPtsToUnit); | 178 buffer.readMatrix(&fPtsToUnit); |
178 this->initCommon(); | 179 this->initCommon(); |
179 } | 180 } |
| 181 #endif |
180 | 182 |
181 SkGradientShaderBase::~SkGradientShaderBase() { | 183 SkGradientShaderBase::~SkGradientShaderBase() { |
182 if (fOrigColors != fStorage) { | 184 if (fOrigColors != fStorage) { |
183 sk_free(fOrigColors); | 185 sk_free(fOrigColors); |
184 } | 186 } |
185 } | 187 } |
186 | 188 |
187 void SkGradientShaderBase::initCommon() { | 189 void SkGradientShaderBase::initCommon() { |
188 unsigned colorAlpha = 0xFF; | 190 unsigned colorAlpha = 0xFF; |
189 for (int i = 0; i < fColorCount; i++) { | 191 for (int i = 0; i < fColorCount; i++) { |
(...skipping 958 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 (*stops)[i] = stop; | 1150 (*stops)[i] = stop; |
1149 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st
op) : 1.f; | 1151 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st
op) : 1.f; |
1150 } | 1152 } |
1151 } | 1153 } |
1152 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM
odeCount)); | 1154 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM
odeCount)); |
1153 | 1155 |
1154 return outColors; | 1156 return outColors; |
1155 } | 1157 } |
1156 | 1158 |
1157 #endif | 1159 #endif |
OLD | NEW |