OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
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 "Sk4fGradientBase.h" | 8 #include "Sk4fGradientBase.h" |
9 | 9 |
10 #include <functional> | 10 #include <functional> |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 | 151 |
152 if (shader.fColorsAreOpaque && this->getPaintAlpha() == SK_AlphaOPAQUE) { | 152 if (shader.fColorsAreOpaque && this->getPaintAlpha() == SK_AlphaOPAQUE) { |
153 fFlags |= kOpaqueAlpha_Flag; | 153 fFlags |= kOpaqueAlpha_Flag; |
154 } | 154 } |
155 | 155 |
156 fColorsArePremul = | 156 fColorsArePremul = |
157 (shader.fGradFlags & SkGradientShader::kInterpolateColorsInPremul_Flag) | 157 (shader.fGradFlags & SkGradientShader::kInterpolateColorsInPremul_Flag) |
158 || shader.fColorsAreOpaque; | 158 || shader.fColorsAreOpaque; |
159 } | 159 } |
160 | 160 |
| 161 bool SkGradientShaderBase:: |
| 162 GradientShaderBase4fContext::isValid() const { |
| 163 return fDstToPos.isFinite(); |
| 164 } |
| 165 |
161 void SkGradientShaderBase:: | 166 void SkGradientShaderBase:: |
162 GradientShaderBase4fContext::buildIntervals(const SkGradientShaderBase& shader, | 167 GradientShaderBase4fContext::buildIntervals(const SkGradientShaderBase& shader, |
163 const ContextRec& rec, bool reverse)
{ | 168 const ContextRec& rec, bool reverse)
{ |
164 // The main job here is to build a specialized interval list: a different | 169 // The main job here is to build a specialized interval list: a different |
165 // representation of the color stops data, optimized for efficient scan line | 170 // representation of the color stops data, optimized for efficient scan line |
166 // access during shading. | 171 // access during shading. |
167 // | 172 // |
168 // [{P0,C0} , {P1,C1}) [{P1,C2} , {P2,c3}) ... [{Pn,C2n} , {Pn+1,C2n+1}) | 173 // [{P0,C0} , {P1,C1}) [{P1,C2} , {P2,c3}) ... [{Pn,C2n} , {Pn+1,C2n+1}) |
169 // | 174 // |
170 // The list may be inverted when requested (such that e.g. points are sorted | 175 // The list may be inverted when requested (such that e.g. points are sorted |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 fDc = DstTraits<dstType>::load(i->fDc); | 428 fDc = DstTraits<dstType>::load(i->fDc); |
424 } | 429 } |
425 | 430 |
426 const Interval* fFirstInterval; | 431 const Interval* fFirstInterval; |
427 const Interval* fLastInterval; | 432 const Interval* fLastInterval; |
428 const Interval* fInterval; | 433 const Interval* fInterval; |
429 SkScalar fPrevT; | 434 SkScalar fPrevT; |
430 Sk4f fCc; | 435 Sk4f fCc; |
431 Sk4f fDc; | 436 Sk4f fDc; |
432 }; | 437 }; |
OLD | NEW |