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