aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/pictureshader.cpp
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-05-02 20:30:11 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-05-02 20:30:11 +0000
commit74b8cb15e4fb330e8d10856f6620e8b92b39a9ce (patch)
treefee3f1eacb7bba6143a82ea2e5ccd24878a76946 /gm/pictureshader.cpp
parent608d63735f6b36482198eaf17f8137ab2e9e0f0d (diff)
Remove setLocalMatrix calls from picture shader GM.
This makes all --skr tests pass for me. Enabling it by default in DM. BUG=skia:2378 R=reed@google.com, mtklein@google.com, fmalita@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/260863007 git-svn-id: http://skia.googlecode.com/svn/trunk@14549 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/pictureshader.cpp')
-rw-r--r--gm/pictureshader.cpp45
1 files changed, 19 insertions, 26 deletions
diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp
index 44db338fc2..8b26e48663 100644
--- a/gm/pictureshader.cpp
+++ b/gm/pictureshader.cpp
@@ -13,8 +13,6 @@
#include "SkPictureRecorder.h"
#include "SkShader.h"
-namespace skiagm {
-
static struct {
SkShader::TileMode tmx;
SkShader::TileMode tmy;
@@ -24,9 +22,8 @@ static struct {
{ SkShader::kMirror_TileMode, SkShader::kRepeat_TileMode },
};
-class PictureShaderGM : public GM {
+class PictureShaderGM : public skiagm::GM {
public:
-
PictureShaderGM(SkScalar tileSize, SkScalar sceneSize)
: fTileSize(tileSize)
, fSceneSize(sceneSize) {
@@ -37,24 +34,13 @@ public:
SkScalarRoundToInt(tileSize),
NULL, 0);
this->drawTile(pictureCanvas);
- SkAutoTUnref<SkPicture> p(recorder.endRecording());
+ fPicture.reset(recorder.endRecording());
// Build a reference bitmap.
- SkBitmap bm;
- bm.allocN32Pixels(SkScalarRoundToInt(tileSize), SkScalarRoundToInt(tileSize));
- bm.eraseColor(SK_ColorTRANSPARENT);
- SkCanvas bitmapCanvas(bm);
+ fBitmap.allocN32Pixels(SkScalarRoundToInt(tileSize), SkScalarRoundToInt(tileSize));
+ fBitmap.eraseColor(SK_ColorTRANSPARENT);
+ SkCanvas bitmapCanvas(fBitmap);
this->drawTile(&bitmapCanvas);
-
- for (unsigned i = 0; i < SK_ARRAY_COUNT(kTileConfigs); ++i) {
- fPictureShaders[i].reset(SkShader::CreatePictureShader(p,
- kTileConfigs[i].tmx,
- kTileConfigs[i].tmy));
-
- fBitmapShaders[i].reset(SkShader::CreateBitmapShader(bm,
- kTileConfigs[i].tmx,
- kTileConfigs[i].tmy));
- }
}
protected:
@@ -145,14 +131,22 @@ private:
canvas->drawRect(SkRect::MakeWH(fSceneSize, fSceneSize), paint);
canvas->drawRect(SkRect::MakeXYWH(fSceneSize * 1.1f, 0, fSceneSize, fSceneSize), paint);
- fPictureShaders[tileMode]->setLocalMatrix(localMatrix);
- paint.setShader(fPictureShaders[tileMode].get());
+ SkAutoTUnref<SkShader> pictureShader(SkShader::CreatePictureShader(
+ fPicture,
+ kTileConfigs[tileMode].tmx,
+ kTileConfigs[tileMode].tmy,
+ &localMatrix));
+ paint.setShader(pictureShader.get());
canvas->drawRect(SkRect::MakeWH(fSceneSize, fSceneSize), paint);
canvas->translate(fSceneSize * 1.1f, 0);
- fBitmapShaders[tileMode]->setLocalMatrix(localMatrix);
- paint.setShader(fBitmapShaders[tileMode].get());
+ SkAutoTUnref<SkShader> bitmapShader(SkShader::CreateBitmapShader(
+ fBitmap,
+ kTileConfigs[tileMode].tmx,
+ kTileConfigs[tileMode].tmy,
+ &localMatrix));
+ paint.setShader(bitmapShader.get());
canvas->drawRect(SkRect::MakeWH(fSceneSize, fSceneSize), paint);
canvas->restore();
@@ -161,11 +155,10 @@ private:
SkScalar fTileSize;
SkScalar fSceneSize;
- SkAutoTUnref<SkShader> fPictureShaders[SK_ARRAY_COUNT(kTileConfigs)];
- SkAutoTUnref<SkShader> fBitmapShaders[SK_ARRAY_COUNT(kTileConfigs)];
+ SkAutoTUnref<SkPicture> fPicture;
+ SkBitmap fBitmap;
typedef GM INHERITED;
};
DEF_GM( return SkNEW_ARGS(PictureShaderGM, (50, 100)); )
-}