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

Unified Diff: tests/ImageFilterTest.cpp

Issue 112803004: Make SkImageFilter crop rects relative to the primitive origin, instead of relative to their parent (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Updated to ToT Created 6 years, 12 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 | « src/gpu/SkGpuDevice.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/ImageFilterTest.cpp
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
index 4301fc3967c089a905ccbb4ab77b2c573c25672b..44b917c205af8c78e943fcd320c6fc86ef22e5b0 100644
--- a/tests/ImageFilterTest.cpp
+++ b/tests/ImageFilterTest.cpp
@@ -15,7 +15,16 @@
#include "SkColorMatrixFilter.h"
#include "SkColorFilterImageFilter.h"
#include "SkDeviceImageFilterProxy.h"
+#include "SkBlurImageFilter.h"
+#include "SkDisplacementMapEffect.h"
+#include "SkDropShadowImageFilter.h"
#include "SkLightingImageFilter.h"
+#include "SkMergeImageFilter.h"
+#include "SkMorphologyImageFilter.h"
+#include "SkMatrixConvolutionImageFilter.h"
+#include "SkOffsetImageFilter.h"
+#include "SkTileImageFilter.h"
+#include "SkXfermodeImageFilter.h"
#include "SkRect.h"
static const int kBitmapSize = 4;
@@ -148,4 +157,64 @@ DEF_TEST(ImageFilter, reporter) {
!bicubic->filterImage(&proxy, bitmap, SkMatrix::I(), &result, &loc));
}
}
+
+ {
+ // Check that all filters offset to their absolute crop rect,
+ // unaffected by the input crop rect.
+ // Tests pass by not asserting.
+ SkBitmap bitmap, temp;
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
+ temp.setConfig(SkBitmap::kARGB_8888_Config, 100, 100);
+ bitmap.allocPixels();
+ temp.allocPixels();
+ bitmap.eraseARGB(0, 0, 0, 0);
+ SkBitmapDevice device(temp);
+ SkDeviceImageFilterProxy proxy(&device);
+
+ SkImageFilter::CropRect inputCropRect(SkRect::MakeXYWH(8, 13, 80, 80));
+ SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(20, 30, 60, 60));
+ SkAutoTUnref<SkImageFilter> input(make_grayscale(NULL, &inputCropRect));
+
+ SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorRED, SkXfermode::kSrcIn_Mode));
+ SkPoint3 location(0, 0, SK_Scalar1);
+ SkPoint3 target(SK_Scalar1, SK_Scalar1, SK_Scalar1);
+ SkScalar kernel[9] = {
+ SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
+ SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1),
+ SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
+ };
+ SkISize kernelSize = SkISize::Make(3, 3);
+ SkScalar gain = SK_Scalar1, bias = 0;
+
+ SkImageFilter* filters[] = {
+ SkColorFilterImageFilter::Create(cf.get(), input.get(), &cropRect),
+ new SkDisplacementMapEffect(SkDisplacementMapEffect::kR_ChannelSelectorType,
+ SkDisplacementMapEffect::kB_ChannelSelectorType,
+ 40.0f, input.get(), input.get(), &cropRect),
+ new SkBlurImageFilter(SK_Scalar1, SK_Scalar1, input.get(), &cropRect),
+ new SkDropShadowImageFilter(SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_Scalar1, SK_ColorGREEN, input.get(), &cropRect),
+ SkLightingImageFilter::CreatePointLitDiffuse(location, SK_ColorGREEN, 0, 0, input.get(), &cropRect),
+ SkLightingImageFilter::CreatePointLitSpecular(location, SK_ColorGREEN, 0, 0, 0, input.get(), &cropRect),
+ new SkMatrixConvolutionImageFilter(kernelSize, kernel, gain, bias, SkIPoint::Make(1, 1), SkMatrixConvolutionImageFilter::kRepeat_TileMode, false, input.get(), &cropRect),
+ new SkMergeImageFilter(input.get(), input.get(), SkXfermode::kSrcOver_Mode, &cropRect),
+ new SkOffsetImageFilter(SK_Scalar1, SK_Scalar1, input.get(), &cropRect),
+ new SkOffsetImageFilter(SK_Scalar1, SK_Scalar1, input.get(), &cropRect),
+ new SkDilateImageFilter(3, 2, input.get(), &cropRect),
+ new SkErodeImageFilter(2, 3, input.get(), &cropRect),
+ new SkTileImageFilter(inputCropRect.rect(), cropRect.rect(), input.get()),
+ new SkXfermodeImageFilter(SkXfermode::Create(SkXfermode::kSrcOver_Mode), input.get(), input.get(), &cropRect),
+ };
+
+ for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
+ SkImageFilter* filter = filters[i];
+ SkBitmap result;
+ SkIPoint offset;
+ REPORTER_ASSERT(reporter, filter->filterImage(&proxy, bitmap, SkMatrix::I(), &result, &offset));
+ REPORTER_ASSERT(reporter, offset.fX == 20 && offset.fY == 30);
+ }
+
+ for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
+ SkSafeUnref(filters[i]);
+ }
+ }
}
« no previous file with comments | « src/gpu/SkGpuDevice.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698