• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 /**
17  * @addtogroup image
18  * @{
19  *
20  * @brief Provides APIs for obtaining pixel map data and information.
21  *
22  * @Syscap SystemCapability.Multimedia.Image
23  * @since 10
24  * @version 1.0
25  */
26 
27 /**
28  * @file image_pixel_map_mdk.h
29  *
30  * @brief Declares the APIs that can lock, access, and unlock a pixel map.
31  * Need link <b>libpixelmapndk.z.so</b>
32  *
33  * @since 10
34  * @version 1.0
35  */
36 
37 #ifndef INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_PIXEL_MAP_MDK_H_
38 #define INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_PIXEL_MAP_MDK_H_
39 #include <stdint.h>
40 #include "napi/native_api.h"
41 #include "image_mdk_common.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 /**
48  * @brief Defines the native pixel map information.
49  * @since 10
50  * @version 1.0
51  */
52 struct NativePixelMap_;
53 
54 /**
55  * @brief Defines the data type name of the native pixel map.
56  * @since 10
57  * @version 1.0
58  */
59 typedef struct NativePixelMap_ NativePixelMap;
60 
61 /**
62  * @brief Defines the pixel map information.
63  *
64  * @since 10
65  * @version 1.0
66  */
67 typedef struct OhosPixelMapInfos {
68     /** Image width, in pixels. */
69     uint32_t width;
70     /** Image height, in pixels. */
71     uint32_t height;
72     /** Number of bytes per row. */
73     uint32_t rowSize;
74     /** Pixel format. */
75     int32_t pixelFormat;
76 } OhosPixelMapInfos;
77 
78 /**
79  * @brief Enumerates the pixel map alpha types.
80  *
81  * @since 10
82  * @version 1.0
83  */
84 enum {
85     /**
86      * Unknown format.
87      */
88     OHOS_PIXEL_MAP_ALPHA_TYPE_UNKNOWN = 0,
89     /**
90      * Opaque format.
91      */
92     OHOS_PIXEL_MAP_ALPHA_TYPE_OPAQUE = 1,
93     /**
94      * Premultiplied format.
95      */
96     OHOS_PIXEL_MAP_ALPHA_TYPE_PREMUL = 2,
97     /**
98      * Unpremultiplied format.
99      */
100     OHOS_PIXEL_MAP_ALPHA_TYPE_UNPREMUL = 3
101 };
102 
103 /**
104  * @brief Enumerates the pixel map editing types.
105  *
106  * @since 10
107  * @version 1.0
108  */
109 enum {
110     /**
111      * Read-only.
112      */
113     OHOS_PIXEL_MAP_READ_ONLY = 0,
114     /**
115      * Editable.
116      */
117     OHOS_PIXEL_MAP_EDITABLE = 1,
118 };
119 
120 /**
121  * @brief Defines the options used for creating a pixel map.
122  *
123  * @since 10
124  * @version 1.0
125  */
126 struct OhosPixelMapCreateOps {
127     /** Image width, in pixels. */
128     uint32_t width;
129     /** Image height, in pixels. */
130     uint32_t height;
131     /** Image format. */
132     int32_t pixelFormat;
133     /** Editing type of the image. */
134     uint32_t editable;
135     /** Alpha type of the image. */
136     uint32_t alphaType;
137     /** Scale mode of the image. */
138     uint32_t scaleMode;
139 };
140 
141 /**
142  * @brief Creates a <b>PixelMap</b> object.
143  *
144  * @param env Indicates the NAPI environment pointer.
145  * @param info Indicates the options for setting the <b>PixelMap</b> object.
146  * @param buf Indicates the pointer to the buffer of the image.
147  * @param len Indicates the image size.
148  * @param res Indicates the pointer to the <b>PixelMap</b> object at the application layer.
149  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
150  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
151  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
152  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
153  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
154  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
155  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_HEAD_ABNORMAL - if image decode head error.
156  * returns {@link IRNdkErrCode} IMAGE_RESULT_CREATE_DECODER_FAILED - if create decoder failed.
157  * returns {@link IRNdkErrCode} IMAGE_RESULT_CREATE_ENCODER_FAILED - if create encoder failed.
158  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
159  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
160  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
161  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
162  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
163  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_ABNORMAL - if image decode error.
164  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
165  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
166  * returns {@link IRNdkErrCode} IMAGE_RESULT_INIT_ABNORMAL - if image input data error.
167  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
168  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
169  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
170  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
171  * returns {@link IRNdkErrCode} IMAGE_RESULT_ENCODE_FAILED - if image add pixel map fail.
172  * returns {@link IRNdkErrCode} IMAGE_RESULT_HW_DECODE_UNSUPPORT - if image hardware decode unsupported.
173  * returns {@link IRNdkErrCode} IMAGE_RESULT_HW_DECODE_FAILED - if hard decode failed.
174  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_IPC - if ipc error.
175  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
176  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
177  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
178  * @see CreatePixelMap
179  * @since 10
180  * @version 1.0
181  */
182 int32_t OH_PixelMap_CreatePixelMap(napi_env env, OhosPixelMapCreateOps info,
183     void* buf, size_t len, napi_value* res);
184 
185 /**
186  * @brief Creates a <b>PixelMap</b> object that contains only alpha channel information.
187  *
188  * @param env Indicates the NAPI environment pointer.
189  * @param source Indicates the options for setting the <b>PixelMap</b> object.
190  * @param alpha Indicates the pointer to the alpha channel.
191  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
192  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
193  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
194  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
195  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
196  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
197  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_HEAD_ABNORMAL - if image decode head error.
198  * returns {@link IRNdkErrCode} IMAGE_RESULT_CREATE_DECODER_FAILED - if create decoder failed.
199  * returns {@link IRNdkErrCode} IMAGE_RESULT_CREATE_ENCODER_FAILED - if create encoder failed.
200  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
201  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
202  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
203  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
204  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
205  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_ABNORMAL - if image decode error.
206  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
207  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
208  * returns {@link IRNdkErrCode} IMAGE_RESULT_INIT_ABNORMAL - if image input data error.
209  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
210  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
211  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
212  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
213  * returns {@link IRNdkErrCode} IMAGE_RESULT_ENCODE_FAILED - if image add pixel map fail.
214  * returns {@link IRNdkErrCode} IMAGE_RESULT_HW_DECODE_UNSUPPORT - if image hardware decode unsupported.
215  * returns {@link IRNdkErrCode} IMAGE_RESULT_HW_DECODE_FAILED - if hard decode failed.
216  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_IPC - if ipc error.
217  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
218  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
219  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
220  * @see CreateAlphaPixelMap
221  * @since 10
222  * @version 1.0
223  */
224 int32_t OH_PixelMap_CreateAlphaPixelMap(napi_env env, napi_value source, napi_value* alpha);
225 
226 /**
227  * @brief Initializes a <b>PixelMap</b> object.
228  *
229  * @param env Indicates the NAPI environment pointer.
230  * @param source Indicates the options for setting the <b>PixelMap</b> object.
231  * @return Returns a pointer to the <b>NativePixelMap</b> object
232  * if the operation is successful; returns nullptr otherwise.
233  * @see InitNativePixelMap
234  * @since 10
235  * @version 1.0
236  */
237 NativePixelMap* OH_PixelMap_InitNativePixelMap(napi_env env, napi_value source);
238 
239 /**
240  * @brief Obtains the number of bytes per row of a <b>PixelMap</b> object.
241  *
242  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
243  * @param num Indicates the pointer to the number of bytes per row of the <b>PixelMap</b> object.
244  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
245  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
246  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
247  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
248  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
249  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
250  * @see GetBytesNumberPerRow
251  * @since 10
252  * @version 1.0
253  */
254 int32_t OH_PixelMap_GetBytesNumberPerRow(const NativePixelMap* native, int32_t* num);
255 
256 /**
257  * @brief Checks whether a <b>PixelMap</b> object is editable.
258  *
259  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
260  * @param editable Indicates the pointer to the editing type of the <b>PixelMap</b> object.
261  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
262  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
263  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
264  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
265  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
266  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
267  * @see GetIsEditable
268  * @since 10
269  * @version 1.0
270  */
271 int32_t OH_PixelMap_GetIsEditable(const NativePixelMap* native, int32_t* editable);
272 
273 /**
274  * @brief Checks whether a <b>PixelMap</b> object supports alpha channels.
275  *
276  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
277  * @param alpha Indicates the pointer to the support for alpha channels.
278  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
279  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
280  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
281  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
282  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
283  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
284  * @see IsSupportAlpha
285  * @since 10
286  * @version 1.0
287  */
288 int32_t OH_PixelMap_IsSupportAlpha(const NativePixelMap* native, int32_t* alpha);
289 
290 /**
291  * @brief Sets an alpha channel for a <b>PixelMap</b> object.
292  *
293  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
294  * @param alpha Indicates the alpha channel to set.
295  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
296  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
297  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
298  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
299  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
300  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
301  * @see SetAlphaAble
302  * @since 10
303  * @version 1.0
304  */
305 int32_t OH_PixelMap_SetAlphaAble(const NativePixelMap* native, int32_t alpha);
306 
307 /**
308  * @brief Obtains the pixel density of a <b>PixelMap</b> object.
309  *
310  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
311  * @param density Indicates the pointer to the pixel density.
312  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
313  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
314  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
315  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
316  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
317  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
318  * @see GetDensity
319  * @since 10
320  * @version 1.0
321  */
322 int32_t OH_PixelMap_GetDensity(const NativePixelMap* native, int32_t* density);
323 
324 /**
325  * @brief Sets the pixel density for a <b>PixelMap</b> object.
326  *
327  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
328  * @param density Indicates the pixel density to set.
329  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
330  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
331  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
332  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
333  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
334  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
335  * @see GetDensity
336  * @since 10
337  * @version 1.0
338  */
339 int32_t OH_PixelMap_SetDensity(const NativePixelMap* native, int32_t density);
340 
341 /**
342  * @brief Sets the opacity for a <b>PixelMap</b> object.
343  *
344  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
345  * @param opacity Indicates the opacity to set.
346  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
347  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
348  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
349  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
350  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
351  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
352  * @see SetOpacity
353  * @since 10
354  * @version 1.0
355  */
356 int32_t OH_PixelMap_SetOpacity(const NativePixelMap* native, float opacity);
357 
358 /**
359  * @brief Scales a <b>PixelMap</b> object.
360  *
361  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
362  * @param x Indicates the scaling ratio of the width.
363  * @param y Indicates the scaling ratio of the height.
364  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
365  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
366  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
367  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
368  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
369  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
370  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
371  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
372  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
373  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
374  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
375  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
376  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
377  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
378  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
379  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
380  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
381  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
382  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
383  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
384  * @see Scale
385  * @since 10
386  * @version 1.0
387  */
388 int32_t OH_PixelMap_Scale(const NativePixelMap* native, float x, float y);
389 
390 /**
391  * @brief Translates a <b>PixelMap</b> object.
392  *
393  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
394  * @param x Indicates the horizontal distance to translate.
395  * @param y Indicates the vertical distance to translate.
396  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
397  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
398  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
399  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
400  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
401  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
402  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
403  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
404  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
405  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
406  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
407  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
408  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
409  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
410  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
411  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
412  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
413  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
414  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
415  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
416  * @see Translate
417  * @since 10
418  * @version 1.0
419  */
420 int32_t OH_PixelMap_Translate(const NativePixelMap* native, float x, float y);
421 
422 /**
423  * @brief Rotates a <b>PixelMap</b> object.
424  *
425  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
426  * @param angle Indicates the angle to rotate.
427  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
428  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
429  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
430  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
431  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
432  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
433  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
434  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
435  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
436  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
437  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
438  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
439  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
440  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
441  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
442  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
443  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
444  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
445  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
446  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
447  * @see Rotate
448  * @since 10
449  * @version 1.0
450  */
451 int32_t OH_PixelMap_Rotate(const NativePixelMap* native, float angle);
452 
453 /**
454  * @brief Flips a <b>PixelMap</b> object.
455  *
456  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
457  * @param x Specifies whether to flip around the x axis.
458  * @param y Specifies whether to flip around the y axis.
459  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
460  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
461  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
462  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
463  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
464  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
465  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
466  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
467  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
468  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
469  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
470  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
471  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
472  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
473  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
474  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
475  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
476  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
477  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
478  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
479  * @see Flip
480  * @since 10
481  * @version 1.0
482  */
483 int32_t OH_PixelMap_Flip(const NativePixelMap* native, int32_t x, int32_t y);
484 
485 /**
486  * @brief Crops a <b>PixelMap</b> object.
487  *
488  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
489  * @param x Indicates the x-coordinate of the upper left corner of the target image.
490  * @param y Indicates the y-coordinate of the upper left corner of the target image.
491  * @param width Indicates the width of the cropped region.
492  * @param height Indicates the height of the cropped region.
493  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
494  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
495  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
496  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
497  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
498  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
499  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
500  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
501  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
502  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
503  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
504  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
505  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
506  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
507  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
508  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
509  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
510  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
511  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
512  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
513  * @see Crop
514  * @since 10
515  * @version 1.0
516  */
517 int32_t OH_PixelMap_Crop(const NativePixelMap* native, int32_t x, int32_t y, int32_t width, int32_t height);
518 
519 /**
520  * @brief Obtains the image information of a <b>PixelMap</b> object.
521  *
522  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
523  * @param info Indicates the pointer to the image information.
524  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
525  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
526  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
527  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
528  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
529  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
530  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
531  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
532  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
533  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
534  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
535  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
536  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
537  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
538  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
539  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
540  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
541  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
542  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
543  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
544  * @see OhosPixelMapInfos
545  * @since 10
546  * @version 2.0
547  */
548 int32_t OH_PixelMap_GetImageInfo(const NativePixelMap* native, OhosPixelMapInfos *info);
549 
550 /**
551  * @brief Obtains the memory address of a <b>NativePixelMap</b> object and locks the memory.
552  *
553  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
554  * @param addr Indicates the double pointer to the memory address.
555  * @see UnAccessPixels
556  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
557  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
558  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
559  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
560  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
561  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
562  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
563  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
564  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
565  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
566  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
567  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
568  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
569  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
570  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
571  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
572  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
573  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
574  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
575  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
576  * @since 10
577  * @version 2.0
578  */
579 int32_t OH_PixelMap_AccessPixels(const NativePixelMap* native, void** addr);
580 
581 /**
582  * @brief Unlocks the memory of the <b>NativePixelMap</b> object data.
583  * This function is used with {@link OH_PixelMap_AccessPixels} in pairs.
584  *
585  * @param native Indicates the pointer to a <b>NativePixelMap</b> object.
586  * @return Returns {@link IRNdkErrCode} IMAGE_RESULT_SUCCESS - if the operation is successful.
587  * returns {@link IRNdkErrCode} IMAGE_RESULT_BAD_PARAMETER - if bad parameter.
588  * returns {@link IRNdkErrCode} IMAGE_RESULT_JNI_ENV_ABNORMAL - if Abnormal JNI environment.
589  * returns {@link IRNdkErrCode} IMAGE_RESULT_INVALID_PARAMETER - if invalid parameter.
590  * returns {@link IRNdkErrCode} IMAGE_RESULT_GET_DATA_ABNORMAL - if image get data error.
591  * returns {@link IRNdkErrCode} IMAGE_RESULT_DECODE_FAILED - if decode fail.
592  * returns {@link IRNdkErrCode} IMAGE_RESULT_CHECK_FORMAT_ERROR - if check format failed.
593  * returns {@link IRNdkErrCode} IMAGE_RESULT_THIRDPART_SKIA_ERROR - if skia error.
594  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_ABNORMAL - if image input data error.
595  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_NOT_EXIST - if sharememory error.
596  * returns {@link IRNdkErrCode} IMAGE_RESULT_ERR_SHAMEM_DATA_ABNORMAL - if sharememory data abnormal.
597  * returns {@link IRNdkErrCode} IMAGE_RESULT_MALLOC_ABNORMAL - if image malloc error.
598  * returns {@link IRNdkErrCode} IMAGE_RESULT_DATA_UNSUPPORT - if image init error.
599  * returns {@link IRNdkErrCode} IMAGE_RESULT_CROP - if crop error.
600  * returns {@link IRNdkErrCode} IMAGE_RESULT_UNKNOWN_FORMAT - if image unknown format.
601  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_REGISTER_FAILED - if register plugin fail.
602  * returns {@link IRNdkErrCode} IMAGE_RESULT_PLUGIN_CREATE_FAILED - if create plugin fail.
603  * returns {@link IRNdkErrCode} IMAGE_RESULT_INDEX_INVALID - if invalid index.
604  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALPHA_TYPE_ERROR - if hard decode failed.
605  * returns {@link IRNdkErrCode} IMAGE_RESULT_ALLOCATER_TYPE_ERROR - if hard decode failed.
606  * @see AccessPixels
607  * @since 10
608  * @version 2.0
609  */
610 int32_t OH_PixelMap_UnAccessPixels(const NativePixelMap* native);
611 
612 #ifdef __cplusplus
613 };
614 #endif
615 /** @} */
616 
617 #endif // INTERFACES_KITS_NATIVE_INCLUDE_IMAGE_PIXEL_MAP_NAPI_H_
618