blob: bbf19a91997a234da1f5d53e90183c6d05732aa3 [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
Cary Clark4dc5a452018-05-21 11:56:57 -040011#include "SkFlattenable.h"
senorblanco@chromium.org377c14a2013-02-04 22:57:21 +000012#include "SkImageFilter.h"
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000013#include "SkPoint.h"
14
senorblanco@chromium.org377c14a2013-02-04 22:57:21 +000015class SK_API SkOffsetImageFilter : public SkImageFilter {
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000016public:
robertphillips51a315e2016-03-31 09:05:49 -070017 static sk_sp<SkImageFilter> Make(SkScalar dx, SkScalar dy,
18 sk_sp<SkImageFilter> input,
robertphillips225db442016-04-17 14:27:05 -070019 const CropRect* cropRect = nullptr);
reed5ea95df2015-10-06 14:05:32 -070020
senorblancoe5e79842016-03-21 14:51:59 -070021 SkRect computeFastBounds(const SkRect& src) const override;
reed5ea95df2015-10-06 14:05:32 -070022
Cary Clark4dc5a452018-05-21 11:56:57 -040023 Factory getFactory() const override { return CreateProc; }
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000024
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;
Robert Phillips12078432018-05-17 11:17:39 -040030 SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix& ctm,
31 MapDirection, const SkIRect* inputRect) const override;
senorblanco@chromium.org9daf96a2012-11-06 20:29:39 +000032
33private:
robertphillips51a315e2016-03-31 09:05:49 -070034 SkOffsetImageFilter(SkScalar dx, SkScalar dy, sk_sp<SkImageFilter> input, const CropRect*);
Cary Clark4dc5a452018-05-21 11:56:57 -040035 static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
36 friend class SkFlattenable::PrivateInitializer;
reed5ea95df2015-10-06 14:05:32 -070037
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