| OLD | NEW |
| 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 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 paint.setAntiAlias(true); | 483 paint.setAntiAlias(true); |
| 484 paint.setShader(fShader); | 484 paint.setShader(fShader); |
| 485 canvas->drawRect(SkRect::MakeWH(500, 500), paint); | 485 canvas->drawRect(SkRect::MakeWH(500, 500), paint); |
| 486 } | 486 } |
| 487 | 487 |
| 488 private: | 488 private: |
| 489 typedef GM INHERITED; | 489 typedef GM INHERITED; |
| 490 }; | 490 }; |
| 491 DEF_GM( return new RadialGradient4GM; ) | 491 DEF_GM( return new RadialGradient4GM; ) |
| 492 | 492 |
| 493 class LinearGradientGM : public GM { |
| 494 SkAutoTUnref<SkShader> fShader[100]; |
| 495 |
| 496 protected: |
| 497 SkString onShortName() override { return SkString("linear_gradient"); } |
| 498 const SkScalar kWidthBump = 30.f; |
| 499 const SkScalar kHeight = 5.f; |
| 500 const SkScalar kMinWidth = 540.f; |
| 501 |
| 502 SkISize onISize() override { return SkISize::Make(500, 500); } |
| 503 |
| 504 void onOnceBeforeDraw() override { |
| 505 SkPoint pts[2] = { {0, 0}, {0, 0} }; |
| 506 const SkColor colors[] = { SK_ColorWHITE, SK_ColorWHITE, 0xFF008200, 0xF
F008200, |
| 507 SK_ColorWHITE, SK_ColorWHITE }; |
| 508 const SkScalar unitPos[] = { 0, 50, 70, 500, 540 }; |
| 509 SkScalar pos[6]; |
| 510 pos[5] = 1; |
| 511 for (int index = 0; index < (int) SK_ARRAY_COUNT(fShader); ++index) { |
| 512 pts[1].fX = 500.f + index * kWidthBump; |
| 513 for (int inner = 0; inner < (int) SK_ARRAY_COUNT(unitPos); ++inner)
{ |
| 514 pos[inner] = unitPos[inner] / (kMinWidth + index * kWidthBump); |
| 515 } |
| 516 fShader[index].reset(SkGradientShader::CreateLinear(pts, colors, pos
, |
| 517 SK_ARRAY_COUNT(gColors), SkShader::kClamp_TileMode)); |
| 518 } |
| 519 } |
| 520 |
| 521 void onDraw(SkCanvas* canvas) override { |
| 522 SkPaint paint; |
| 523 paint.setAntiAlias(true); |
| 524 for (int index = 0; index < (int) SK_ARRAY_COUNT(fShader); ++index) { |
| 525 paint.setShader(fShader[index]); |
| 526 canvas->drawRect(SkRect::MakeLTRB(0, index * kHeight, kMinWidth + in
dex * kWidthBump, |
| 527 (index + 1) * kHeight), paint); |
| 528 } |
| 529 } |
| 530 |
| 531 private: |
| 532 typedef GM INHERITED; |
| 533 }; |
| 534 DEF_GM( return new LinearGradientGM; ) |
| 535 |
| 493 } | 536 } |
| OLD | NEW |