SkMorphologyImageFilter.h revision 54924243c1b65b3ee6d8fa064b50a9b1bb2a19a5
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2012 The Android Open Source Project 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SkMorphologyImageFilter_DEFINED 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SkMorphologyImageFilter_DEFINED 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "SkImageFilter.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SK_API SkMorphologyImageFilter : public SkImageFilter { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public: 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkMorphologyImageFilter(int radiusX, int radiusY); 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)protected: 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkMorphologyImageFilter(SkFlattenableReadBuffer& buffer); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkISize radius() const { return fRadius; } 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)private: 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkISize fRadius; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef SkImageFilter INHERITED; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SK_API SkDilateImageFilter : public SkMorphologyImageFilter { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public: 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkDilateImageFilter(int radiusX, int radiusY) : INHERITED(radiusX, radiusY) {} 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool asADilate(SkISize* radius) const SK_OVERRIDE; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDilateImageFilter) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)protected: 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkDilateImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)private: 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef SkMorphologyImageFilter INHERITED; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SK_API SkErodeImageFilter : public SkMorphologyImageFilter { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public: 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkErodeImageFilter(int radiusX, int radiusY) : INHERITED(radiusX, radiusY) {} 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool asAnErode(SkISize* radius) const SK_OVERRIDE; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkErodeImageFilter) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protected: 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkErodeImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)private: 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef SkMorphologyImageFilter INHERITED; 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)