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