blob: 8f8382782520e59f7e6d5ceb5e25ca1bd96f221b [file] [log] [blame]
senorblanco@chromium.org44888c62012-08-20 19:23:24 +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 SkColorFilterImageFilter_DEFINED
9#define SkColorFilterImageFilter_DEFINED
10
senorblanco@chromium.org377c14a2013-02-04 22:57:21 +000011#include "SkImageFilter.h"
Mike Reed846bb412018-06-19 17:49:42 -040012#include "SkColorFilter.h"
senorblanco@chromium.org44888c62012-08-20 19:23:24 +000013
senorblanco@chromium.org377c14a2013-02-04 22:57:21 +000014class SK_API SkColorFilterImageFilter : public SkImageFilter {
senorblanco@chromium.org44888c62012-08-20 19:23:24 +000015public:
robertphillips5605b562016-04-05 11:50:42 -070016 static sk_sp<SkImageFilter> Make(sk_sp<SkColorFilter> cf,
17 sk_sp<SkImageFilter> input,
Ben Wagnera93a14a2017-08-28 10:34:05 -040018 const CropRect* cropRect = nullptr);
senorblanco@chromium.org44888c62012-08-20 19:23:24 +000019
Cary Clark4dc5a452018-05-21 11:56:57 -040020 Factory getFactory() const override { return CreateProc; }
rmistry@google.comfbfcd562012-08-23 18:09:54 +000021
senorblanco@chromium.org44888c62012-08-20 19:23:24 +000022protected:
mtklein36352bf2015-03-25 18:17:31 -070023 void flatten(SkWriteBuffer&) const override;
robertphillips718a5ad2016-04-19 10:21:02 -070024 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
25 SkIPoint* offset) const override;
Matt Sarett6d72ed92017-04-10 16:35:33 -040026 sk_sp<SkImageFilter> onMakeColorSpace(SkColorSpaceXformer*) const override;
mtklein36352bf2015-03-25 18:17:31 -070027 bool onIsColorFilterNode(SkColorFilter**) const override;
reed96a04f32016-04-25 09:25:15 -070028 bool onCanHandleComplexCTM() const override { return true; }
senorblanco6db0a7b2016-04-01 16:41:10 -070029 bool affectsTransparentBlack() const override;
senorblanco@chromium.org8d21f6c2012-10-12 19:14:06 +000030
senorblanco@chromium.org44888c62012-08-20 19:23:24 +000031private:
robertphillips5605b562016-04-05 11:50:42 -070032 SkColorFilterImageFilter(sk_sp<SkColorFilter> cf,
33 sk_sp<SkImageFilter> input,
senorblanco24e06d52015-03-18 12:11:33 -070034 const CropRect* cropRect);
Cary Clark4dc5a452018-05-21 11:56:57 -040035 static sk_sp<SkFlattenable> CreateProc(SkReadBuffer&);
36 friend class SkFlattenable::PrivateInitializer;
reedf0280032015-10-12 11:10:10 -070037
reedd053ce92016-03-22 10:17:23 -070038 sk_sp<SkColorFilter> fColorFilter;
rmistry@google.comfbfcd562012-08-23 18:09:54 +000039
senorblanco@chromium.org377c14a2013-02-04 22:57:21 +000040 typedef SkImageFilter INHERITED;
senorblanco@chromium.org44888c62012-08-20 19:23:24 +000041};
42
43#endif