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

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

Issue 12531015: Adds local coords to GrEffect system. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 months 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 | Annotate | Revision Log
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 "SkSweepGradient.h" 9 #include "SkSweepGradient.h"
10 10
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 ///////////////////////////////////////////////////////////////////// 384 /////////////////////////////////////////////////////////////////////
385 385
386 #if SK_SUPPORT_GPU 386 #if SK_SUPPORT_GPU
387 387
388 #include "GrTBackendEffectFactory.h" 388 #include "GrTBackendEffectFactory.h"
389 389
390 class GrGLSweepGradient : public GrGLGradientEffect { 390 class GrGLSweepGradient : public GrGLGradientEffect {
391 public: 391 public:
392 392
393 GrGLSweepGradient(const GrBackendEffectFactory& factory, 393 GrGLSweepGradient(const GrBackendEffectFactory& factory,
394 const GrEffectRef&) : INHERITED (factory) { } 394 const GrDrawEffect&) : INHERITED (factory) { }
395 virtual ~GrGLSweepGradient() { } 395 virtual ~GrGLSweepGradient() { }
396 396
397 virtual void emitCode(GrGLShaderBuilder*, 397 virtual void emitCode(GrGLShaderBuilder*,
398 const GrEffectStage&, 398 const GrDrawEffect&,
399 EffectKey, 399 EffectKey,
400 const char* vertexCoords,
401 const char* outputColor, 400 const char* outputColor,
402 const char* inputColor, 401 const char* inputColor,
403 const TextureSamplerArray&) SK_OVERRIDE; 402 const TextureSamplerArray&) SK_OVERRIDE;
404 403
405 static EffectKey GenKey(const GrEffectStage& stage, const GrGLCaps&) { 404 static EffectKey GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&) {
406 return GenMatrixKey(stage); 405 return GenMatrixKey(drawEffect);
407 } 406 }
408 407
409 private: 408 private:
410 409
411 typedef GrGLGradientEffect INHERITED; 410 typedef GrGLGradientEffect INHERITED;
412 411
413 }; 412 };
414 413
415 ///////////////////////////////////////////////////////////////////// 414 /////////////////////////////////////////////////////////////////////
416 415
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 int colorCount = RandomGradientParams(random, colors, &stops, &tmIgnored); 456 int colorCount = RandomGradientParams(random, colors, &stops, &tmIgnored);
458 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateSweep(center.fX, cente r.fY, 457 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateSweep(center.fX, cente r.fY,
459 colors, stops, c olorCount)); 458 colors, stops, c olorCount));
460 SkPaint paint; 459 SkPaint paint;
461 return shader->asNewEffect(context, paint); 460 return shader->asNewEffect(context, paint);
462 } 461 }
463 462
464 ///////////////////////////////////////////////////////////////////// 463 /////////////////////////////////////////////////////////////////////
465 464
466 void GrGLSweepGradient::emitCode(GrGLShaderBuilder* builder, 465 void GrGLSweepGradient::emitCode(GrGLShaderBuilder* builder,
467 const GrEffectStage&, 466 const GrDrawEffect&,
468 EffectKey key, 467 EffectKey key,
469 const char* vertexCoords,
470 const char* outputColor, 468 const char* outputColor,
471 const char* inputColor, 469 const char* inputColor,
472 const TextureSamplerArray& samplers) { 470 const TextureSamplerArray& samplers) {
473 this->emitYCoordUniform(builder); 471 this->emitYCoordUniform(builder);
474 const char* coords; 472 const char* coords;
475 this->setupMatrix(builder, key, vertexCoords, &coords); 473 this->setupMatrix(builder, key, &coords);
476 SkString t; 474 SkString t;
477 t.printf("atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5", coords, coords); 475 t.printf("atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5", coords, coords);
478 this->emitColorLookup(builder, t.c_str(), outputColor, inputColor, samplers[ 0]); 476 this->emitColorLookup(builder, t.c_str(), outputColor, inputColor, samplers[ 0]);
479 } 477 }
480 478
481 ///////////////////////////////////////////////////////////////////// 479 /////////////////////////////////////////////////////////////////////
482 480
483 GrEffectRef* SkSweepGradient::asNewEffect(GrContext* context, const SkPaint&) co nst { 481 GrEffectRef* SkSweepGradient::asNewEffect(GrContext* context, const SkPaint&) co nst {
484 SkMatrix matrix; 482 SkMatrix matrix;
485 if (!this->getLocalMatrix().invert(&matrix)) { 483 if (!this->getLocalMatrix().invert(&matrix)) {
(...skipping 20 matching lines...) Expand all
506 str->appendScalar(fCenter.fX); 504 str->appendScalar(fCenter.fX);
507 str->append(", "); 505 str->append(", ");
508 str->appendScalar(fCenter.fY); 506 str->appendScalar(fCenter.fY);
509 str->append(") "); 507 str->append(") ");
510 508
511 this->INHERITED::toString(str); 509 this->INHERITED::toString(str);
512 510
513 str->append(")"); 511 str->append(")");
514 } 512 }
515 #endif 513 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkRadialGradient.cpp ('k') | src/effects/gradients/SkTwoPointConicalGradient.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698