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

Unified Diff: gm/imagefiltersclipped.cpp

Issue 23011012: Implement correct clipping for image filters. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Add morphology to the list of ignored tests Created 6 years, 10 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 | « gm/imageblurtiled.cpp ('k') | gm/imagefiltersscaled.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/imagefiltersclipped.cpp
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersclipped.cpp
similarity index 75%
copy from gm/imagefiltersscaled.cpp
copy to gm/imagefiltersclipped.cpp
index ad52d902e76062292eb9181cac6df3ad7d0f205f..514fc203638b488b52b61fc4db2052bc388b1b30 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersclipped.cpp
@@ -13,19 +13,20 @@
#include "SkDropShadowImageFilter.h"
#include "SkGradientShader.h"
#include "SkMorphologyImageFilter.h"
+#include "SkOffsetImageFilter.h"
#include "SkScalar.h"
namespace skiagm {
-class ImageFiltersScaledGM : public GM {
+class ImageFiltersClippedGM : public GM {
public:
- ImageFiltersScaledGM() : fInitialized(false) {
+ ImageFiltersClippedGM() : fInitialized(false) {
this->setBGColor(0x00000000);
}
protected:
virtual SkString onShortName() {
- return SkString("imagefiltersscaled");
+ return SkString("imagefiltersclipped");
}
virtual SkISize onISize() {
@@ -86,24 +87,17 @@ protected:
SkAutoTUnref<SkImageFilter> checkerboard(new SkBitmapSource(fCheckerboard));
SkImageFilter* filters[] = {
- new SkBlurImageFilter(SkIntToScalar(4), SkIntToScalar(4)),
- new SkDropShadowImageFilter(SkIntToScalar(5), SkIntToScalar(10), SkIntToScalar(3),
- SK_ColorYELLOW),
+ new SkBlurImageFilter(SkIntToScalar(12), SkIntToScalar(12)),
+ new SkDropShadowImageFilter(SkIntToScalar(10), SkIntToScalar(10), SkIntToScalar(3),
+ SK_ColorGREEN),
new SkDisplacementMapEffect(SkDisplacementMapEffect::kR_ChannelSelectorType,
SkDisplacementMapEffect::kR_ChannelSelectorType,
SkIntToScalar(12),
gradient.get(),
checkerboard.get()),
- new SkDilateImageFilter(1, 1, checkerboard.get()),
- new SkErodeImageFilter(1, 1, checkerboard.get()),
- };
-
- SkVector scales[] = {
- SkVector::Make(SkScalarInvert(2), SkScalarInvert(2)),
- SkVector::Make(SkIntToScalar(1), SkIntToScalar(1)),
- SkVector::Make(SkIntToScalar(1), SkIntToScalar(2)),
- SkVector::Make(SkIntToScalar(2), SkIntToScalar(1)),
- SkVector::Make(SkIntToScalar(2), SkIntToScalar(2)),
+ new SkDilateImageFilter(2, 2, checkerboard.get()),
+ new SkErodeImageFilter(2, 2, checkerboard.get()),
+ new SkOffsetImageFilter(SkIntToScalar(-16), SkIntToScalar(32)),
};
SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64));
@@ -111,27 +105,26 @@ protected:
SkRect bounds = r;
bounds.outset(margin, margin);
- for (size_t j = 0; j < SK_ARRAY_COUNT(scales); ++j) {
+ for (int xOffset = 0; xOffset < 80; xOffset += 16) {
canvas->save();
+ bounds.fLeft = SkIntToScalar(xOffset);
for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
SkPaint paint;
- paint.setColor(SK_ColorBLUE);
+ paint.setColor(SK_ColorWHITE);
paint.setImageFilter(filters[i]);
paint.setAntiAlias(true);
canvas->save();
- canvas->scale(scales[j].fX, scales[j].fY);
canvas->clipRect(bounds);
+ if (i == 5) {
+ canvas->translate(SkIntToScalar(16), SkIntToScalar(-32));
+ }
canvas->drawCircle(r.centerX(), r.centerY(),
SkScalarDiv(r.width()*2, SkIntToScalar(5)), paint);
canvas->restore();
- canvas->translate(r.width() * scales[j].fX + margin, 0);
+ canvas->translate(r.width() + margin, 0);
}
canvas->restore();
- canvas->translate(0, r.height() * scales[j].fY + margin);
- }
-
- for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
- filters[i]->unref();
+ canvas->translate(0, r.height() + margin);
}
}
@@ -144,7 +137,7 @@ private:
//////////////////////////////////////////////////////////////////////////////
-static GM* MyFactory(void*) { return new ImageFiltersScaledGM; }
+static GM* MyFactory(void*) { return new ImageFiltersClippedGM; }
static GMRegistry reg(MyFactory);
}
« no previous file with comments | « gm/imageblurtiled.cpp ('k') | gm/imagefiltersscaled.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698