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