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

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: cleanup 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));
458 }
459
460 virtual uint32_t classID() const {
461 static uint32_t id = GenClassID();
462 return id;
453 } 463 }
454 464
455 // The radial gradient parameters can collapse to a linear (instead of quadr atic) equation. 465 // The radial gradient parameters can collapse to a linear (instead of quadr atic) equation.
456 bool isDegenerate() const { return SK_Scalar1 == fCenterX1; } 466 bool isDegenerate() const { return SK_Scalar1 == fCenterX1; }
457 SkScalar center() const { return fCenterX1; } 467 SkScalar center() const { return fCenterX1; }
458 SkScalar radius() const { return fRadius0; } 468 SkScalar radius() const { return fRadius0; }
459 bool isPosRoot() const { return SkToBool(fPosRoot); } 469 bool isPosRoot() const { return SkToBool(fPosRoot); }
460 470
461 typedef GrGLRadial2Gradient GLProcessor;
462
463 private: 471 private:
464 virtual bool onIsEqual(const GrFragmentProcessor& sBase) const SK_OVERRIDE { 472 virtual bool onIsEqual(const GrFragmentProcessor& sBase) const SK_OVERRIDE {
465 const GrRadial2Gradient& s = sBase.cast<GrRadial2Gradient>(); 473 const GrRadial2Gradient& s = sBase.cast<GrRadial2Gradient>();
466 return (INHERITED::onIsEqual(sBase) && 474 return (INHERITED::onIsEqual(sBase) &&
467 this->fCenterX1 == s.fCenterX1 && 475 this->fCenterX1 == s.fCenterX1 &&
468 this->fRadius0 == s.fRadius0 && 476 this->fRadius0 == s.fRadius0 &&
469 this->fPosRoot == s.fPosRoot); 477 this->fPosRoot == s.fPosRoot);
470 } 478 }
471 479
472 GrRadial2Gradient(GrContext* ctx, 480 GrRadial2Gradient(GrContext* ctx,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 tm)); 543 tm));
536 SkPaint paint; 544 SkPaint paint;
537 GrFragmentProcessor* fp; 545 GrFragmentProcessor* fp;
538 GrColor paintColor; 546 GrColor paintColor;
539 SkAssertResult(shader->asFragmentProcessor(context, paint, NULL, &paintColor , &fp)); 547 SkAssertResult(shader->asFragmentProcessor(context, paint, NULL, &paintColor , &fp));
540 return fp; 548 return fp;
541 } 549 }
542 550
543 ///////////////////////////////////////////////////////////////////// 551 /////////////////////////////////////////////////////////////////////
544 552
545 GrGLRadial2Gradient::GrGLRadial2Gradient(const GrBackendProcessorFactory& factor y, 553 GrGLRadial2Gradient::GrGLRadial2Gradient(const GrProcessor& processor)
546 const GrProcessor& processor) 554 : fVSVaryingName(NULL)
547 : INHERITED(factory)
548 , fVSVaryingName(NULL)
549 , fFSVaryingName(NULL) 555 , fFSVaryingName(NULL)
550 , fCachedCenter(SK_ScalarMax) 556 , fCachedCenter(SK_ScalarMax)
551 , fCachedRadius(-SK_ScalarMax) 557 , fCachedRadius(-SK_ScalarMax)
552 , fCachedPosRoot(0) { 558 , fCachedPosRoot(0) {
553 559
554 const GrRadial2Gradient& data = processor.cast<GrRadial2Gradient>(); 560 const GrRadial2Gradient& data = processor.cast<GrRadial2Gradient>();
555 fIsDegenerate = data.isDegenerate(); 561 fIsDegenerate = data.isDegenerate();
556 } 562 }
557 563
558 void GrGLRadial2Gradient::emitCode(GrGLFPBuilder* builder, 564 void GrGLRadial2Gradient::emitCode(GrGLFPBuilder* builder,
559 const GrFragmentProcessor& fp, 565 const GrFragmentProcessor& fp,
560 const char* outputColor, 566 const char* outputColor,
561 const char* inputColor, 567 const char* inputColor,
562 const TransformedCoordsArray& coords, 568 const TransformedCoordsArray& coords,
563 const TextureSamplerArray& samplers) { 569 const TextureSamplerArray& samplers) {
564 const GrGradientEffect& ge = fp.cast<GrGradientEffect>(); 570 const GrRadial2Gradient& ge = fp.cast<GrRadial2Gradient>();
565 this->emitUniforms(builder, ge); 571 this->emitUniforms(builder, ge);
566 fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibilit y, 572 fParamUni = builder->addUniformArray(GrGLProgramBuilder::kFragment_Visibilit y,
567 kFloat_GrSLType, "Radial2FSParams", 6); 573 kFloat_GrSLType, "Radial2FSParams", 6);
568 574
569 SkString cName("c"); 575 SkString cName("c");
570 SkString ac4Name("ac4"); 576 SkString ac4Name("ac4");
571 SkString rootName("root"); 577 SkString rootName("root");
572 SkString t; 578 SkString t;
573 SkString p0; 579 SkString p0;
574 SkString p1; 580 SkString p1;
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 713
708 #else 714 #else
709 715
710 bool SkTwoPointRadialGradient::asFragmentProcessor(GrContext*, const SkPaint&, c onst SkMatrix*, 716 bool SkTwoPointRadialGradient::asFragmentProcessor(GrContext*, const SkPaint&, c onst SkMatrix*,
711 GrColor*, GrFragmentProcessor **) const { 717 GrColor*, GrFragmentProcessor **) const {
712 SkDEBUGFAIL("Should not call in GPU-less build"); 718 SkDEBUGFAIL("Should not call in GPU-less build");
713 return false; 719 return false;
714 } 720 }
715 721
716 #endif 722 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698