1 /* 2 * Copyright (c) 2024 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 #ifndef IMAGE_FFI_H 16 #define IMAGE_FFI_H 17 18 #include "cj_ffi/cj_common_ffi.h" 19 #include "pixel_map.h" 20 #include "image_type.h" 21 #include "image_utils.h" 22 23 extern "C" { 24 struct CImageInfo { 25 int32_t height; 26 int32_t width; 27 int32_t density; 28 }; 29 30 struct CSourceOptions { 31 int32_t baseDensity; 32 int32_t pixelFormat; 33 int32_t height; 34 int32_t width; 35 }; 36 37 struct CInitializationOptions { 38 int32_t alphaType; 39 bool editable = false; 40 int32_t pixelFormat; 41 int32_t scaleMode; 42 int32_t width; 43 int32_t height; 44 }; 45 46 struct CDecodingOptions { 47 int32_t fitDensity; 48 CSize desiredSize; 49 CRegion desiredRegion; 50 float rotateDegrees; 51 uint32_t sampleSize; 52 int32_t desiredPixelFormat; 53 bool editable; 54 int64_t desiredColorSpace; 55 }; 56 57 struct CPackingOption { 58 const char* format; 59 uint8_t quality = 100; 60 uint64_t bufferSize = 10 * 1024 * 1024; 61 }; 62 63 // ImageSource 64 FFI_EXPORT int64_t FfiOHOSCreateImageSourceByPath(char* uri, uint32_t* errCode); 65 FFI_EXPORT int64_t FfiOHOSCreateImageSourceByPathWithOption(char* uri, CSourceOptions opts, uint32_t* errCode); 66 FFI_EXPORT int64_t FfiOHOSCreateImageSourceByFd(int fd, uint32_t* errCode); 67 FFI_EXPORT int64_t FfiOHOSCreateImageSourceByFdWithOption(int fd, CSourceOptions opts, uint32_t* errCode); 68 FFI_EXPORT int64_t FfiOHOSCreateImageSourceByBuffer(uint8_t *data, uint32_t size, uint32_t* errCode); 69 FFI_EXPORT int64_t FfiOHOSCreateImageSourceByRawFile(int fd, int32_t offset, 70 int32_t length, CSourceOptions opts, uint32_t* errCode); 71 FFI_EXPORT int64_t FfiOHOSCreateImageSourceByBufferWithOption(uint8_t *data, uint32_t size, CSourceOptions opts, 72 uint32_t* errCode); 73 FFI_EXPORT int64_t FfiOHOSCreateIncrementalSource(const uint8_t *data, uint32_t size, 74 CSourceOptions opts, uint32_t* errCode); 75 FFI_EXPORT CImageInfo FfiOHOSImageSourceGetImageInfo(int64_t id, uint32_t index, uint32_t* errCode); 76 FFI_EXPORT CArrString FfiOHOSGetSupportedFormats(int64_t id, uint32_t* errCode); 77 FFI_EXPORT char* FfiOHOSGetImageProperty(int64_t id, char* key, uint32_t index, char* defaultValue, 78 uint32_t* errCode); 79 FFI_EXPORT uint32_t FfiOHOSModifyImageProperty(int64_t id, char* key, char* value); 80 FFI_EXPORT RetDataUI32 FfiOHOSGetFrameCount(int64_t id); 81 FFI_EXPORT uint32_t FfiOHOSUpdateData(int64_t id, UpdateDataInfo info); 82 FFI_EXPORT uint32_t FfiOHOSRelease(int64_t id); 83 FFI_EXPORT RetDataI64U32 FfiOHOSImageSourceCreatePixelMap(int64_t id, uint32_t index, CDecodingOptions &opts); 84 FFI_EXPORT CArrI64 FfiOHOSImageSourceCreatePixelMapList(int64_t id, uint32_t index, CDecodingOptions opts, 85 uint32_t* errorCode); 86 FFI_EXPORT CArrI32 FfiOHOSImageSourceGetDelayTime(int64_t id, uint32_t* errorCode); 87 88 // PixelMap 89 FFI_EXPORT int64_t FfiOHOSCreatePixelMap(uint8_t *colors, uint32_t colorLength, CInitializationOptions opts); 90 FFI_EXPORT bool FfiOHOSGetIsEditable(int64_t id, uint32_t* errCode); 91 FFI_EXPORT bool FfiOHOSGetIsStrideAlignment(int64_t id, uint32_t* errCode); 92 FFI_EXPORT uint32_t FfiOHOSReadPixelsToBuffer(int64_t id, uint64_t bufferSize, uint8_t *dst); 93 FFI_EXPORT uint32_t FfiOHOSWriteBufferToPixels(int64_t id, uint8_t *source, uint64_t bufferSize); 94 FFI_EXPORT int32_t FfiOHOSGetDensity(int64_t id, uint32_t* errCode); 95 FFI_EXPORT uint32_t FfiOHOSOpacity(int64_t id, float percent); 96 FFI_EXPORT uint32_t FfiOHOSCrop(int64_t id, CRegion rect); 97 FFI_EXPORT uint32_t FfiOHOSGetPixelBytesNumber(int64_t id, uint32_t* errCode); 98 FFI_EXPORT uint32_t FfiOHOSGetBytesNumberPerRow(int64_t id, uint32_t* errCode); 99 FFI_EXPORT CImageInfo FfiOHOSGetImageInfo(int64_t id, uint32_t* errCode); 100 FFI_EXPORT uint32_t FfiOHOSScale(int64_t id, float xAxis, float yAxis); 101 FFI_EXPORT uint32_t FfiOHOSFlip(int64_t id, bool xAxis, bool yAxis); 102 FFI_EXPORT uint32_t FfiOHOSRotate(int64_t id, float degrees); 103 FFI_EXPORT uint32_t FfiOHOSTranslate(int64_t id, float xAxis, float yAxis); 104 FFI_EXPORT uint32_t FfiOHOSReadPixels(int64_t id, CPositionArea area); 105 FFI_EXPORT uint32_t FfiOHOSWritePixels(int64_t id, CPositionArea area); 106 FFI_EXPORT int64_t FfiOHOSCreateAlphaPixelMap(int64_t id, uint32_t* errCode); 107 FFI_EXPORT uint32_t FfiOHOSPixelMapRelease(int64_t id); 108 FFI_EXPORT uint32_t FfiOHOSPixelMapSetColorSpace(int64_t id, int64_t colorSpaceId); 109 FFI_EXPORT int64_t FfiOHOSPixelMapGetColorSpace(int64_t id, int32_t* errCode); 110 FFI_EXPORT uint32_t FfiOHOSPixelMapApplyColorSpace(int64_t id, int64_t colorSpaceId); 111 112 // Image 113 FFI_EXPORT uint32_t FfiOHOSImageGetClipRect(int64_t id, CRegion *retVal); 114 FFI_EXPORT uint32_t FfiOHOSImageGetSize(int64_t id, CSize *retVal); 115 FFI_EXPORT uint32_t FfiOHOSImageGetFormat(int64_t id, int32_t *retVal); 116 FFI_EXPORT uint32_t FfiOHOSGetComponent(int64_t id, int32_t componentType, CRetComponent *ptr); 117 FFI_EXPORT void FfiOHOSImageRelease(int64_t id); 118 119 // ImageReceiver 120 FFI_EXPORT uint32_t FfiOHOSReceiverGetSize(int64_t id, CSize *retVal); 121 FFI_EXPORT uint32_t FfiOHOSReceiverGetCapacity(int64_t id, int32_t *retVal); 122 FFI_EXPORT uint32_t FfiOHOSReceiverGetFormat(int64_t id, int32_t *retVal); 123 FFI_EXPORT int64_t FfiOHOSCreateImageReceiver(int32_t width, int32_t height, int32_t format, int32_t capacity); 124 FFI_EXPORT char* FfiOHOSGetReceivingSurfaceId(int64_t id); 125 FFI_EXPORT int64_t FfiOHOSReadNextImage(int64_t id); 126 FFI_EXPORT int64_t FfiOHOSReadLatestImage(int64_t id); 127 FFI_EXPORT void FfiOHOSReceiverRelease(int64_t id); 128 129 // ImagePacker 130 FFI_EXPORT int64_t FFiOHOSImagePackerConstructor(); 131 FFI_EXPORT uint64_t FfiOHOSGetPackOptionSize(); 132 FFI_EXPORT RetDataCArrUI8 FfiOHOSImagePackerPackingPixelMap(int64_t id, int64_t source, CPackingOption option); 133 FFI_EXPORT RetDataCArrUI8 FfiOHOSImagePackerPackingImageSource(int64_t id, int64_t source, 134 CPackingOption option); 135 FFI_EXPORT RetDataCArrString FfiOHOSImagePackerGetSupportedFormats(int64_t id); 136 FFI_EXPORT uint32_t FfiOHOSImagePackerPackPixelMapToFile(int64_t id, int64_t source, int fd, 137 CPackingOption option); 138 FFI_EXPORT uint32_t FfiOHOSImagePackerImageSourcePackToFile(int64_t id, int64_t source, int fd, 139 CPackingOption option); 140 FFI_EXPORT void FFiOHOSImagePackerRelease(int64_t id); 141 142 // ImageCreator 143 FFI_EXPORT int64_t FFiOHOSImageCreatorConstructor(int32_t width, int32_t height, int32_t format, int32_t capacity); 144 FFI_EXPORT RetDataI32 FFiOHOSImageCreatorGetCapacity(int64_t id); 145 FFI_EXPORT RetDataI32 FFiOHOSImageCreatorGetformat(int64_t id); 146 FFI_EXPORT int64_t FFiOHOSImageCreatorDequeueImage(int64_t id, uint32_t* errCode); 147 FFI_EXPORT void FFiOHOSImageCreatorQueueImage(int64_t id, int64_t imageId); 148 FFI_EXPORT void FFiOHOSImageCreatorOn(int64_t id); 149 FFI_EXPORT void FFiOHOSImageCreatorRelease(int64_t id); 150 } 151 152 #endif