blob: a8186e08c2b825c64927d665d39c13649bcd389c [file] [log] [blame]
reed@google.com32d25b62011-12-20 16:19:00 +00001#ifndef _SkTestImageFilters_h
2#define _SkTestImageFilters_h
3
4#include "SkImageFilter.h"
djsollen@google.comc73dd5c2012-08-07 15:54:32 +00005#include "SkPoint.h"
reed@google.com32d25b62011-12-20 16:19:00 +00006
reed@google.com32d25b62011-12-20 16:19:00 +00007// Fun mode that scales down (only) and then scales back up to look pixelated
tfarina@chromium.org6806fe82012-10-12 14:41:39 +00008class SK_API SkDownSampleImageFilter : public SkImageFilter {
reed@google.com32d25b62011-12-20 16:19:00 +00009public:
senorblanco9ea3d572014-07-08 09:16:22 -070010 static SkDownSampleImageFilter* Create(SkScalar scale, SkImageFilter* input = NULL) {
reed9fa60da2014-08-21 07:59:51 -070011 if (!SkScalarIsFinite(scale)) {
12 return NULL;
13 }
14 // we don't support scale in this range
15 if (scale > SK_Scalar1 || scale <= 0) {
16 return NULL;
17 }
senorblanco9ea3d572014-07-08 09:16:22 -070018 return SkNEW_ARGS(SkDownSampleImageFilter, (scale, input));
commit-bot@chromium.orgcac5fd52014-03-10 10:51:58 +000019 }
rmistry@google.comfbfcd562012-08-23 18:09:54 +000020
djsollen@google.comba28d032012-03-26 17:57:35 +000021 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDownSampleImageFilter)
rmistry@google.comfbfcd562012-08-23 18:09:54 +000022
reed@google.com32d25b62011-12-20 16:19:00 +000023protected:
senorblanco9ea3d572014-07-08 09:16:22 -070024 SkDownSampleImageFilter(SkScalar scale, SkImageFilter* input)
25 : INHERITED(1, &input), fScale(scale) {}
reed9fa60da2014-08-21 07:59:51 -070026#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
commit-bot@chromium.org8b0e8ac2014-01-30 18:58:24 +000027 SkDownSampleImageFilter(SkReadBuffer& buffer);
reed9fa60da2014-08-21 07:59:51 -070028#endif
commit-bot@chromium.org8b0e8ac2014-01-30 18:58:24 +000029 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000030
senorblanco@chromium.org4cb543d2014-03-14 15:44:01 +000031 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
commit-bot@chromium.orgae761f72014-02-05 22:32:02 +000032 SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000033
reed@google.com32d25b62011-12-20 16:19:00 +000034private:
35 SkScalar fScale;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000036
reed@google.com32d25b62011-12-20 16:19:00 +000037 typedef SkImageFilter INHERITED;
38};
39
40#endif