blob: 908f20b67a87f82a63af73ff5d8a114b26b34aba [file] [log] [blame]
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +00001/*
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#ifndef SkOffsetImageFilter_DEFINED
9#define SkOffsetImageFilter_DEFINED
10
senorblanco@chromium.org377c14a2013-02-04 22:57:21 +000011#include "SkImageFilter.h"
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000012#include "SkPoint.h"
13
senorblanco@chromium.org377c14a2013-02-04 22:57:21 +000014class SK_API SkOffsetImageFilter : public SkImageFilter {
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000015public:
reed5ea95df2015-10-06 14:05:32 -070016 static SkImageFilter* Create(SkScalar dx, SkScalar dy, SkImageFilter* input = NULL,
17 const CropRect* cropRect = NULL) {
reed9fa60da2014-08-21 07:59:51 -070018 if (!SkScalarIsFinite(dx) || !SkScalarIsFinite(dy)) {
19 return NULL;
20 }
halcanary385fe4d2015-08-26 13:07:48 -070021 return new SkOffsetImageFilter(dx, dy, input, cropRect);
commit-bot@chromium.orgcac5fd52014-03-10 10:51:58 +000022 }
reed5ea95df2015-10-06 14:05:32 -070023
senorblancoe5e79842016-03-21 14:51:59 -070024 SkRect computeFastBounds(const SkRect& src) const override;
reed5ea95df2015-10-06 14:05:32 -070025
robertphillipsf3f5bad2014-12-19 13:49:15 -080026 SK_TO_STRING_OVERRIDE()
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000027 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkOffsetImageFilter)
28
29protected:
mtklein36352bf2015-03-25 18:17:31 -070030 void flatten(SkWriteBuffer&) const override;
robertphillips2302de92016-03-24 07:26:32 -070031 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
32 SkIPoint* offset) const override;
senorblancoe5e79842016-03-21 14:51:59 -070033 SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix&, MapDirection) const override;
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000034
35private:
reed5ea95df2015-10-06 14:05:32 -070036 SkOffsetImageFilter(SkScalar dx, SkScalar dy, SkImageFilter* input, const CropRect*);
37
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000038 SkVector fOffset;
reed5ea95df2015-10-06 14:05:32 -070039
40 typedef SkImageFilter INHERITED;
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000041};
42
43#endif