1 /*
2 * Copyright (c) 2025 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 "CanvasPenTest.h"
16 #include <native_drawing/drawing_brush.h>
17 #include <native_drawing/drawing_filter.h>
18 #include <native_drawing/drawing_shadow_layer.h>
19 #include <native_drawing/drawing_shader_effect.h>
20 #include <native_drawing/drawing_canvas.h>
21 #include <native_drawing/drawing_pixel_map.h>
22 #include <native_drawing/drawing_point.h>
23 #include <native_drawing/drawing_record_cmd.h>
24 #include <native_drawing/drawing_rect.h>
25 #include <native_drawing/drawing_region.h>
26 #include <native_drawing/drawing_register_font.h>
27 #include <native_drawing/drawing_canvas.h>
28 #include <native_drawing/drawing_pen.h>
29 #include <native_drawing/drawing_path.h>
30 #include <native_drawing/drawing_pixel_map.h>
31 #include <native_drawing/drawing_types.h>
32 #include <native_drawing/drawing_font.h>
33 #include <native_color_space_manager/native_color_space_manager.h>
34 #include <multimedia/image_framework/image/pixelmap_native.h>
35
addCanvasPenTest(std::vector<napi_property_descriptor> & descData)36 void addCanvasPenTest(std::vector<napi_property_descriptor>& descData)
37 {
38 descData.push_back({"canvasDrawPixelMapRectConstraintFail", nullptr,
39 OH_Drawing_CanvasDrawPixelMapRectConstraintFail, nullptr, nullptr, nullptr, napi_default, nullptr});
40 descData.push_back({"canvasDrawPointSuccess", nullptr, OH_Drawing_CanvasDrawPointSuccess,
41 nullptr, nullptr, nullptr, napi_default, nullptr});
42 descData.push_back({"canvasDrawPointFail", nullptr, OH_Drawing_CanvasDrawPointFail,
43 nullptr, nullptr, nullptr, napi_default, nullptr});
44 descData.push_back({"canvasDrawColorSuccess", nullptr, OH_Drawing_CanvasDrawColorSuccess,
45 nullptr, nullptr, nullptr, napi_default, nullptr});
46 descData.push_back({"canvasDrawColorFail", nullptr, OH_Drawing_CanvasDrawColorFail,
47 nullptr, nullptr, nullptr, napi_default, nullptr});
48 descData.push_back({"canvasDrawSingleCharacterSuccess", nullptr, OH_Drawing_CanvasDrawSingleCharacterSuccess,
49 nullptr, nullptr, nullptr, napi_default, nullptr});
50 descData.push_back({"canvasDrawSingleCharacterFail", nullptr, OH_Drawing_CanvasDrawSingleCharacterFail,
51 nullptr, nullptr, nullptr, napi_default, nullptr});
52 descData.push_back({"canvasDrawSingleCharacterWithFeaturesSuccess", nullptr,
53 OH_Drawing_CanvasDrawSingleCharacterWithFeaturesSuccess, nullptr, nullptr, nullptr, napi_default, nullptr});
54 descData.push_back({"canvasDrawSingleCharacterWithFeaturesFail", nullptr,
55 OH_Drawing_CanvasDrawSingleCharacterWithFeaturesFail, nullptr, nullptr, nullptr, napi_default, nullptr});
56 descData.push_back({"canvasClipRegionSuccess", nullptr, OH_Drawing_CanvasClipRegionSuccess,
57 nullptr, nullptr, nullptr, napi_default, nullptr});
58 descData.push_back({"canvasClipRegionFail", nullptr, OH_Drawing_CanvasClipRegionFail,
59 nullptr, nullptr, nullptr, napi_default, nullptr});
60 descData.push_back({"canvasIsClipEmptySuccess", nullptr, OH_Drawing_CanvasIsClipEmptySuccess,
61 nullptr, nullptr, nullptr, napi_default, nullptr});
62 descData.push_back({"canvasIsClipEmptyFail", nullptr, OH_Drawing_CanvasIsClipEmptyFail,
63 nullptr, nullptr, nullptr, napi_default, nullptr});
64 descData.push_back({"canvasGetImageInfoSuccess", nullptr, OH_Drawing_CanvasGetImageInfoSuccess,
65 nullptr, nullptr, nullptr, napi_default, nullptr});
66 descData.push_back({"canvasGetImageInfoFail", nullptr, OH_Drawing_CanvasGetImageInfoFail,
67 nullptr, nullptr, nullptr, napi_default, nullptr});
68 descData.push_back({"penGetAlphaFloatSucccess", nullptr, OH_Drawing_PenGetAlphaFloatSucccess,
69 nullptr, nullptr, nullptr, napi_default, nullptr});
70 descData.push_back({"penGetRedFloatSucccess", nullptr, OH_Drawing_PenGetRedFloatSucccess,
71 nullptr, nullptr, nullptr, napi_default, nullptr});
72 descData.push_back({"penGetGreenFloatSucccess", nullptr, OH_Drawing_PenGetGreenFloatSucccess,
73 nullptr, nullptr, nullptr, napi_default, nullptr});
74 descData.push_back({"penGetBlueFloatSuccess", nullptr, OH_Drawing_PenGetBlueFloatSuccess,
75 nullptr, nullptr, nullptr, napi_default, nullptr});
76 }
OH_Drawing_CanvasDrawPixelMapRectConstraintFail(napi_env env,napi_callback_info info)77 napi_value OH_Drawing_CanvasDrawPixelMapRectConstraintFail(napi_env env, napi_callback_info info)
78 {
79 napi_value result;
80 OH_Drawing_Canvas* canvas = nullptr;
81 OH_PixelmapNative* pixelmapNative = nullptr;
82 OH_PixelmapNative *pixelMapNative = nullptr;
83 uint8_t data = 10;
84 size_t dataLength = 1;
85 OH_Pixelmap_InitializationOptions *options;
86 OH_PixelmapInitializationOptions_Create(&options);
87 OH_PixelmapNative_CreatePixelmap(&data, dataLength, options, &pixelMapNative);
88 OH_Drawing_PixelMap *pixelMap = OH_Drawing_PixelMapGetFromOhPixelMapNative(pixelmapNative);
89 float left = 10;
90 float top = 10;
91 float right = 10;
92 float bottom = 10;
93 OH_Drawing_Rect* src = OH_Drawing_RectCreate(left, top, right, bottom);
94 OH_Drawing_Rect* dst = OH_Drawing_RectCreate(left, top, right, bottom);
95 OH_Drawing_SamplingOptions* samplingOptions = OH_Drawing_SamplingOptionsCreate(FILTER_MODE_NEAREST,
96 MIPMAP_MODE_NEAREST);
97 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasDrawPixelMapRectConstraint(canvas, pixelMap, src, dst,
98 samplingOptions, STRICT_SRC_RECT_CONSTRAINT);
99 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
100 return result;
101 }
102
OH_Drawing_CanvasDrawPointSuccess(napi_env env,napi_callback_info info)103 napi_value OH_Drawing_CanvasDrawPointSuccess(napi_env env, napi_callback_info info)
104 {
105 napi_value result;
106
107 OH_Drawing_PointMode* pm = new OH_Drawing_PointMode;
108 OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate();
109 OH_Drawing_Point2D* point = new OH_Drawing_Point2D;
110 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasDrawPoint(canvas, point);
111 napi_create_int32(env, errorCode == OH_DRAWING_SUCCESS, &result);
112 return result;
113 }
114
OH_Drawing_CanvasDrawPointFail(napi_env env,napi_callback_info info)115 napi_value OH_Drawing_CanvasDrawPointFail(napi_env env, napi_callback_info info)
116 {
117 napi_value result;
118
119 OH_Drawing_PointMode* pm = new OH_Drawing_PointMode;
120 OH_Drawing_Canvas* canvas = nullptr;
121 OH_Drawing_Point2D* point = new OH_Drawing_Point2D;
122 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasDrawPoint(canvas, point);
123 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
124 return result;
125 }
126
OH_Drawing_CanvasDrawColorSuccess(napi_env env,napi_callback_info info)127 napi_value OH_Drawing_CanvasDrawColorSuccess(napi_env env, napi_callback_info info)
128 {
129 napi_value result;
130 OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate();
131 uint32_t color = 100;
132 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasDrawColor(canvas, color, BLEND_MODE_CLEAR);
133 napi_create_int32(env, errorCode == OH_DRAWING_SUCCESS, &result);
134 return result;
135 }
136
OH_Drawing_CanvasDrawColorFail(napi_env env,napi_callback_info info)137 napi_value OH_Drawing_CanvasDrawColorFail(napi_env env, napi_callback_info info)
138 {
139 napi_value result;
140 uint32_t color = 100;
141 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasDrawColor(nullptr, color, BLEND_MODE_CLEAR);
142 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
143 return result;
144 }
145
OH_Drawing_CanvasDrawSingleCharacterSuccess(napi_env env,napi_callback_info info)146 napi_value OH_Drawing_CanvasDrawSingleCharacterSuccess(napi_env env, napi_callback_info info)
147 {
148 napi_value result;
149 float x = 10;
150 float y = 10;
151 OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate();
152 OH_Drawing_Font* font = OH_Drawing_FontCreate();
153 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasDrawSingleCharacter(canvas, "test", font, x, y);
154 napi_create_int32(env, errorCode == OH_DRAWING_SUCCESS, &result);
155 return result;
156 }
157
OH_Drawing_CanvasDrawSingleCharacterFail(napi_env env,napi_callback_info info)158 napi_value OH_Drawing_CanvasDrawSingleCharacterFail(napi_env env, napi_callback_info info)
159 {
160 napi_value result;
161 float x = 10;
162 float y = 10;
163 OH_Drawing_Font* font = OH_Drawing_FontCreate();
164 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasDrawSingleCharacter(nullptr, "test", font, x, y);
165 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
166 return result;
167 }
168
OH_Drawing_CanvasDrawSingleCharacterWithFeaturesSuccess(napi_env env,napi_callback_info info)169 napi_value OH_Drawing_CanvasDrawSingleCharacterWithFeaturesSuccess(napi_env env, napi_callback_info info)
170 {
171 napi_value result;
172 float x = 10;
173 float y = 10;
174 OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate();
175 OH_Drawing_Font* font = OH_Drawing_FontCreate();
176 OH_Drawing_FontFeatures* fontFeatures = OH_Drawing_FontFeaturesCreate();
177 OH_Drawing_ErrorCode errorCode = OH_DRAWING_SUCCESS;
178 errorCode = OH_Drawing_CanvasDrawSingleCharacterWithFeatures(canvas, "test", font, x, y, fontFeatures);
179 napi_create_int32(env, errorCode == OH_DRAWING_SUCCESS, &result);
180 return result;
181 }
182
OH_Drawing_CanvasDrawSingleCharacterWithFeaturesFail(napi_env env,napi_callback_info info)183 napi_value OH_Drawing_CanvasDrawSingleCharacterWithFeaturesFail(napi_env env, napi_callback_info info)
184 {
185 napi_value result;
186 float x = 10;
187 float y = 10;
188 OH_Drawing_Canvas* canvas = nullptr;
189 OH_Drawing_Font* font = OH_Drawing_FontCreate();
190 OH_Drawing_FontFeatures* fontFeatures = OH_Drawing_FontFeaturesCreate();
191 OH_Drawing_ErrorCode errorCode = OH_DRAWING_SUCCESS;
192 errorCode = OH_Drawing_CanvasDrawSingleCharacterWithFeatures(canvas, "test", font, x, y, fontFeatures);
193 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
194 return result;
195 }
196
OH_Drawing_CanvasClipRegionSuccess(napi_env env,napi_callback_info info)197 napi_value OH_Drawing_CanvasClipRegionSuccess(napi_env env, napi_callback_info info)
198 {
199 napi_value result;
200 float x = 10;
201 float y = 10;
202 OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate();
203 OH_Drawing_Region* region = OH_Drawing_RegionCreate();
204 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasClipRegion(canvas, region, DIFFERENCE);
205 napi_create_int32(env, errorCode == OH_DRAWING_SUCCESS, &result);
206 return result;
207 }
208
OH_Drawing_CanvasClipRegionFail(napi_env env,napi_callback_info info)209 napi_value OH_Drawing_CanvasClipRegionFail(napi_env env, napi_callback_info info)
210 {
211 napi_value result;
212 float x = 10;
213 float y = 10;
214 OH_Drawing_Canvas* canvas = nullptr;
215 OH_Drawing_Region* region = OH_Drawing_RegionCreate();
216 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasClipRegion(canvas, region, DIFFERENCE);
217 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
218 return result;
219 }
220
OH_Drawing_CanvasIsClipEmptySuccess(napi_env env,napi_callback_info info)221 napi_value OH_Drawing_CanvasIsClipEmptySuccess(napi_env env, napi_callback_info info)
222 {
223 napi_value result;
224 OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate();
225 bool isClipEmpty = true;
226 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasIsClipEmpty(canvas, &isClipEmpty);
227 napi_create_int32(env, errorCode == OH_DRAWING_SUCCESS, &result);
228 return result;
229 }
230
OH_Drawing_CanvasIsClipEmptyFail(napi_env env,napi_callback_info info)231 napi_value OH_Drawing_CanvasIsClipEmptyFail(napi_env env, napi_callback_info info)
232 {
233 napi_value result;
234 OH_Drawing_Canvas* canvas = nullptr;
235 bool isClipEmpty = true;
236 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasIsClipEmpty(canvas, &isClipEmpty);
237 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
238 return result;
239 }
240
OH_Drawing_CanvasGetImageInfoSuccess(napi_env env,napi_callback_info info)241 napi_value OH_Drawing_CanvasGetImageInfoSuccess(napi_env env, napi_callback_info info)
242 {
243 napi_value result;
244 OH_Drawing_Canvas* canvas = OH_Drawing_CanvasCreate();
245 OH_Drawing_Image_Info* pinfo = new OH_Drawing_Image_Info;
246 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasGetImageInfo(canvas, pinfo);
247 napi_create_int32(env, errorCode == OH_DRAWING_SUCCESS, &result);
248 return result;
249 }
250
OH_Drawing_CanvasGetImageInfoFail(napi_env env,napi_callback_info info)251 napi_value OH_Drawing_CanvasGetImageInfoFail(napi_env env, napi_callback_info info)
252 {
253 napi_value result;
254 OH_Drawing_ErrorCode errorCode = OH_Drawing_CanvasGetImageInfo(nullptr, nullptr);
255 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
256 return result;
257 }
258
OH_Drawing_PenGetAlphaFloatSucccess(napi_env env,napi_callback_info info)259 napi_value OH_Drawing_PenGetAlphaFloatSucccess(napi_env env, napi_callback_info info)
260 {
261 napi_value result;
262 OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
263 float a = 10;
264 float r = 11;
265 float g = 12;
266 float b = 13;
267 ColorSpaceName colorSpaceName;
268 OH_NativeColorSpaceManager* colorSpaceManager = OH_NativeColorSpaceManager_CreateFromName(ADOBE_RGB);
269 OH_Drawing_PenSetColor4f(pen, a, b, r, g, colorSpaceManager);
270 float resa = 0;
271 OH_Drawing_ErrorCode errorCode = OH_Drawing_PenGetAlphaFloat(nullptr, &resa);
272 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
273 return result;
274 }
275
OH_Drawing_PenGetRedFloatSucccess(napi_env env,napi_callback_info info)276 napi_value OH_Drawing_PenGetRedFloatSucccess(napi_env env, napi_callback_info info)
277 {
278 napi_value result;
279 OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
280 float a = 10.0f;
281 float r = 11.0f;
282 float g = 12.0f;
283 float b = 13.0f;
284 ColorSpaceName colorSpaceName;
285 OH_NativeColorSpaceManager* colorSpaceManager = OH_NativeColorSpaceManager_CreateFromName(ADOBE_RGB);
286 OH_Drawing_ErrorCode errorCode = OH_Drawing_PenSetColor4f(pen, a, b, r, g, colorSpaceManager);
287 float resr = 0.0f;
288 errorCode = OH_Drawing_PenGetRedFloat(nullptr, &resr);
289 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
290 return result;
291 }
292
OH_Drawing_PenGetGreenFloatSucccess(napi_env env,napi_callback_info info)293 napi_value OH_Drawing_PenGetGreenFloatSucccess(napi_env env, napi_callback_info info)
294 {
295 napi_value result;
296 OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
297 float a = 10;
298 float r = 11;
299 float g = 12;
300 float b = 13;
301 ColorSpaceName colorSpaceName;
302 OH_NativeColorSpaceManager* colorSpaceManager = OH_NativeColorSpaceManager_CreateFromName(ADOBE_RGB);
303 OH_Drawing_PenSetColor4f(pen, a, b, r, g, colorSpaceManager);
304 float resg = 0;
305 OH_Drawing_ErrorCode errorCode = OH_Drawing_PenGetGreenFloat(nullptr, &resg);
306 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
307 return result;
308 }
309
OH_Drawing_PenGetBlueFloatSuccess(napi_env env,napi_callback_info info)310 napi_value OH_Drawing_PenGetBlueFloatSuccess(napi_env env, napi_callback_info info)
311 {
312 napi_value result;
313 OH_Drawing_Pen* pen = OH_Drawing_PenCreate();
314 float a = 10;
315 float r = 11;
316 float g = 12;
317 float b = 13;
318 ColorSpaceName colorSpaceName;
319 OH_NativeColorSpaceManager* colorSpaceManager = OH_NativeColorSpaceManager_CreateFromName(ADOBE_RGB);
320 OH_Drawing_PenSetColor4f(pen, a, b, r, g, colorSpaceManager);
321 float resb = 0;
322 OH_Drawing_ErrorCode errorCode = OH_Drawing_PenGetBlueFloat(nullptr, &resb);
323 napi_create_int32(env, errorCode == OH_DRAWING_ERROR_INVALID_PARAMETER, &result);
324 return result;
325 }