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 |