SkMorphologyImageFilter.h revision f1369ce607adf55ffffe58fb93893bafb6ff6ebe
1/* 2 * Copyright 2012 The Android Open Source Project 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 9#ifndef SkMorphologyImageFilter_DEFINED 10#define SkMorphologyImageFilter_DEFINED 11 12#include "SkSingleInputImageFilter.h" 13 14class SK_API SkMorphologyImageFilter : public SkSingleInputImageFilter { 15public: 16 SkMorphologyImageFilter(int radiusX, int radiusY, SkImageFilter* input); 17 18protected: 19 SkMorphologyImageFilter(SkFlattenableReadBuffer& buffer); 20 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 21 virtual bool canFilterImageGPU() const SK_OVERRIDE { return true; } 22 23 SkISize radius() const { return fRadius; } 24 25private: 26 SkISize fRadius; 27 typedef SkSingleInputImageFilter INHERITED; 28}; 29 30class SK_API SkDilateImageFilter : public SkMorphologyImageFilter { 31public: 32 SkDilateImageFilter(int radiusX, int radiusY, SkImageFilter* input = NULL) 33 : INHERITED(radiusX, radiusY, input) {} 34 35 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, 36 SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; 37 virtual GrTexture* onFilterImageGPU(GrTexture* src, const SkRect& rect) SK_OVERRIDE; 38 39 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDilateImageFilter) 40 41protected: 42 SkDilateImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} 43 44private: 45 typedef SkMorphologyImageFilter INHERITED; 46}; 47 48class SK_API SkErodeImageFilter : public SkMorphologyImageFilter { 49public: 50 SkErodeImageFilter(int radiusX, int radiusY, SkImageFilter* input = NULL) 51 : INHERITED(radiusX, radiusY, input) {} 52 53 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, 54 SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; 55 virtual GrTexture* onFilterImageGPU(GrTexture* src, const SkRect& rect) SK_OVERRIDE; 56 57 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkErodeImageFilter) 58 59protected: 60 SkErodeImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {} 61 62private: 63 typedef SkMorphologyImageFilter INHERITED; 64}; 65 66#endif 67 68