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