• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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