Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: src/effects/gradients/SkTwoPointRadialGradient.cpp

Issue 778453002: Remove backend factories (Closed) Base URL: https://skia.googlesource.com/skia.git@unichoice
Patch Set: more clang warnings Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
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 #include "SkTwoPointRadialGradient.h" 9 #include "SkTwoPointRadialGradient.h"
10 10
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 fOneOverTwoA = fA ? SkScalarInvert(fA * 2) : 0; 379 fOneOverTwoA = fA ? SkScalarInvert(fA * 2) : 0;
380 380
381 fPtsToUnit.setTranslate(-fCenter1.fX, -fCenter1.fY); 381 fPtsToUnit.setTranslate(-fCenter1.fX, -fCenter1.fY);
382 fPtsToUnit.postScale(inv, inv); 382 fPtsToUnit.postScale(inv, inv);
383 } 383 }
384 384
385 ///////////////////////////////////////////////////////////////////// 385 /////////////////////////////////////////////////////////////////////
386 386
387 #if SK_SUPPORT_GPU 387 #if SK_SUPPORT_GPU
388 388
389 #include "GrTBackendProcessorFactory.h" 389 #include "SkGr.h"
390 #include "gl/builders/GrGLProgramBuilder.h" 390 #include "gl/builders/GrGLProgramBuilder.h"
391 #include "SkGr.h"
392 391
393 // For brevity 392 // For brevity
394 typedef GrGLProgramDataManager::UniformHandle UniformHandle; 393 typedef GrGLProgramDataManager::UniformHandle UniformHandle;
395 394
396 class GrGLRadial2Gradient : public GrGLGradientEffect { 395 class GrGLRadial2Gradient : public GrGLGradientEffect {
397 396
398 public: 397 public:
399 398
400 GrGLRadial2Gradient(const GrBackendProcessorFactory& factory, const GrProces sor&); 399 GrGLRadial2Gradient(const GrProcessor&);
401 virtual ~GrGLRadial2Gradient() { } 400 virtual ~GrGLRadial2Gradient() { }
402 401
403 virtual void emitCode(GrGLFPBuilder*, 402 virtual void emitCode(GrGLFPBuilder*,
404 const GrFragmentProcessor&, 403 const GrFragmentProcessor&,
405 const char* outputColor, 404 const char* outputColor,
406 const char* inputColor, 405 const char* inputColor,
407 const TransformedCoordsArray&, 406 const TransformedCoordsArray&,
408 const TextureSamplerArray&) SK_OVERRIDE; 407 const TextureSamplerArray&) SK_OVERRIDE;
409 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O VERRIDE; 408 virtual void setData(const GrGLProgramDataManager&, const GrProcessor&) SK_O VERRIDE;
410 409
(...skipping 29 matching lines...) Expand all
440 public: 439 public:
441 static GrFragmentProcessor* Create(GrContext* ctx, 440 static GrFragmentProcessor* Create(GrContext* ctx,
442 const SkTwoPointRadialGradient& shader, 441 const SkTwoPointRadialGradient& shader,
443 const SkMatrix& matrix, 442 const SkMatrix& matrix,
444 SkShader::TileMode tm) { 443 SkShader::TileMode tm) {
445 return SkNEW_ARGS(GrRadial2Gradient, (ctx, shader, matrix, tm)); 444 return SkNEW_ARGS(GrRadial2Gradient, (ctx, shader, matrix, tm));
446 } 445 }
447 446
448 virtual ~GrRadial2Gradient() { } 447 virtual ~GrRadial2Gradient() { }
449 448
450 static const char* Name() { return "Two-Point Radial Gradient"; } 449 virtual const char* name() const SK_OVERRIDE { return "Two-Point Radial Grad ient"; }
451 virtual const GrBackendFragmentProcessorFactory& getFactory() const SK_OVERR IDE { 450
452 return GrTBackendFragmentProcessorFactory<GrRadial2Gradient>::getInstanc e(); 451 virtual void getGLProcessorKey(const GrGLCaps& caps,
452 GrProcessorKeyBuilder* b) const SK_OVERRIDE {
453 GrGLRadial2Gradient::GenKey(*this, caps, b);
454 }
455
456 virtual GrGLFragmentProcessor* createGLInstance() const SK_OVERRIDE {
457 return SkNEW_ARGS(GrGLRadial2Gradient, (*this));
453 } 458 }
454 459
455 // The radial gradient parameters can collapse to a linear (instead of quadr atic) equation. 460 // The radial gradient parameters can collapse to a linear (instead of quadr atic) equation.
456 bool isDegenerate() const { return SK_Scalar1 == fCenterX1; } 461 bool isDegenerate() const { return SK_Scalar1 == fCenterX1; }
457 SkScalar center() const { return fCenterX1; } 462 SkScalar center() const { return fCenterX1; }
458 SkScalar radius() const { return fRadius0; } 463 SkScalar radius() const { return fRadius0; }
459 bool isPosRoot() const { return SkToBool(fPosRoot); } 464 bool isPosRoot() const { return SkToBool(fPosRoot); }
460 465
461 typedef GrGLRadial2Gradient GLProcessor;
462
463 private: 466 private:
464 virtual bool onIsEqual(const GrFragmentProcessor& sBase) const SK_OVERRIDE { 467 virtual bool onIsEqual(const GrFragmentProcessor& sBase) const SK_OVERRIDE {
465 const GrRadial2Gradient& s = sBase.cast<GrRadial2Gradient>(); 468 const GrRadial2Gradient& s = sBase.cast<GrRadial2Gradient>();
466 return (INHERITED::onIsEqual(sBase) && 469 return (INHERITED::onIsEqual(sBase) &&
467 this->fCenterX1 == s.fCenterX1 && 470 this->fCenterX1 == s.fCenterX1 &&
468 this->fRadius0 == s.fRadius0 && 471 this->fRadius0 == s.fRadius0 &&
469 this->fPosRoot == s.fPosRoot); 472 this->fPosRoot == s.fPosRoot);
470 } 473 }
471 474
472 GrRadial2Gradient(GrContext* ctx, 475 GrRadial2Gradient(GrContext* ctx,
473 const SkTwoPointRadialGradient& shader, 476 const SkTwoPointRadialGradient& shader,
474 const SkMatrix& matrix, 477 const SkMatrix& matrix,
475 SkShader::TileMode tm) 478 SkShader::TileMode tm)
476 : INHERITED(ctx, shader, matrix, tm) 479 : INHERITED(ctx, shader, matrix, tm)
477 , fCenterX1(shader.getCenterX1()) 480 , fCenterX1(shader.getCenterX1())
478 , fRadius0(shader.getStartRadius()) 481 , fRadius0(shader.getStartRadius())
479 , fPosRoot(shader.getDiffRadius() < 0) { 482 , fPosRoot(shader.getDiffRadius() < 0) {
483 this->initClassID<GrRadial2Gradient>();
480 // We pass the linear part of the quadratic as a varying. 484 // We pass the linear part of the quadratic as a varying.
481 // float b = 2.0 * (fCenterX1 * x - fRadius0 * z) 485 // float b = 2.0 * (fCenterX1 * x - fRadius0 * z)
482 fBTransform = this->getCoordTransform(); 486 fBTransform = this->getCoordTransform();
483 SkMatrix& bMatrix = *fBTransform.accessMatrix(); 487 SkMatrix& bMatrix = *fBTransform.accessMatrix();
484 bMatrix[SkMatrix::kMScaleX] = 2 * (SkScalarMul(fCenterX1, bMatrix[SkMatr ix::kMScaleX]) - 488 bMatrix[SkMatrix::kMScaleX] = 2 * (SkScalarMul(fCenterX1, bMatrix[SkMatr ix::kMScaleX]) -
485 SkScalarMul(fRadius0, bMatrix[SkMatri x::kMPersp0])); 489 SkScalarMul(fRadius0, bMatrix[SkMatri x::kMPersp0]));
486 bMatrix[SkMatrix::kMSkewX] = 2 * (SkScalarMul(fCenterX1, bMatrix[SkMatri x::kMSkewX]) - 490 bMatrix[SkMatrix::kMSkewX] = 2 * (SkScalarMul(fCenterX1, bMatrix[SkMatri x::kMSkewX]) -
487 SkScalarMul(fRadius0, bMatrix[SkMatrix ::kMPersp1])); 491 SkScalarMul(fRadius0, bMatrix[SkMatrix ::kMPersp1]));
488 bMatrix[SkMatrix::kMTransX] = 2 * (SkScalarMul(fCenterX1, bMatrix[SkMatr ix::kMTransX]) - 492 bMatrix[SkMatrix::kMTransX] = 2 * (SkScalarMul(fCenterX1, bMatrix[SkMatr ix::kMTransX]) -
489 SkScalarMul(fRadius0, bMatrix[SkMatri x::kMPersp2])); 493 SkScalarMul(fRadius0, bMatrix[SkMatri x::kMPersp2]));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 tm)); 539 tm));
536 SkPaint paint; 540 SkPaint paint;
537 GrFragmentProcessor* fp; 541 GrFragmentProcessor* fp;
538 GrColor paintColor; 542 GrColor paintColor;
539 SkAssertResult(shader->asFragmentProcessor(context, paint, NULL, &paintColor , &fp)); 543 SkAssertResult(shader->asFragmentProcessor(context, paint, NULL, &paintColor , &fp));
540 return fp; 544 return fp;
541 } 545 }
542 546
543 ///////////////////////////////////////////////////////////////////// 547 /////////////////////////////////////////////////////////////////////
544 548
545 GrGLRadial2Gradient::GrGLRadial2Gradient(const GrBackendProcessorFactory& factor y, 549 GrGLRadial2Gradient::GrGLRadial2Gradient(const GrProcessor& processor)
546 const GrProcessor& processor) 550 : fVSVaryingName(NULL)
547 : INHERITED(factory)
548 , fVSVaryingName(NULL)
549 , fFSVaryingName(NULL) 551 , fFSVaryingName(NULL)
550 , fCachedCenter(SK_ScalarMax) 552 , fCachedCenter(SK_ScalarMax)
551 , fCachedRadius(-SK_ScalarMax) 553 , fCachedRadius(-SK_ScalarMax)
552 , fCachedPosRoot(0) { 554 , fCachedPosRoot(0) {
553 555
554 const GrRadial2Gradient& data = processor.cast<GrRadial2Gradient>(); 556 const GrRadial2Gradient& data = processor.cast<GrRadial2Gradient>();
555 fIsDegenerate = data.isDegenerate(); 557 fIsDegenerate = data.isDegenerate();
556 } 558 }
557 559
558 void GrGLRadial2Gradient::emitCode(GrGLFPBuilder* builder, 560 void GrGLRadial2Gradient::emitCode(GrGLFPBuilder* builder,
559 const GrFragmentProcessor& fp, 561 const GrFragmentProcessor& fp,
560 const char* outputColor, 562 const char* outputColor,
561 const char* inputColor, 563 const char* inputColor,
562 const TransformedCoordsArray& coords, 564 const TransformedCoordsArray& coords,
563 const TextureSamplerArray& samplers) { 565 const TextureSamplerArray& samplers) {
564 const GrGradientEffect& ge = fp.cast<GrGradientEffect>(); 566 const GrRadial2Gradient& ge = fp.cast<GrRadial2Gradient>();
565 this->emitUniforms(builder, ge); 567 this->emitUniforms(builder, ge);
566 fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibilit y, 568 fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibilit y,
567 kFloat_GrSLType, "Radial2FSParams", 6); 569 kFloat_GrSLType, "Radial2FSParams", 6);
568 570
569 SkString cName("c"); 571 SkString cName("c");
570 SkString ac4Name("ac4"); 572 SkString ac4Name("ac4");
571 SkString rootName("root"); 573 SkString rootName("root");
572 SkString t; 574 SkString t;
573 SkString p0; 575 SkString p0;
574 SkString p1; 576 SkString p1;
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 709
708 #else 710 #else
709 711
710 bool SkTwoPointRadialGradient::asFragmentProcessor(GrContext*, const SkPaint&, c onst SkMatrix*, 712 bool SkTwoPointRadialGradient::asFragmentProcessor(GrContext*, const SkPaint&, c onst SkMatrix*,
711 GrColor*, GrFragmentProcessor **) const { 713 GrColor*, GrFragmentProcessor **) const {
712 SkDEBUGFAIL("Should not call in GPU-less build"); 714 SkDEBUGFAIL("Should not call in GPU-less build");
713 return false; 715 return false;
714 } 716 }
715 717
716 #endif 718 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp ('k') | src/gpu/GrAAConvexPathRenderer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698