diff options
author | fmenozzi <fmenozzi@google.com> | 2016-08-03 07:58:06 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-03 07:58:06 -0700 |
commit | 7a9f3766aa07f69323f37670a7aeb13605f266bb (patch) | |
tree | f23f8b6e92c39b9faf55c4dba7173f99a6c2c9ef /gm/hardstop_gradients.cpp | |
parent | bb75a951f3e51fcbdf492a3818b7ff82e81a4f73 (diff) |
Update hardstop_gradients GM to include more special cases
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2204873005
Review-Url: https://codereview.chromium.org/2204873005
Diffstat (limited to 'gm/hardstop_gradients.cpp')
-rw-r--r-- | gm/hardstop_gradients.cpp | 57 |
1 files changed, 36 insertions, 21 deletions
diff --git a/gm/hardstop_gradients.cpp b/gm/hardstop_gradients.cpp index c1baa2f1c6..846465ec19 100644 --- a/gm/hardstop_gradients.cpp +++ b/gm/hardstop_gradients.cpp @@ -14,16 +14,25 @@ * order to highlight the differences between tile modes, the gradient * starts and ends at 30 pixel inset from either side of the rectangle. * - * | Clamp Repeat Mirror - * _____________________|___________________________________________ - * 2-color | rect00 rect01 rect02 - * 3-color | rect10 rect11 rect12 - * 5-color hard stop | rect20 rect21 rect22 - * 5-color edge case 1 | rect30 rect31 rect32 - * 5-color edge case 2 | rect40 rect41 rect42 + * | Clamp Repeat Mirror + * ___________________________|___________________________________________ + * 2-color | rect00 rect01 rect02 + * 3-color even | rect10 rect11 rect12 + * 3-color texture | rect20 rect21 rect22 + * 5-color hard stop | rect30 rect31 rect32 + * 4-color hard stop centered | rect40 rect41 rect42 + * 3-color hard stop 001 | rect50 rect51 rect52 + * 3-color hard stop 011 | rect60 rect61 rect62 * - * The LAST two t-values in edge case 1 are the same, while the FIRST - * two t-values in edge case 2 are the same. + * The first three rows are cases covered by pre-hard-stop code; simple + * 2-color gradients, 3-color gradients with the middle color centered, + * and general gradients that are rendered from a texture atlas. + * + * The next four rows all deal with hard stop gradients. The fourth row + * is a generic hard stop gradient, while the three subsequent rows deal + * with special cases of hard stop gradients; centered hard stop gradients + * (with t-values 0, 0.5, 0.5, 1), and two edge cases (with t-values + * 0, 0, 1 and 0, 1, 1). */ #include "gm.h" @@ -33,7 +42,7 @@ const int WIDTH = 500; const int HEIGHT = 500; -const int NUM_ROWS = 5; +const int NUM_ROWS = 7; const int NUM_COLS = 3; const int CELL_WIDTH = WIDTH / NUM_COLS; @@ -60,9 +69,9 @@ static void shade_rect(SkCanvas* canvas, sk_sp<SkShader> shader, int cellRow, in static void create_gradient_points(int cellRow, int cellCol, SkPoint points[2]) { const int X_OFFSET = 30; - auto x0 = SkIntToScalar(cellCol * CELL_WIDTH + PAD_WIDTH + X_OFFSET); - auto x1 = SkIntToScalar((cellCol+1) * CELL_WIDTH - PAD_WIDTH - X_OFFSET); - auto y = SkIntToScalar(cellRow * CELL_HEIGHT + PAD_HEIGHT + RECT_HEIGHT/2); + auto x0 = SkIntToScalar(cellCol * CELL_WIDTH + PAD_WIDTH + X_OFFSET); + auto x1 = SkIntToScalar((cellCol+1) * CELL_WIDTH - PAD_WIDTH - X_OFFSET); + auto y = SkIntToScalar(cellRow * CELL_HEIGHT + PAD_HEIGHT + RECT_HEIGHT/2); points[0] = SkPoint::Make(x0, y); points[1] = SkPoint::Make(x1, y); @@ -94,27 +103,33 @@ protected: SK_ColorMAGENTA, }; - SkScalar row3[] = {0.00f, 0.25f, 0.50f, 0.50f, 1.00f}; - SkScalar row4[] = {0.00f, 0.25f, 0.50f, 1.00f, 1.00f}; - SkScalar row5[] = {0.00f, 0.00f, 0.50f, 0.50f, 1.00f}; + SkScalar row3[] = {0.00f, 0.25f, 1.00f}; + SkScalar row4[] = {0.00f, 0.25f, 0.50f, 0.50f, 1.00f}; + SkScalar row5[] = {0.00f, 0.50f, 0.50f, 1.00f}; + SkScalar row6[] = {0.00f, 0.00f, 1.00f}; + SkScalar row7[] = {0.00f, 1.00f, 1.00f}; - SkScalar* positions[] = { + SkScalar* positions[NUM_ROWS] = { nullptr, nullptr, row3, row4, row5, + row6, + row7, }; - int numGradientColors[] = { + int numGradientColors[NUM_ROWS] = { 2, 3, + 3, 5, - 5, - 5, + 4, + 3, + 3, }; - SkShader::TileMode tilemodes[] = { + SkShader::TileMode tilemodes[NUM_COLS] = { SkShader::kClamp_TileMode, SkShader::kRepeat_TileMode, SkShader::kMirror_TileMode, |