SkTestImageFilters.h revision c2e8cef4792b478547973d312b26fff4aab7c729
1#ifndef _SkTestImageFilters_h 2#define _SkTestImageFilters_h 3 4#include "SkImageFilter.h" 5#include "SkPoint.h" 6 7class SK_API SkOffsetImageFilter : public SkImageFilter { 8public: 9 SkOffsetImageFilter(SkScalar dx, SkScalar dy) : INHERITED(0) { 10 fOffset.set(dx, dy); 11 } 12 13 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkOffsetImageFilter) 14 15protected: 16 SkOffsetImageFilter(SkFlattenableReadBuffer& buffer); 17 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 18 19 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, 20 SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; 21 virtual bool onFilterBounds(const SkIRect&, const SkMatrix&, SkIRect*) SK_OVERRIDE; 22 23private: 24 SkVector fOffset; 25 26 typedef SkImageFilter INHERITED; 27}; 28 29class SK_API SkComposeImageFilter : public SkImageFilter { 30public: 31 SkComposeImageFilter(SkImageFilter* outer, SkImageFilter* inner) : INHERITED(outer, inner) {} 32 virtual ~SkComposeImageFilter(); 33 34 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeImageFilter) 35 36protected: 37 SkComposeImageFilter(SkFlattenableReadBuffer& buffer); 38 39 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, 40 SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; 41 virtual bool onFilterBounds(const SkIRect&, const SkMatrix&, SkIRect*) SK_OVERRIDE; 42 43private: 44 typedef SkImageFilter INHERITED; 45}; 46 47#include "SkXfermode.h" 48 49class SK_API SkMergeImageFilter : public SkImageFilter { 50public: 51 SkMergeImageFilter(SkImageFilter* first, SkImageFilter* second, 52 SkXfermode::Mode = SkXfermode::kSrcOver_Mode); 53 SkMergeImageFilter(SkImageFilter* filters[], int count, 54 const SkXfermode::Mode modes[] = NULL); 55 virtual ~SkMergeImageFilter(); 56 57 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMergeImageFilter) 58 59protected: 60 SkMergeImageFilter(SkFlattenableReadBuffer& buffer); 61 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 62 63 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, 64 SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; 65 virtual bool onFilterBounds(const SkIRect&, const SkMatrix&, SkIRect*) SK_OVERRIDE; 66 67private: 68 uint8_t* fModes; // SkXfermode::Mode 69 int fCount; 70 71 // private storage, to avoid dynamically allocating storage for our copy 72 // of the filters and modes (unless fCount is so large we can't fit). 73 intptr_t fStorage[16]; 74 75 void initAllocModes(); 76 void initModes(const SkXfermode::Mode []); 77 78 typedef SkImageFilter INHERITED; 79}; 80 81/////////////////////////////////////////////////////////////////////////////// 82 83// Fun mode that scales down (only) and then scales back up to look pixelated 84class SK_API SkDownSampleImageFilter : public SkImageFilter { 85public: 86 SkDownSampleImageFilter(SkScalar scale) : INHERITED(0), fScale(scale) {} 87 88 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter) 89 90protected: 91 SkDownSampleImageFilter(SkFlattenableReadBuffer& buffer); 92 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 93 94 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&, 95 SkBitmap* result, SkIPoint* loc) SK_OVERRIDE; 96 97private: 98 SkScalar fScale; 99 100 typedef SkImageFilter INHERITED; 101}; 102 103#endif 104