Delete SkRectShaderImageFilter
This is no longer used (as of http://crrev.com/368929). BUG=skia:4780 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1575233004 Review URL: https://codereview.chromium.org/1575233004
This commit is contained in:
parent
7f9b2e4a45
commit
1554ec0689
@ -58,7 +58,6 @@
|
||||
'<(skia_src_path)/effects/SkPerlinNoiseShader.cpp',
|
||||
'<(skia_src_path)/effects/SkPictureImageFilter.cpp',
|
||||
'<(skia_src_path)/effects/SkPixelXorXfermode.cpp',
|
||||
'<(skia_src_path)/effects/SkRectShaderImageFilter.cpp',
|
||||
'<(skia_src_path)/effects/SkTableColorFilter.cpp',
|
||||
'<(skia_src_path)/effects/SkTableMaskFilter.cpp',
|
||||
'<(skia_src_path)/effects/SkTestImageFilters.cpp',
|
||||
@ -114,7 +113,6 @@
|
||||
'<(skia_include_path)/effects/SkPaintImageFilter.h',
|
||||
'<(skia_include_path)/effects/SkPerlinNoiseShader.h',
|
||||
'<(skia_include_path)/effects/SkPixelXorXfermode.h',
|
||||
'<(skia_include_path)/effects/SkRectShaderImageFilter.h',
|
||||
'<(skia_include_path)/effects/SkTableColorFilter.h',
|
||||
'<(skia_include_path)/effects/SkTableMaskFilter.h',
|
||||
'<(skia_include_path)/effects/SkTileImageFilter.h',
|
||||
|
@ -1,52 +0,0 @@
|
||||
/*
|
||||
* Copyright 2013 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkRectShaderImageFilter_DEFINED
|
||||
#define SkRectShaderImageFilter_DEFINED
|
||||
|
||||
#include "SkImageFilter.h"
|
||||
#include "SkRect.h"
|
||||
|
||||
class SkShader;
|
||||
|
||||
class SK_API SkRectShaderImageFilter : public SkImageFilter {
|
||||
public:
|
||||
/** Create a new image filter which fills the given rectangle with pixels
|
||||
* produced by the given SkShader. If no rectangle is specified, an output
|
||||
* is produced with the same bounds as the input primitive (even though
|
||||
* the input primitive's pixels are not used for processing).
|
||||
* @param s Shader to call for processing. Cannot be NULL. Will be
|
||||
* ref'ed by the new image filter.
|
||||
* @param rect Rectangle of output pixels in which to apply the shader.
|
||||
* If NULL or a given crop edge is not specified, the source
|
||||
* primitive's bounds are used instead.
|
||||
*/
|
||||
SK_ATTR_DEPRECATED("use Create(SkShader*, const CropRect*)")
|
||||
static SkImageFilter* Create(SkShader* s, const SkRect& rect);
|
||||
static SkImageFilter* Create(SkShader* s, const CropRect* rect = NULL);
|
||||
|
||||
bool canComputeFastBounds() const override;
|
||||
|
||||
SK_TO_STRING_OVERRIDE()
|
||||
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkRectShaderImageFilter)
|
||||
|
||||
protected:
|
||||
virtual ~SkRectShaderImageFilter();
|
||||
|
||||
void flatten(SkWriteBuffer&) const override;
|
||||
bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, SkBitmap* result,
|
||||
SkIPoint* loc) const override;
|
||||
|
||||
private:
|
||||
SkRectShaderImageFilter(SkShader* s, const CropRect* rect);
|
||||
|
||||
SkShader* fShader;
|
||||
|
||||
typedef SkImageFilter INHERITED;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright 2013 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#include "SkRectShaderImageFilter.h"
|
||||
#include "SkBitmap.h"
|
||||
#include "SkCanvas.h"
|
||||
#include "SkDevice.h"
|
||||
#include "SkReadBuffer.h"
|
||||
#include "SkWriteBuffer.h"
|
||||
#include "SkShader.h"
|
||||
|
||||
SkImageFilter* SkRectShaderImageFilter::Create(SkShader* s, const SkRect& rect) {
|
||||
SkASSERT(s);
|
||||
uint32_t flags = CropRect::kHasAll_CropEdge;
|
||||
if (rect.width() == 0 || rect.height() == 0) {
|
||||
flags = 0x0;
|
||||
}
|
||||
CropRect cropRect(rect, flags);
|
||||
return s ? new SkRectShaderImageFilter(s, &cropRect) : nullptr;
|
||||
}
|
||||
|
||||
SkImageFilter* SkRectShaderImageFilter::Create(SkShader* s, const CropRect* cropRect) {
|
||||
SkASSERT(s);
|
||||
return s ? new SkRectShaderImageFilter(s, cropRect) : nullptr;
|
||||
}
|
||||
|
||||
SkRectShaderImageFilter::SkRectShaderImageFilter(SkShader* s, const CropRect* cropRect)
|
||||
: INHERITED(0, nullptr, cropRect)
|
||||
, fShader(SkRef(s)) {
|
||||
}
|
||||
|
||||
SkFlattenable* SkRectShaderImageFilter::CreateProc(SkReadBuffer& buffer) {
|
||||
SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 0);
|
||||
SkAutoTUnref<SkShader> shader(buffer.readShader());
|
||||
return Create(shader.get(), &common.cropRect());
|
||||
}
|
||||
|
||||
void SkRectShaderImageFilter::flatten(SkWriteBuffer& buffer) const {
|
||||
this->INHERITED::flatten(buffer);
|
||||
buffer.writeFlattenable(fShader);
|
||||
}
|
||||
|
||||
SkRectShaderImageFilter::~SkRectShaderImageFilter() {
|
||||
fShader->unref();
|
||||
}
|
||||
|
||||
bool SkRectShaderImageFilter::onFilterImage(Proxy* proxy,
|
||||
const SkBitmap& source,
|
||||
const Context& ctx,
|
||||
SkBitmap* result,
|
||||
SkIPoint* offset) const {
|
||||
SkIRect bounds;
|
||||
if (!this->applyCropRect(ctx, source, SkIPoint::Make(0, 0), &bounds)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(bounds.width(),
|
||||
bounds.height()));
|
||||
if (nullptr == device.get()) {
|
||||
return false;
|
||||
}
|
||||
SkCanvas canvas(device.get());
|
||||
|
||||
SkPaint paint;
|
||||
SkMatrix matrix(ctx.ctm());
|
||||
matrix.postTranslate(SkIntToScalar(-bounds.left()), SkIntToScalar(-bounds.top()));
|
||||
SkSafeUnref(paint.setShader(fShader->newWithLocalMatrix(matrix)));
|
||||
|
||||
SkRect rect = SkRect::MakeWH(SkIntToScalar(bounds.width()), SkIntToScalar(bounds.height()));
|
||||
canvas.drawRect(rect, paint);
|
||||
|
||||
*result = device.get()->accessBitmap(false);
|
||||
offset->fX = bounds.fLeft;
|
||||
offset->fY = bounds.fTop;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SkRectShaderImageFilter::canComputeFastBounds() const {
|
||||
// http:skbug.com/4627: "make computeFastBounds and onFilterBounds() CropRect-aware"
|
||||
// computeFastBounds() doesn't currently take the crop rect into account,
|
||||
// so we can't compute it. If a full crop rect is set, we should return true here.
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifndef SK_IGNORE_TO_STRING
|
||||
void SkRectShaderImageFilter::toString(SkString* str) const {
|
||||
str->appendf("SkRectShaderImageFilter: (");
|
||||
str->append(")");
|
||||
}
|
||||
#endif
|
@ -59,7 +59,6 @@
|
||||
#include "SkPictureImageFilter.h"
|
||||
#include "SkPictureShader.h"
|
||||
#include "SkPixelXorXfermode.h"
|
||||
#include "SkRectShaderImageFilter.h"
|
||||
#include "SkTableColorFilter.h"
|
||||
#include "SkTestImageFilters.h"
|
||||
#include "SkTileImageFilter.h"
|
||||
@ -121,7 +120,6 @@ public:
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureImageFilter)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureShader)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPixelXorXfermode)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRectShaderImageFilter)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSumPathEffect)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTileImageFilter)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixImageFilter)
|
||||
|
@ -55,7 +55,6 @@
|
||||
#include "SkPictureImageFilter.h"
|
||||
#include "SkPictureShader.h"
|
||||
#include "SkPixelXorXfermode.h"
|
||||
#include "SkRectShaderImageFilter.h"
|
||||
#include "SkTableColorFilter.h"
|
||||
#include "SkTestImageFilters.h"
|
||||
#include "SkTileImageFilter.h"
|
||||
@ -100,7 +99,6 @@ public:
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureImageFilter)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureShader)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPixelXorXfermode)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRectShaderImageFilter)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSumPathEffect)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTileImageFilter)
|
||||
SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixImageFilter)
|
||||
|
@ -1,61 +0,0 @@
|
||||
/*
|
||||
* Copyright 2011 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#include "SkCanvas.h"
|
||||
#include "SkGradientShader.h"
|
||||
#include "SkRectShaderImageFilter.h"
|
||||
#include "SkShader.h"
|
||||
#include "Test.h"
|
||||
|
||||
DEF_TEST(ShaderImageFilter, reporter) {
|
||||
int w = 10, h = 10;
|
||||
SkRect r = SkRect::MakeWH(SkIntToScalar(w), SkIntToScalar(h)); // Make small 10x10 gradient
|
||||
|
||||
SkBitmap filterResult, shaderResult;
|
||||
|
||||
filterResult.allocN32Pixels(w, h);
|
||||
SkCanvas canvasFilter(filterResult);
|
||||
canvasFilter.clear(0x00000000);
|
||||
|
||||
shaderResult.allocN32Pixels(w, h);
|
||||
SkCanvas canvasShader(shaderResult);
|
||||
canvasShader.clear(0x00000000);
|
||||
|
||||
SkPoint center = SkPoint::Make(SkIntToScalar(5), SkIntToScalar(5));
|
||||
SkColor colors[] = {SK_ColorBLUE, SK_ColorRED, SK_ColorGREEN};
|
||||
SkScalar pos[] = {0, SK_ScalarHalf, SK_Scalar1};
|
||||
SkScalar radius = SkIntToScalar(5);
|
||||
|
||||
// Test using the image filter
|
||||
{
|
||||
SkShader* s = SkGradientShader::CreateRadial(
|
||||
center, radius, colors, pos, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode);
|
||||
SkPaint paint;
|
||||
SkImageFilter::CropRect cr(r);
|
||||
paint.setImageFilter(SkRectShaderImageFilter::Create(s, &cr))->unref();
|
||||
canvasFilter.drawRect(r, paint);
|
||||
s->unref();
|
||||
}
|
||||
|
||||
// Test using the shader directly
|
||||
{
|
||||
SkShader* s = SkGradientShader::CreateRadial(
|
||||
center, radius, colors, pos, SK_ARRAY_COUNT(colors), SkShader::kClamp_TileMode);
|
||||
SkPaint paint;
|
||||
paint.setShader(s)->unref();
|
||||
canvasShader.drawRect(r, paint);
|
||||
}
|
||||
|
||||
// Assert that both paths yielded the same result
|
||||
for (int y = 0; y < r.height(); ++y) {
|
||||
const SkPMColor* filterPtr = filterResult.getAddr32(0, y);
|
||||
const SkPMColor* shaderPtr = shaderResult.getAddr32(0, y);
|
||||
for (int x = 0; x < r.width(); ++x, ++filterPtr, ++shaderPtr) {
|
||||
REPORTER_ASSERT(reporter, *filterPtr == *shaderPtr);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user