| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 "SkTwoPointConicalGradient.h" | 8 #include "SkTwoPointConicalGradient.h" |
| 9 #include "SkTwoPointConicalGradient_gpu.h" | 9 #include "SkTwoPointConicalGradient_gpu.h" |
| 10 | 10 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 } else { | 179 } else { |
| 180 SkFixed index = mirror_tileproc(t); | 180 SkFixed index = mirror_tileproc(t); |
| 181 SkASSERT(index <= 0xFFFF); | 181 SkASSERT(index <= 0xFFFF); |
| 182 *dstC++ = cache[toggle + | 182 *dstC++ = cache[toggle + |
| 183 (index >> SkGradientShaderBase::kCache32Shift)]; | 183 (index >> SkGradientShaderBase::kCache32Shift)]; |
| 184 } | 184 } |
| 185 toggle = next_dither_toggle(toggle); | 185 toggle = next_dither_toggle(toggle); |
| 186 } | 186 } |
| 187 } | 187 } |
| 188 | 188 |
| 189 void SkTwoPointConicalGradient::init() { | |
| 190 fRec.init(fCenter1, fRadius1, fCenter2, fRadius2, fFlippedGrad); | |
| 191 fPtsToUnit.reset(); | |
| 192 } | |
| 193 | |
| 194 ///////////////////////////////////////////////////////////////////// | 189 ///////////////////////////////////////////////////////////////////// |
| 195 | 190 |
| 196 SkTwoPointConicalGradient::SkTwoPointConicalGradient( | 191 SkTwoPointConicalGradient::SkTwoPointConicalGradient( |
| 197 const SkPoint& start, SkScalar startRadius, | 192 const SkPoint& start, SkScalar startRadius, |
| 198 const SkPoint& end, SkScalar endRadius, | 193 const SkPoint& end, SkScalar endRadius, |
| 199 bool flippedGrad, const Descriptor& desc) | 194 bool flippedGrad, const Descriptor& desc) |
| 200 : SkGradientShaderBase(desc) | 195 : SkGradientShaderBase(desc, SkMatrix::I()) |
| 201 , fCenter1(start) | 196 , fCenter1(start) |
| 202 , fCenter2(end) | 197 , fCenter2(end) |
| 203 , fRadius1(startRadius) | 198 , fRadius1(startRadius) |
| 204 , fRadius2(endRadius) | 199 , fRadius2(endRadius) |
| 205 , fFlippedGrad(flippedGrad) | 200 , fFlippedGrad(flippedGrad) |
| 206 { | 201 { |
| 207 // this is degenerate, and should be caught by our caller | 202 // this is degenerate, and should be caught by our caller |
| 208 SkASSERT(fCenter1 != fCenter2 || fRadius1 != fRadius2); | 203 SkASSERT(fCenter1 != fCenter2 || fRadius1 != fRadius2); |
| 209 this->init(); | 204 fRec.init(fCenter1, fRadius1, fCenter2, fRadius2, fFlippedGrad); |
| 210 } | 205 } |
| 211 | 206 |
| 212 bool SkTwoPointConicalGradient::isOpaque() const { | 207 bool SkTwoPointConicalGradient::isOpaque() const { |
| 213 // Because areas outside the cone are left untouched, we cannot treat the | 208 // Because areas outside the cone are left untouched, we cannot treat the |
| 214 // shader as opaque even if the gradient itself is opaque. | 209 // shader as opaque even if the gradient itself is opaque. |
| 215 // TODO(junov): Compute whether the cone fills the plane crbug.com/222380 | 210 // TODO(junov): Compute whether the cone fills the plane crbug.com/222380 |
| 216 return false; | 211 return false; |
| 217 } | 212 } |
| 218 | 213 |
| 219 size_t SkTwoPointConicalGradient::contextSize() const { | 214 size_t SkTwoPointConicalGradient::contextSize() const { |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 str->appendScalar(fCenter2.fY); | 430 str->appendScalar(fCenter2.fY); |
| 436 str->append(") radius2: "); | 431 str->append(") radius2: "); |
| 437 str->appendScalar(fRadius2); | 432 str->appendScalar(fRadius2); |
| 438 str->append(" "); | 433 str->append(" "); |
| 439 | 434 |
| 440 this->INHERITED::toString(str); | 435 this->INHERITED::toString(str); |
| 441 | 436 |
| 442 str->append(")"); | 437 str->append(")"); |
| 443 } | 438 } |
| 444 #endif | 439 #endif |
| OLD | NEW |