| 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 | 9 |
| 10 #include "SkTwoPointConicalGradient_gpu.h" | 10 #include "SkTwoPointConicalGradient_gpu.h" |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 buffer.writePoint(fCenter2); | 328 buffer.writePoint(fCenter2); |
| 329 buffer.writeScalar(fRadius1); | 329 buffer.writeScalar(fRadius1); |
| 330 buffer.writeScalar(fRadius2); | 330 buffer.writeScalar(fRadius2); |
| 331 } | 331 } |
| 332 | 332 |
| 333 #if SK_SUPPORT_GPU | 333 #if SK_SUPPORT_GPU |
| 334 | 334 |
| 335 GrEffectRef* SkTwoPointConicalGradient::asNewEffect(GrContext* context, const Sk
Paint&) const { | 335 GrEffectRef* SkTwoPointConicalGradient::asNewEffect(GrContext* context, const Sk
Paint&) const { |
| 336 SkASSERT(NULL != context); | 336 SkASSERT(NULL != context); |
| 337 SkASSERT(fPtsToUnit.isIdentity()); | 337 SkASSERT(fPtsToUnit.isIdentity()); |
| 338 // invert the localM, translate to center1, rotate so center2 is on x axis. | |
| 339 SkMatrix matrix; | |
| 340 if (!this->getLocalMatrix().invert(&matrix)) { | |
| 341 return NULL; | |
| 342 } | |
| 343 matrix.postTranslate(-fCenter1.fX, -fCenter1.fY); | |
| 344 | 338 |
| 345 SkPoint diff = fCenter2 - fCenter1; | 339 return Gr2PtConicalGradientEffect::Create(context, *this, fTileMode); |
| 346 SkScalar diffLen = diff.length(); | |
| 347 if (0 != diffLen) { | |
| 348 SkScalar invDiffLen = SkScalarInvert(diffLen); | |
| 349 SkMatrix rot; | |
| 350 rot.setSinCos(-SkScalarMul(invDiffLen, diff.fY), | |
| 351 SkScalarMul(invDiffLen, diff.fX)); | |
| 352 matrix.postConcat(rot); | |
| 353 } | |
| 354 | |
| 355 return Gr2PtConicalGradientEffect::Create(context, *this, matrix, fTileMode)
; | |
| 356 } | 340 } |
| 357 | 341 |
| 358 #else | 342 #else |
| 359 | 343 |
| 360 GrEffectRef* SkTwoPointConicalGradient::asNewEffect(GrContext*, const SkPaint&)
const { | 344 GrEffectRef* SkTwoPointConicalGradient::asNewEffect(GrContext*, const SkPaint&)
const { |
| 361 SkDEBUGFAIL("Should not call in GPU-less build"); | 345 SkDEBUGFAIL("Should not call in GPU-less build"); |
| 362 return NULL; | 346 return NULL; |
| 363 } | 347 } |
| 364 | 348 |
| 365 #endif | 349 #endif |
| (...skipping 16 matching lines...) Expand all Loading... |
| 382 str->appendScalar(fCenter2.fY); | 366 str->appendScalar(fCenter2.fY); |
| 383 str->append(") radius2: "); | 367 str->append(") radius2: "); |
| 384 str->appendScalar(fRadius2); | 368 str->appendScalar(fRadius2); |
| 385 str->append(" "); | 369 str->append(" "); |
| 386 | 370 |
| 387 this->INHERITED::toString(str); | 371 this->INHERITED::toString(str); |
| 388 | 372 |
| 389 str->append(")"); | 373 str->append(")"); |
| 390 } | 374 } |
| 391 #endif | 375 #endif |
| OLD | NEW |