blob: 5d1f70397b5660f4a063828332dbc292af68c275 [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:
robertphillips51a315e2016-03-31 09:05:49 -070016 static sk_sp<SkImageFilter> Make(SkScalar dx, SkScalar dy,
17 sk_sp<SkImageFilter> input,
robertphillips225db442016-04-17 14:27:05 -070018 const CropRect* cropRect = nullptr);
reed5ea95df2015-10-06 14:05:32 -070019
senorblancoe5e79842016-03-21 14:51:59 -070020 SkRect computeFastBounds(const SkRect& src) const override;
reed5ea95df2015-10-06 14:05:32 -070021
robertphillipsf3f5bad2014-12-19 13:49:15 -080022 SK_TO_STRING_OVERRIDE()
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000023 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkOffsetImageFilter)
24
25protected:
mtklein36352bf2015-03-25 18:17:31 -070026 void flatten(SkWriteBuffer&) const override;
robertphillips2302de92016-03-24 07:26:32 -070027 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
28 SkIPoint* offset) const override;
Matt Sarett6d72ed92017-04-10 16:35:33 -040029 sk_sp<SkImageFilter> onMakeColorSpace(SkColorSpaceXformer*) const override;
senorblancoe5e79842016-03-21 14:51:59 -070030 SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix&, MapDirection) const override;
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000031
32private:
robertphillips51a315e2016-03-31 09:05:49 -070033 SkOffsetImageFilter(SkScalar dx, SkScalar dy, sk_sp<SkImageFilter> input, const CropRect*);
reed5ea95df2015-10-06 14:05:32 -070034
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000035 SkVector fOffset;
reed5ea95df2015-10-06 14:05:32 -070036
37 typedef SkImageFilter INHERITED;
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000038};
39
40#endif