aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/patch.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-05-23 21:27:59 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-24 01:58:22 +0000
commitd36968bd98b33aec122adf744017053ef11f3479 (patch)
tree623b0acf72de96658ab68140d56aa0406f7795f2 /gm/patch.cpp
parentd17b4a678b4b1df49a8eb84fb8c3c954d292a12c (diff)
add image variant to patch gm
Bug: skia: Change-Id: Icaa1e2854775d8a79a8b3520163a863605336d05 Reviewed-on: https://skia-review.googlesource.com/17792 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'gm/patch.cpp')
-rw-r--r--gm/patch.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/gm/patch.cpp b/gm/patch.cpp
index a575ea3013..1b6dbd1b84 100644
--- a/gm/patch.cpp
+++ b/gm/patch.cpp
@@ -7,6 +7,7 @@
#include "gm.h"
#include "SkGradientShader.h"
+#include "SkImage.h"
#include "SkPatchUtils.h"
#include "SkPath.h"
@@ -81,7 +82,7 @@ const SkPoint gTexCoords[SkPatchUtils::kNumCorners] = {
};
-static void dopatch(SkCanvas* canvas, const SkColor colors[]) {
+static void dopatch(SkCanvas* canvas, const SkColor colors[], sk_sp<SkImage> img = nullptr) {
SkPaint paint;
const SkBlendMode modes[] = {
@@ -90,7 +91,22 @@ static void dopatch(SkCanvas* canvas, const SkColor colors[]) {
SkBlendMode::kModulate,
};
- sk_sp<SkShader> shader(make_shader());
+ SkPoint texStorage[4];
+ const SkPoint* tex = gTexCoords;
+
+ sk_sp<SkShader> shader;
+ if (img) {
+ SkScalar w = img->width();
+ SkScalar h = img->height();
+ shader = img->makeShader(SkShader::kClamp_TileMode, SkShader::kClamp_TileMode);
+ texStorage[0].set(0, 0);
+ texStorage[1].set(w, 0);
+ texStorage[2].set(w, h);
+ texStorage[3].set(0, h);
+ tex = texStorage;
+ } else {
+ shader = make_shader();
+ }
canvas->save();
for (int y = 0; y < 3; y++) {
@@ -106,12 +122,12 @@ static void dopatch(SkCanvas* canvas, const SkColor colors[]) {
break;
case 2:
paint.setShader(shader);
- canvas->drawPatch(gCubics, nullptr, gTexCoords, modes[y], paint);
+ canvas->drawPatch(gCubics, nullptr, tex, modes[y], paint);
paint.setShader(nullptr);
break;
case 3:
paint.setShader(shader);
- canvas->drawPatch(gCubics, colors, gTexCoords, modes[y], paint);
+ canvas->drawPatch(gCubics, colors, tex, modes[y], paint);
paint.setShader(nullptr);
break;
default:
@@ -131,6 +147,13 @@ DEF_SIMPLE_GM(patch_primitive, canvas, 1500, 1100) {
};
dopatch(canvas, colors);
}
+#include "Resources.h"
+DEF_SIMPLE_GM(patch_image, canvas, 1500, 1100) {
+ const SkColor colors[SkPatchUtils::kNumCorners] = {
+ SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorCYAN
+ };
+ dopatch(canvas, colors, GetResourceAsImage("mandrill_128.png"));
+}
DEF_SIMPLE_GM(patch_alpha, canvas, 1500, 1100) {
const SkColor colors[SkPatchUtils::kNumCorners] = {
SK_ColorRED, 0x0000FF00, SK_ColorBLUE, 0x00FF00FF,