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

Unified Diff: gm/gradient_matrix.cpp

Issue 16467002: Added tests for radial gradients with shader matrices (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Fixed the Mac build Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/gradient_matrix.cpp
diff --git a/gm/gradient_matrix.cpp b/gm/gradient_matrix.cpp
index cc1683e08939a197b9c0f246031faba68c8d700d..c1ff65e3d903e5c4e6c1f44ef390c8a3d1fbe6e9 100644
--- a/gm/gradient_matrix.cpp
+++ b/gm/gradient_matrix.cpp
@@ -37,6 +37,19 @@ static const SkPoint linearPts[][2] = {
{{0, 1}, {1, 0}}
};
+static const SkPoint radialPts[][2] = {
+ {{0, 0.5}, {1, 0.5}},
+ {{0.5, 0 }, {0.5, 1 }},
+ {{1, 0.5}, {0, 0.5}},
+ {{0.5, 1 }, {0.5, 0 }},
+
+ {{0, 0}, {1, 1}},
+ {{1, 1}, {0, 0}},
+ {{1, 0}, {0, 1}},
+ {{0, 1}, {1, 0}}
+};
+
+
static const SkScalar TESTGRID_X = 200; // pixels allocated to each image in x dimension
static const SkScalar TESTGRID_Y = 200; // pixels allocated to each image in y dimension
@@ -47,8 +60,17 @@ static SkShader* make_linear_gradient(const SkPoint pts[2]) {
SkShader::kClamp_TileMode, NULL);
}
+static SkShader* make_radial_gradient(const SkPoint pts[2]) {
+ SkPoint center;
+ center.set(SkScalarAve(pts[0].fX, pts[1].fX),
+ SkScalarAve(pts[0].fY, pts[1].fY));
+ float radius = (center - pts[0]).length();
+ return SkGradientShader::CreateRadial(center, radius, gColors, NULL, SK_ARRAY_COUNT(gColors),
+ SkShader::kClamp_TileMode, NULL);
+}
+
static void draw_gradients(SkCanvas* canvas, SkShader* (*makeShader)(const SkPoint[2]),
- const SkPoint ptsArray[][2], int numImages) {
+ const SkPoint ptsArray[][2], int numImages) {
// Use some nice prime numbers for the rectangle and matrix with
// different scaling along the x and y axes (which is the bug this
// test addresses, where incorrect order of operations mixed up the axes)
@@ -101,6 +123,11 @@ protected:
virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
draw_gradients(canvas, &make_linear_gradient,
linearPts, SK_ARRAY_COUNT(linearPts));
+
+ canvas->translate(0, TESTGRID_Y);
+
+ draw_gradients(canvas, &make_radial_gradient,
+ radialPts, SK_ARRAY_COUNT(radialPts));
}
private:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698