• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 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 #include "core/interfaces/native/node/shape_modifier.h"
16 
17 #include "core/components_ng/pattern/shape/shape_model_ng.h"
18 
19 namespace OHOS::Ace::NG {
SetShapeViewPort(ArkUINodeHandle node,const ArkUI_Float32 * dimValues,const ArkUI_Int32 * dimUnits)20 void SetShapeViewPort(ArkUINodeHandle node, const ArkUI_Float32* dimValues, const ArkUI_Int32* dimUnits)
21 {
22     auto* frameNode = reinterpret_cast<FrameNode*>(node);
23     CHECK_NULL_VOID(frameNode);
24     CalcDimension dimLeft = CalcDimension(dimValues[0], (DimensionUnit)dimUnits[0]);
25     CalcDimension dimTop = CalcDimension(dimValues[1], (DimensionUnit)dimUnits[1]);
26     CalcDimension dimWidth = CalcDimension(dimValues[2], (DimensionUnit)dimUnits[2]);
27     CalcDimension dimHeight = CalcDimension(dimValues[3], (DimensionUnit)dimUnits[3]);
28     ShapeModelNG::SetViewPort(frameNode, dimLeft, dimTop, dimWidth, dimHeight);
29 }
30 
ResetShapeViewPort(ArkUINodeHandle node)31 void ResetShapeViewPort(ArkUINodeHandle node)
32 {
33     auto* frameNode = reinterpret_cast<FrameNode*>(node);
34     CHECK_NULL_VOID(frameNode);
35     CalcDimension dimLeft = CalcDimension(0.0, DimensionUnit::PX);
36     CalcDimension dimTop = CalcDimension(0.0, DimensionUnit::PX);
37     CalcDimension dimWidth = CalcDimension(0.0, DimensionUnit::PX);
38     CalcDimension dimHeight = CalcDimension(0.0, DimensionUnit::PX);
39     ShapeModelNG::SetViewPort(frameNode, dimLeft, dimTop, dimWidth, dimHeight);
40 }
41 
SetShapeMesh(ArkUINodeHandle node,const ArkUI_Float32 * mesh,ArkUI_Uint32 arrayItemCount,ArkUI_Int32 column,ArkUI_Int32 row)42 void SetShapeMesh(ArkUINodeHandle node, const ArkUI_Float32* mesh, ArkUI_Uint32 arrayItemCount,
43     ArkUI_Int32 column, ArkUI_Int32 row)
44 {
45     auto* frameNode = reinterpret_cast<FrameNode*>(node);
46     CHECK_NULL_VOID(frameNode);
47     std::vector<float> meshValues(mesh, mesh + arrayItemCount);
48     ShapeModelNG::SetBitmapMesh(frameNode, meshValues, column, row);
49 }
50 
ResetShapeMesh(ArkUINodeHandle node)51 void ResetShapeMesh(ArkUINodeHandle node)
52 {
53     auto* frameNode = reinterpret_cast<FrameNode*>(node);
54     CHECK_NULL_VOID(frameNode);
55     std::vector<float> meshValues;
56     int32_t column = 0;
57     int32_t row = 0;
58     ShapeModelNG::SetBitmapMesh(frameNode, meshValues, column, row);
59 }
60 
61 namespace NodeModifier {
GetShapeModifier()62 const ArkUIShapeModifier* GetShapeModifier()
63 {
64     CHECK_INITIALIZED_FIELDS_BEGIN(); // don't move this line
65     static const ArkUIShapeModifier modifier = {
66         .setShapeViewPort = SetShapeViewPort,
67         .resetShapeViewPort = ResetShapeViewPort,
68         .setShapeMesh = SetShapeMesh,
69         .resetShapeMesh = ResetShapeMesh,
70     };
71     CHECK_INITIALIZED_FIELDS_END(modifier, 0, 0, 0); // don't move this line
72     return &modifier;
73 }
74 
GetCJUIShapeModifier()75 const CJUIShapeModifier* GetCJUIShapeModifier()
76 {
77     CHECK_INITIALIZED_FIELDS_BEGIN(); // don't move this line
78     static const CJUIShapeModifier modifier = {
79         .setShapeViewPort = SetShapeViewPort,
80         .resetShapeViewPort = ResetShapeViewPort,
81         .setShapeMesh = SetShapeMesh,
82         .resetShapeMesh = ResetShapeMesh,
83     };
84     CHECK_INITIALIZED_FIELDS_END(modifier, 0, 0, 0); // don't move this line
85     return &modifier;
86 }
87 }
88 } // namespace OHOS::Ace::NG
89