1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <effect/filter.h>
17 
18 namespace OHOS {
19 namespace Rosen {
20 namespace Drawing {
Filter()21 Filter::Filter() noexcept
22     : colorFilter_(nullptr), imageFilter_(nullptr), maskFilter_(nullptr), filterQuality_(FilterQuality::NONE)
23 {}
24 
SetColorFilter(std::shared_ptr<ColorFilter> colorFilter)25 void Filter::SetColorFilter(std::shared_ptr<ColorFilter> colorFilter)
26 {
27     colorFilter_ = colorFilter;
28 }
29 
GetColorFilter() const30 std::shared_ptr<ColorFilter> Filter::GetColorFilter() const
31 {
32     return colorFilter_;
33 }
34 
GetColorFilterPtr() const35 const ColorFilter* Filter::GetColorFilterPtr() const
36 {
37     return colorFilter_.get();
38 }
39 
SetImageFilter(std::shared_ptr<ImageFilter> imageFilter)40 void Filter::SetImageFilter(std::shared_ptr<ImageFilter> imageFilter)
41 {
42     imageFilter_ = imageFilter;
43 }
44 
GetImageFilter() const45 std::shared_ptr<ImageFilter> Filter::GetImageFilter() const
46 {
47     return imageFilter_;
48 }
49 
GetImageFilterPtr() const50 const ImageFilter* Filter::GetImageFilterPtr() const
51 {
52     return imageFilter_.get();
53 }
54 
SetMaskFilter(std::shared_ptr<MaskFilter> maskFilter)55 void Filter::SetMaskFilter(std::shared_ptr<MaskFilter> maskFilter)
56 {
57     maskFilter_ = maskFilter;
58 }
59 
GetMaskFilter() const60 std::shared_ptr<MaskFilter> Filter::GetMaskFilter() const
61 {
62     return maskFilter_;
63 }
64 
GetMaskFilterPtr() const65 const MaskFilter* Filter::GetMaskFilterPtr() const
66 {
67     return maskFilter_.get();
68 }
69 
SetFilterQuality(FilterQuality filterQuality)70 void Filter::SetFilterQuality(FilterQuality filterQuality)
71 {
72     filterQuality_ = filterQuality;
73 }
74 
GetFilterQuality() const75 Filter::FilterQuality Filter::GetFilterQuality() const
76 {
77     return filterQuality_;
78 }
79 
Reset()80 void Filter::Reset()
81 {
82     colorFilter_ = nullptr;
83     imageFilter_ = nullptr;
84     maskFilter_ = nullptr;
85     filterQuality_ = FilterQuality::NONE;
86 }
87 
operator ==(const Filter & f1,const Filter & f2)88 bool operator==(const Filter& f1, const Filter& f2)
89 {
90     return f1.colorFilter_ == f2.colorFilter_ && f1.imageFilter_ == f2.imageFilter_ &&
91         f1.maskFilter_ == f2.maskFilter_ && f1.filterQuality_ == f2.filterQuality_;
92 }
93 
operator !=(const Filter & f1,const Filter & f2)94 bool operator!=(const Filter& f1, const Filter& f2)
95 {
96     return f1.colorFilter_ != f2.colorFilter_ || f1.imageFilter_ != f2.imageFilter_ ||
97         f1.maskFilter_ != f2.maskFilter_ || f1.filterQuality_ != f2.filterQuality_;
98 }
99 
Dump(std::string & out) const100 void Filter::Dump(std::string& out) const
101 {
102     out += '[';
103     if (colorFilter_ != nullptr) {
104         out += "colorFilter:" + std::to_string(static_cast<int>(colorFilter_->GetType())) + " ";
105     }
106     if (imageFilter_ != nullptr) {
107         out += "imageFilter:" + std::to_string(static_cast<int>(imageFilter_->GetType())) + " ";
108     }
109     if (maskFilter_ != nullptr) {
110         out += "maskFilter:" + std::to_string(static_cast<int>(maskFilter_->GetType())) + " ";
111     }
112     out += "filterQuality:" + std::to_string(static_cast<int>(filterQuality_));
113     out += ']';
114 }
115 } // namespace Drawing
116 } // namespace Rosen
117 } // namespace OHOS