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

Side by Side Diff: gm/gradients.cpp

Issue 1471543002: use pinned value during lerp for vertical gradients (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: add assert in lerp_color Created 5 years, 1 month 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
« no previous file with comments | « no previous file | src/effects/gradients/SkLinearGradient.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 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 "gm.h" 8 #include "gm.h"
9 #include "SkGradientShader.h" 9 #include "SkGradientShader.h"
10 10
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 } 603 }
604 604
605 void onDraw(SkCanvas* canvas) override { 605 void onDraw(SkCanvas* canvas) override {
606 const SkScalar kRectSize = 100; 606 const SkScalar kRectSize = 100;
607 const unsigned kStopCount = 3; 607 const unsigned kStopCount = 3;
608 const SkColor colors[kStopCount] = { SK_ColorGREEN, SK_ColorRED, SK_Colo rGREEN }; 608 const SkColor colors[kStopCount] = { SK_ColorGREEN, SK_ColorRED, SK_Colo rGREEN };
609 const struct { 609 const struct {
610 SkPoint pts[2]; 610 SkPoint pts[2];
611 SkScalar pos[kStopCount]; 611 SkScalar pos[kStopCount];
612 } configs[] = { 612 } configs[] = {
613 { { SkPoint::Make(0, 0), SkPoint::Make(10, 0) }, { 0, 0.999999f, 1 }}, 613 { { SkPoint::Make(0, 0), SkPoint::Make(10, 0) }, { 0, 0 .999999f, 1 }},
614 { { SkPoint::Make(0, 0), SkPoint::Make(10, 0) }, { 0, 0.000001f, 1 }}, 614 { { SkPoint::Make(0, 0), SkPoint::Make(10, 0) }, { 0, 0 .000001f, 1 }},
615 { { SkPoint::Make(0, 0), SkPoint::Make(10, 0) }, { 0, 0.999999999f, 1 }}, 615 { { SkPoint::Make(0, 0), SkPoint::Make(10, 0) }, { 0, 0 .999999999f, 1 }},
616 { { SkPoint::Make(0, 0), SkPoint::Make(10, 0) }, { 0, 0.000000001f, 1 }}, 616 { { SkPoint::Make(0, 0), SkPoint::Make(10, 0) }, { 0, 0 .000000001f, 1 }},
617 { { SkPoint::Make(0, 0), SkPoint::Make(0, 10) }, { 0, 0.999999f, 1 }},
618 { { SkPoint::Make(0, 0), SkPoint::Make(0, 10) }, { 0, 0.000001f, 1 }},
619 { { SkPoint::Make(0, 0), SkPoint::Make(0, 10) }, { 0, 0.999999999f, 1 }},
620 { { SkPoint::Make(0, 0), SkPoint::Make(0, 10) }, { 0, 0.000000001f, 1 }},
621 617
622 { { SkPoint::Make(0, 0), SkPoint::Make(0.00001f, 0) } , { 0, 0.5f, 1 }}, 618 { { SkPoint::Make(0, 0), SkPoint::Make(0, 10) }, { 0, 0 .999999f, 1 }},
623 { { SkPoint::Make(9.99999f, 0), SkPoint::Make(10, 0) }, { 0, 0.5f, 1 }}, 619 { { SkPoint::Make(0, 0), SkPoint::Make(0, 10) }, { 0, 0 .000001f, 1 }},
624 { { SkPoint::Make(0, 0), SkPoint::Make(0, 0.00001f) }, { 0, 0.5f, 1 }}, 620 { { SkPoint::Make(0, 0), SkPoint::Make(0, 10) }, { 0, 0 .999999999f, 1 }},
625 { { SkPoint::Make(0, 9.99999f), SkPoint::Make(0, 10) }, { 0, 0.5f, 1 }}, 621 { { SkPoint::Make(0, 0), SkPoint::Make(0, 10) }, { 0, 0 .000000001f, 1 }},
622
623 { { SkPoint::Make(0, 0), SkPoint::Make(0.00001f, 0) }, { 0, 0 .5f, 1 }},
624 { { SkPoint::Make(9.99999f, 0), SkPoint::Make(10, 0) }, { 0, 0 .5f, 1 }},
625 { { SkPoint::Make(0, 0), SkPoint::Make(0, 0.00001f) }, { 0, 0 .5f, 1 }},
626 { { SkPoint::Make(0, 9.99999f), SkPoint::Make(0, 10) }, { 0, 0 .5f, 1 }},
626 }; 627 };
627 628
628 SkPaint paint; 629 SkPaint paint;
629 for (unsigned i = 0; i < SK_ARRAY_COUNT(configs); ++i) { 630 for (unsigned i = 0; i < SK_ARRAY_COUNT(configs); ++i) {
630 SkAutoCanvasRestore acr(canvas, true); 631 SkAutoCanvasRestore acr(canvas, true);
631 SkAutoTUnref<SkShader> gradient( 632 SkAutoTUnref<SkShader> gradient(
632 SkGradientShader::CreateLinear(configs[i].pts, colors, configs[i ].pos, kStopCount, 633 SkGradientShader::CreateLinear(configs[i].pts, colors, configs[i ].pos, kStopCount,
633 SkShader::kClamp_TileMode)); 634 SkShader::kClamp_TileMode));
634 canvas->translate(kRectSize * ((i % 4) * 1.5f + 0.25f), 635 canvas->translate(kRectSize * ((i % 4) * 1.5f + 0.25f),
635 kRectSize * ((i / 4) * 1.5f + 0.25f)); 636 kRectSize * ((i / 4) * 1.5f + 0.25f));
636 637
637 paint.setShader(gradient); 638 paint.setShader(gradient);
638 canvas->drawRect(SkRect::MakeWH(kRectSize, kRectSize), paint); 639 canvas->drawRect(SkRect::MakeWH(kRectSize, kRectSize), paint);
639 } 640 }
640 } 641 }
641 642
642 private: 643 private:
643 typedef GM INHERITED; 644 typedef GM INHERITED;
644 }; 645 };
645 DEF_GM( return new LinearGradientTinyGM(); ) 646 DEF_GM( return new LinearGradientTinyGM(); )
646 647
647 } 648 }
OLDNEW
« no previous file with comments | « no previous file | src/effects/gradients/SkLinearGradient.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698