Move SkMatrixImageFilter into core, and add a factory fn for it.
BUG=skia: Review URL: https://codereview.chromium.org/1011273003
This commit is contained in:
parent
977b6f7e7b
commit
8c874eee94
@ -9,7 +9,6 @@
|
||||
#include "SkBitmapSource.h"
|
||||
#include "SkBlurImageFilter.h"
|
||||
#include "SkDropShadowImageFilter.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkOffsetImageFilter.h"
|
||||
#include "SkPictureImageFilter.h"
|
||||
#include "SkPictureRecorder.h"
|
||||
@ -93,8 +92,8 @@ static void create_paints(SkImageFilter* source, SkTArray<SkPaint>* paints) {
|
||||
SkMatrix scale;
|
||||
scale.setScale(2.0f, 2.0f);
|
||||
|
||||
SkAutoTUnref<SkMatrixImageFilter> scaleMIF(
|
||||
SkMatrixImageFilter::Create(scale, kLow_SkFilterQuality, source));
|
||||
SkAutoTUnref<SkImageFilter> scaleMIF(
|
||||
SkImageFilter::CreateMatrixFilter(scale, kLow_SkFilterQuality, source));
|
||||
|
||||
add_paint(scaleMIF, paints);
|
||||
}
|
||||
@ -103,8 +102,8 @@ static void create_paints(SkImageFilter* source, SkTArray<SkPaint>* paints) {
|
||||
SkMatrix rot;
|
||||
rot.setRotate(-33.3f);
|
||||
|
||||
SkAutoTUnref<SkMatrixImageFilter> rotMIF(
|
||||
SkMatrixImageFilter::Create(rot, kLow_SkFilterQuality, source));
|
||||
SkAutoTUnref<SkImageFilter> rotMIF(
|
||||
SkImageFilter::CreateMatrixFilter(rot, kLow_SkFilterQuality, source));
|
||||
|
||||
add_paint(rotMIF, paints);
|
||||
}
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include "SkDisplacementMapEffect.h"
|
||||
#include "SkDropShadowImageFilter.h"
|
||||
#include "SkGradientShader.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkMorphologyImageFilter.h"
|
||||
#include "SkOffsetImageFilter.h"
|
||||
#include "SkPerlinNoiseShader.h"
|
||||
@ -91,7 +90,7 @@ protected:
|
||||
SkDilateImageFilter::Create(2, 2, checkerboard.get()),
|
||||
SkErodeImageFilter::Create(2, 2, checkerboard.get()),
|
||||
SkOffsetImageFilter::Create(SkIntToScalar(-16), SkIntToScalar(32)),
|
||||
SkMatrixImageFilter::Create(resizeMatrix, kNone_SkFilterQuality),
|
||||
SkImageFilter::CreateMatrixFilter(resizeMatrix, kNone_SkFilterQuality),
|
||||
SkRectShaderImageFilter::Create(noise),
|
||||
};
|
||||
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include "SkDropShadowImageFilter.h"
|
||||
#include "SkGradientShader.h"
|
||||
#include "SkLightingImageFilter.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkMorphologyImageFilter.h"
|
||||
#include "SkOffsetImageFilter.h"
|
||||
#include "SkPerlinNoiseShader.h"
|
||||
@ -100,7 +99,7 @@ protected:
|
||||
SkDilateImageFilter::Create(1, 1, checkerboard.get()),
|
||||
SkErodeImageFilter::Create(1, 1, checkerboard.get()),
|
||||
SkOffsetImageFilter::Create(SkIntToScalar(32), 0),
|
||||
SkMatrixImageFilter::Create(resizeMatrix, kNone_SkFilterQuality),
|
||||
SkImageFilter::CreateMatrixFilter(resizeMatrix, kNone_SkFilterQuality),
|
||||
SkRectShaderImageFilter::Create(noise),
|
||||
SkLightingImageFilter::CreatePointLitDiffuse(pointLocation, white, surfaceScale, kd),
|
||||
SkLightingImageFilter::CreateSpotLitDiffuse(spotLocation, spotTarget, spotExponent,
|
||||
|
@ -6,7 +6,7 @@
|
||||
*/
|
||||
|
||||
#include "gm.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkImageFilter.h"
|
||||
#include "SkRandom.h"
|
||||
|
||||
#define WIDTH 640
|
||||
@ -36,7 +36,7 @@ protected:
|
||||
SkMatrix matrix;
|
||||
matrix.setScale(RESIZE_FACTOR, RESIZE_FACTOR);
|
||||
SkAutoTUnref<SkImageFilter> imageFilter(
|
||||
SkMatrixImageFilter::Create(matrix, kNone_SkFilterQuality));
|
||||
SkImageFilter::CreateMatrixFilter(matrix, kNone_SkFilterQuality));
|
||||
paint.setImageFilter(imageFilter.get());
|
||||
const SkScalar tile_size = SkIntToScalar(100);
|
||||
SkRect bounds;
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
#include "gm.h"
|
||||
#include "SkColor.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkImageFilter.h"
|
||||
|
||||
namespace skiagm {
|
||||
|
||||
@ -25,7 +25,7 @@ protected:
|
||||
void draw(SkCanvas* canvas, const SkRect& rect, const SkBitmap& bitmap,
|
||||
const SkMatrix& matrix, SkFilterQuality filter) {
|
||||
SkAutoTUnref<SkImageFilter> imageFilter(
|
||||
SkMatrixImageFilter::Create(matrix, filter));
|
||||
SkImageFilter::CreateMatrixFilter(matrix, filter));
|
||||
SkPaint paint;
|
||||
paint.setImageFilter(imageFilter.get());
|
||||
canvas->saveLayer(&rect, &paint);
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include "SkBitmapDevice.h"
|
||||
#include "SkBitmapSource.h"
|
||||
#include "SkColor.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkRefCnt.h"
|
||||
|
||||
namespace skiagm {
|
||||
@ -42,7 +41,7 @@ protected:
|
||||
matrix.setScale(SkScalarInvert(deviceScaleX),
|
||||
SkScalarInvert(deviceScaleY));
|
||||
SkAutoTUnref<SkImageFilter> imageFilter(
|
||||
SkMatrixImageFilter::Create(matrix, filterQuality, input));
|
||||
SkImageFilter::CreateMatrixFilter(matrix, filterQuality, input));
|
||||
SkPaint filteredPaint;
|
||||
filteredPaint.setImageFilter(imageFilter.get());
|
||||
canvas->saveLayer(&rect, &filteredPaint);
|
||||
|
@ -123,6 +123,7 @@
|
||||
'<(skia_src_path)/core/SkMaskGamma.h',
|
||||
'<(skia_src_path)/core/SkMath.cpp',
|
||||
'<(skia_src_path)/core/SkMatrix.cpp',
|
||||
'<(skia_src_path)/core/SkMatrixImageFilter.cpp',
|
||||
'<(skia_src_path)/core/SkMessageBus.h',
|
||||
'<(skia_src_path)/core/SkMetaData.cpp',
|
||||
'<(skia_src_path)/core/SkMipMap.cpp',
|
||||
@ -275,6 +276,7 @@
|
||||
'<(skia_include_path)/core/SkMaskFilter.h',
|
||||
'<(skia_include_path)/core/SkMath.h',
|
||||
'<(skia_include_path)/core/SkMatrix.h',
|
||||
'<(skia_include_path)/core/SkMatrixImageFilter.h',
|
||||
'<(skia_include_path)/core/SkMetaData.h',
|
||||
'<(skia_include_path)/core/SkMultiPictureDraw.h',
|
||||
'<(skia_include_path)/core/SkOnce.h',
|
||||
|
@ -56,7 +56,6 @@
|
||||
'<(skia_src_path)/effects/SkTableMaskFilter.cpp',
|
||||
'<(skia_src_path)/effects/SkTestImageFilters.cpp',
|
||||
'<(skia_src_path)/effects/SkTileImageFilter.cpp',
|
||||
'<(skia_src_path)/effects/SkMatrixImageFilter.cpp',
|
||||
'<(skia_src_path)/effects/SkTransparentShader.cpp',
|
||||
'<(skia_src_path)/effects/SkXfermodeImageFilter.cpp',
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef SkImageFilter_DEFINED
|
||||
#define SkImageFilter_DEFINED
|
||||
|
||||
#include "SkFilterQuality.h"
|
||||
#include "SkFlattenable.h"
|
||||
#include "SkMatrix.h"
|
||||
#include "SkRect.h"
|
||||
@ -192,6 +193,13 @@ public:
|
||||
// Default impl returns union of all input bounds.
|
||||
virtual void computeFastBounds(const SkRect&, SkRect*) const;
|
||||
|
||||
/**
|
||||
* Create an SkMatrixImageFilter, which transforms its input by the given matrix.
|
||||
*/
|
||||
static SkImageFilter* CreateMatrixFilter(const SkMatrix& matrix,
|
||||
SkFilterQuality,
|
||||
SkImageFilter* input = NULL);
|
||||
|
||||
#if SK_SUPPORT_GPU
|
||||
/**
|
||||
* Wrap the given texture in a texture-backed SkBitmap.
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include "SkFlattenableSerialization.h"
|
||||
#include "SkLightingImageFilter.h"
|
||||
#include "SkMagnifierImageFilter.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkMatrixConvolutionImageFilter.h"
|
||||
#include "SkMergeImageFilter.h"
|
||||
#include "SkMorphologyImageFilter.h"
|
||||
@ -310,9 +309,9 @@ static SkImageFilter* make_image_filter(bool canBeNull = true) {
|
||||
filter = SkOffsetImageFilter::Create(make_scalar(), make_scalar(), make_image_filter());
|
||||
break;
|
||||
case MATRIX:
|
||||
filter = SkMatrixImageFilter::Create(make_matrix(),
|
||||
(SkFilterQuality)R(4),
|
||||
make_image_filter());
|
||||
filter = SkImageFilter::CreateMatrixFilter(make_matrix(),
|
||||
(SkFilterQuality)R(4),
|
||||
make_image_filter());
|
||||
break;
|
||||
case MATRIX_CONVOLUTION:
|
||||
{
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "SkChecksum.h"
|
||||
#include "SkDevice.h"
|
||||
#include "SkLazyPtr.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkReadBuffer.h"
|
||||
#include "SkWriteBuffer.h"
|
||||
#include "SkRect.h"
|
||||
@ -368,6 +369,12 @@ bool SkImageFilter::asFragmentProcessor(GrFragmentProcessor**, GrTexture*, const
|
||||
return false;
|
||||
}
|
||||
|
||||
SkImageFilter* SkImageFilter::CreateMatrixFilter(const SkMatrix& matrix,
|
||||
SkFilterQuality filterQuality,
|
||||
SkImageFilter* input) {
|
||||
return SkMatrixImageFilter::Create(matrix, filterQuality, input);
|
||||
}
|
||||
|
||||
#if SK_SUPPORT_GPU
|
||||
|
||||
void SkImageFilter::WrapTexture(GrTexture* texture, int width, int height, SkBitmap* result) {
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include "SkGradientShader.h"
|
||||
#include "SkLightingImageFilter.h"
|
||||
#include "SkMatrixConvolutionImageFilter.h"
|
||||
#include "SkMatrixImageFilter.h"
|
||||
#include "SkMergeImageFilter.h"
|
||||
#include "SkMorphologyImageFilter.h"
|
||||
#include "SkOffsetImageFilter.h"
|
||||
@ -470,7 +469,7 @@ DEF_TEST(ImageFilterDrawTiled, reporter) {
|
||||
{ "erode", SkErodeImageFilter::Create(2, 3) },
|
||||
{ "tile", SkTileImageFilter::Create(SkRect::MakeXYWH(0, 0, 50, 50),
|
||||
SkRect::MakeXYWH(0, 0, 100, 100), NULL) },
|
||||
{ "matrix", SkMatrixImageFilter::Create(matrix, kLow_SkFilterQuality) },
|
||||
{ "matrix", SkImageFilter::CreateMatrixFilter(matrix, kLow_SkFilterQuality) },
|
||||
{ "blur and offset", SkOffsetImageFilter::Create(five, five, blur.get()) },
|
||||
{ "picture and blur", SkBlurImageFilter::Create(five, five, pictureFilter.get()) },
|
||||
{ "rect shader and blur", SkBlurImageFilter::Create(five, five, rectShaderFilter.get()) },
|
||||
@ -533,7 +532,7 @@ static void draw_saveLayer_picture(int width, int height, int tileSize,
|
||||
|
||||
SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorWHITE, SkXfermode::kSrc_Mode));
|
||||
SkAutoTUnref<SkImageFilter> cfif(SkColorFilterImageFilter::Create(cf.get()));
|
||||
SkAutoTUnref<SkImageFilter> imageFilter(SkMatrixImageFilter::Create(matrix, kNone_SkFilterQuality, cfif.get()));
|
||||
SkAutoTUnref<SkImageFilter> imageFilter(SkImageFilter::CreateMatrixFilter(matrix, kNone_SkFilterQuality, cfif.get()));
|
||||
|
||||
SkPaint paint;
|
||||
paint.setImageFilter(imageFilter.get());
|
||||
@ -1076,7 +1075,7 @@ DEF_TEST(ImageFilterNestedSaveLayer, reporter) {
|
||||
matrix.setScale(SkIntToScalar(2), SkIntToScalar(2));
|
||||
matrix.postTranslate(SkIntToScalar(-20), SkIntToScalar(-20));
|
||||
SkAutoTUnref<SkImageFilter> matrixFilter(
|
||||
SkMatrixImageFilter::Create(matrix, kLow_SkFilterQuality));
|
||||
SkImageFilter::CreateMatrixFilter(matrix, kLow_SkFilterQuality));
|
||||
|
||||
// Test that saveLayer() with a filter nested inside another saveLayer() applies the
|
||||
// correct offset to the filter matrix.
|
||||
|
Loading…
Reference in New Issue
Block a user