SkMorphologyImageFilter.h revision 7b320703d47ff2b242ae74faba5e4b0af3560d71
1710632d07b13609444626367bebd34c0af3acb6aMikhail Glushenkov/*
26091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer * Copyright 2012 The Android Open Source Project
36091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer *
46091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer * Use of this source code is governed by a BSD-style license that can be
57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner * found in the LICENSE file.
67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner */
76091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer
86091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer
927107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#ifndef SkMorphologyImageFilter_DEFINED
1027107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#define SkMorphologyImageFilter_DEFINED
1127107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling
1227107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#include "SkImageFilter.h"
1327107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#include "SkSize.h"
146091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer
156091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencerclass SK_API SkMorphologyImageFilter : public SkImageFilter {
16674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszakpublic:
17674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak    SkMorphologyImageFilter(int radiusX, int radiusY, SkImageFilter* input);
186091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer
19d509d0b532ec2358b3f341d4a4cd1411cb8b5db2Chris Lattnerprotected:
203467e30edf63b6d8a8d446186674ba9e4b7885a9Bill Wendling    SkMorphologyImageFilter(SkFlattenableReadBuffer& buffer);
21c835b8c30127d15599de2d614434d39a6cc3ae17Benjamin Kramer    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
223f213e7b3a6829a154d4e8ceb7d8689b389bd5dcBenjamin Kramer#if SK_SUPPORT_GPU
2322bd64173981bf1251c4b3bfc684207340534ba3Bill Wendling    virtual bool canFilterImageGPU() const SK_OVERRIDE { return true; }
24ea59f896a672c2e1ef9f02277bce60257aa60989Bill Wendling#endif
2558d74910c6b82e622ecbb57d6644d48fec5a5c0fChris Lattner
266091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer    SkISize    radius() const { return fRadius; }
276091ebd172a16a10f1ea66061a5fa7cbf5139e56Reid Spencer
28d426a642a23a234547cbc7061f5bfec157673249Bill Wendlingprivate:
29702cc91aa1bd41540e8674921ae7ac89a4ff061fBill Wendling    SkISize    fRadius;
30f6670729aabc1fab85238d2b306a1c1767a807bbBill Wendling    typedef SkImageFilter INHERITED;
31817abdd8b055059e5930a15704b9f52da4236456Bill Wendling};
32817abdd8b055059e5930a15704b9f52da4236456Bill Wendling
336dc3781d44e56f0addf28b06232a50f3f9e6b1afBill Wendlingclass SK_API SkDilateImageFilter : public SkMorphologyImageFilter {
34c835b8c30127d15599de2d614434d39a6cc3ae17Benjamin Kramerpublic:
352c79ecbd704c656178ffa43d5a58ebe3ca188b40Bill Wendling    SkDilateImageFilter(int radiusX, int radiusY, SkImageFilter* input = NULL)
36ad9a9e15595bc9d5ba1ed752caf8572957f77a3dDuncan Sands    : INHERITED(radiusX, radiusY, input) {}
37ad9a9e15595bc9d5ba1ed752caf8572957f77a3dDuncan Sands
381d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling    virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&,
3927107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling                               SkBitmap* result, SkIPoint* offset) SK_OVERRIDE;
4027107f6ab4627fa38bcacad6757ed6d52910f880Bill Wendling#if SK_SUPPORT_GPU
411d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling    virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, SkBitmap* result,
421d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling                                SkIPoint* offset) SK_OVERRIDE;
431d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling#endif
44034b94b17006f51722886b0f2283fb6fb19aca1fBill Wendling
456765834754cbb3cb0f15b4b15e98c5e73fa50066Bill Wendling    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDilateImageFilter)
461d3dcfe4246b4d45fa78a8dfd0a11c7fff842c15Bill Wendling
4773dee180c836270644dfa7d90f9c5ba877567999Bill Wendlingprotected:
48f3d1500ab2c7364d3d0fb73a7e1b8c6339ab48b1Bill Wendling    SkDilateImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {}
4973dee180c836270644dfa7d90f9c5ba877567999Bill Wendling
5073dee180c836270644dfa7d90f9c5ba877567999Bill Wendlingprivate:
5173dee180c836270644dfa7d90f9c5ba877567999Bill Wendling    typedef SkMorphologyImageFilter INHERITED;
52f3d1500ab2c7364d3d0fb73a7e1b8c6339ab48b1Bill Wendling};
5373dee180c836270644dfa7d90f9c5ba877567999Bill Wendling
5411d00420e42ba88c3b48cab997965a7be79315e2Bill Wendlingclass SK_API SkErodeImageFilter : public SkMorphologyImageFilter {
5511d00420e42ba88c3b48cab997965a7be79315e2Bill Wendlingpublic:
56f3d1500ab2c7364d3d0fb73a7e1b8c6339ab48b1Bill Wendling    SkErodeImageFilter(int radiusX, int radiusY, SkImageFilter* input = NULL)
5711d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling    : INHERITED(radiusX, radiusY, input) {}
5811d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling
5911d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling    virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&,
6011d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling                               SkBitmap* result, SkIPoint* offset) SK_OVERRIDE;
6111d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling#if SK_SUPPORT_GPU
6211d00420e42ba88c3b48cab997965a7be79315e2Bill Wendling    virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, SkBitmap* result,
63629fb82419d9bfff6ae475363bcce66192dfcc8eBill Wendling                                SkIPoint* offset) SK_OVERRIDE;
645a0eeb5a9d727940b1dbe8dff6e9aa292ada0f6aBill Wendling#endif
65480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling
66480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkErodeImageFilter)
676765834754cbb3cb0f15b4b15e98c5e73fa50066Bill Wendling
68f6670729aabc1fab85238d2b306a1c1767a807bbBill Wendlingprotected:
69480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling    SkErodeImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {}
70480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling
71480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendlingprivate:
72480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling    typedef SkMorphologyImageFilter INHERITED;
739a419f656e278b96e9dfe739cd63c7bff9a4e1fdQuentin Colombet};
74480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling
75480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling#endif
76480b1b28ea6fc1bb5c78d99472df624cfd3fce47Bill Wendling