aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/tileimagefilter.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2015-06-02 10:57:26 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-06-02 10:57:26 -0700
commita66cc7e1e01bab8590fdcfafb269e21bfe8782fa (patch)
tree97a2ebe8c1375f3e8a5d12277cdbd3fdd9b2b076 /gm/tileimagefilter.cpp
parent05be93bbdf09576f7903130e3b106b0a8c7c4b4e (diff)
Revert of Fix dst bound reported by SkTileImageFilter (patchset #3 id:40001 of https://codereview.chromium.org/1152553006/)
Reason for revert: breaking tests Original issue's description: > Fix dst bound reported by SkTileImageFilter > > In the example from the bug we had the filter DAG: > > color filter (table) > 0: xfermode filter (arith) > 0: tile filter [0,80,34,114] -> [0,80,800,480] > 0: color filter (table) > 0: bitmap src 34x34 -> [0,80,34,114] > 1: color filter (table) > 0: picture filter [0, 80, 800, 480] > > computeFastBounds was coming out of the DAG with a bound of [0,80,34,114] which didn't represent the pixels that would be drawn. > > This CL updates SkTileImageFilter to correctly set the bound for the pixels it will hit. > > BUG=493783 > > Committed: https://skia.googlesource.com/skia/+/05be93bbdf09576f7903130e3b106b0a8c7c4b4e TBR=reed@google.com,senorblanco@google.com,senorblanco@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=493783 Review URL: https://codereview.chromium.org/1143083006
Diffstat (limited to 'gm/tileimagefilter.cpp')
-rw-r--r--gm/tileimagefilter.cpp58
1 files changed, 28 insertions, 30 deletions
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp
index 82393087b0..2c4f6b2b2c 100644
--- a/gm/tileimagefilter.cpp
+++ b/gm/tileimagefilter.cpp
@@ -16,48 +16,46 @@
#define HEIGHT 100
#define MARGIN 12
-static SkBitmap make_bitmap() {
- SkBitmap bitmap;
- bitmap.allocN32Pixels(50, 50);
- SkCanvas canvas(bitmap);
- canvas.clear(0xFF000000);
- SkPaint paint;
- paint.setAntiAlias(true);
- sk_tool_utils::set_portable_typeface(&paint);
- paint.setColor(0xD000D000);
- paint.setTextSize(SkIntToScalar(50));
- const char* str = "e";
- canvas.drawText(str, strlen(str), SkIntToScalar(10), SkIntToScalar(45), paint);
- return bitmap;
-}
-
-
namespace skiagm {
class TileImageFilterGM : public GM {
public:
- TileImageFilterGM() {
+ TileImageFilterGM() : fInitialized(false) {
this->setBGColor(0xFF000000);
}
protected:
- SkString onShortName() override {
+ virtual SkString onShortName() {
return SkString("tileimagefilter");
}
- SkISize onISize() override{
+ void make_bitmap() {
+ fBitmap.allocN32Pixels(50, 50);
+ SkCanvas canvas(fBitmap);
+ canvas.clear(0xFF000000);
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ sk_tool_utils::set_portable_typeface(&paint);
+ paint.setColor(0xD000D000);
+ paint.setTextSize(SkIntToScalar(50));
+ const char* str = "e";
+ canvas.drawText(str, strlen(str), SkIntToScalar(10), SkIntToScalar(45), paint);
+ }
+
+ virtual SkISize onISize() {
return SkISize::Make(WIDTH, HEIGHT);
}
- void onOnceBeforeDraw() override {
- fBitmap = make_bitmap();
+ virtual void onDraw(SkCanvas* canvas) {
+ if (!fInitialized) {
+ make_bitmap();
- fCheckerboard.allocN32Pixels(80, 80);
- SkCanvas checkerboardCanvas(fCheckerboard);
- sk_tool_utils::draw_checkerboard(&checkerboardCanvas, 0xFFA0A0A0, 0xFF404040, 8);
- }
+ fCheckerboard.allocN32Pixels(80, 80);
+ SkCanvas checkerboardCanvas(fCheckerboard);
+ sk_tool_utils::draw_checkerboard(&checkerboardCanvas, 0xFFA0A0A0, 0xFF404040, 8);
- void onDraw(SkCanvas* canvas) override {
+ fInitialized = true;
+ }
canvas->clear(SK_ColorBLACK);
int x = 0, y = 0;
@@ -111,14 +109,14 @@ protected:
canvas->restore();
}
private:
- SkBitmap fBitmap;
- SkBitmap fCheckerboard;
-
typedef GM INHERITED;
+ SkBitmap fBitmap, fCheckerboard;
+ bool fInitialized;
};
//////////////////////////////////////////////////////////////////////////////
-DEF_GM( return SkNEW(TileImageFilterGM); )
+static GM* MyFactory(void*) { return new TileImageFilterGM; }
+static GMRegistry reg(MyFactory);
}