1 /*
2 * Copyright (c) 2023 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 "c/drawing_filter.h"
17
18 #include "effect/filter.h"
19
20 using namespace OHOS;
21 using namespace Rosen;
22 using namespace Drawing;
23
CastToFilter(OH_Drawing_Filter * cFilter)24 static Filter* CastToFilter(OH_Drawing_Filter* cFilter)
25 {
26 return reinterpret_cast<Filter*>(cFilter);
27 }
28
CastToMaskFilter(OH_Drawing_MaskFilter * cMaskFilter)29 static MaskFilter* CastToMaskFilter(OH_Drawing_MaskFilter* cMaskFilter)
30 {
31 return reinterpret_cast<MaskFilter*>(cMaskFilter);
32 }
33
CastToColorFilter(OH_Drawing_ColorFilter * cColorFilter)34 static ColorFilter* CastToColorFilter(OH_Drawing_ColorFilter* cColorFilter)
35 {
36 return reinterpret_cast<ColorFilter*>(cColorFilter);
37 }
38
OH_Drawing_FilterCreate()39 OH_Drawing_Filter* OH_Drawing_FilterCreate()
40 {
41 return (OH_Drawing_Filter*)new Filter();
42 }
43
OH_Drawing_FilterSetMaskFilter(OH_Drawing_Filter * cFliter,OH_Drawing_MaskFilter * cMaskFilter)44 void OH_Drawing_FilterSetMaskFilter(OH_Drawing_Filter* cFliter, OH_Drawing_MaskFilter* cMaskFilter)
45 {
46 Filter* filter = CastToFilter(cFliter);
47 if (filter == nullptr) {
48 return;
49 }
50 filter->SetMaskFilter(std::shared_ptr<MaskFilter>{CastToMaskFilter(cMaskFilter), [](auto p) {}});
51 }
52
OH_Drawing_FilterSetColorFilter(OH_Drawing_Filter * cFliter,OH_Drawing_ColorFilter * cColorFilter)53 void OH_Drawing_FilterSetColorFilter(OH_Drawing_Filter* cFliter, OH_Drawing_ColorFilter* cColorFilter)
54 {
55 Filter* filter = CastToFilter(cFliter);
56 if (filter == nullptr) {
57 return;
58 }
59 filter->SetColorFilter(std::shared_ptr<ColorFilter>{CastToColorFilter(cColorFilter), [](auto p) {}});
60 }
61
OH_Drawing_FilterDestroy(OH_Drawing_Filter * cFilter)62 void OH_Drawing_FilterDestroy(OH_Drawing_Filter* cFilter)
63 {
64 delete CastToFilter(cFilter);
65 }
66