• 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 #include "image_pixel_map_mdk.h"
17 
18 #include "common_utils.h"
19 #include "image_pixel_map_napi_kits.h"
20 
21 using namespace OHOS::Media;
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 struct NativePixelMap_ {
27     PixelMapNapi* napi = nullptr;
28 };
29 
30 MIDK_EXPORT
OH_PixelMap_InitNativePixelMap(napi_env env,napi_value source)31 NativePixelMap* OH_PixelMap_InitNativePixelMap(napi_env env, napi_value source)
32 {
33     PixelMapNapi* napi = PixelMapNapi_Unwrap(env, source);
34     if (napi == nullptr) {
35         return nullptr;
36     }
37     std::unique_ptr<NativePixelMap> result = std::make_unique<NativePixelMap>();
38     result->napi = napi;
39     return result.release();
40 }
41 
42 MIDK_EXPORT
OH_PixelMap_CreatePixelMap(napi_env env,OhosPixelMapCreateOps info,void * buf,size_t len,napi_value * res)43 int32_t OH_PixelMap_CreatePixelMap(napi_env env, OhosPixelMapCreateOps info,
44     void* buf, size_t len, napi_value* res)
45 {
46     PixelMapNapiArgs args;
47     args.createOptions.width = info.width;
48     args.createOptions.height = info.height;
49     args.createOptions.pixelFormat = info.pixelFormat;
50     args.createOptions.editable = info.editable;
51     args.createOptions.alphaType = info.alphaType;
52     args.createOptions.scaleMode = info.scaleMode;
53     args.inBuffer = buf;
54     args.bufferLen = len;
55     args.outValue = res;
56     return PixelMapNapiNativeEnvCall(ENV_FUNC_CREATE, env, &args);
57 }
58 
59 MIDK_EXPORT
OH_PixelMap_CreateAlphaPixelMap(napi_env env,napi_value source,napi_value * alpha)60 int32_t OH_PixelMap_CreateAlphaPixelMap(napi_env env, napi_value source, napi_value* alpha)
61 {
62     PixelMapNapiArgs args;
63     args.inValue = source;
64     args.outValue = alpha;
65     return PixelMapNapiNativeEnvCall(ENV_FUNC_CREATE_ALPHA, env, &args);
66 }
67 
68 
69 MIDK_EXPORT
OH_PixelMap_GetBytesNumberPerRow(const NativePixelMap * native,int32_t * num)70 int32_t OH_PixelMap_GetBytesNumberPerRow(const NativePixelMap* native, int32_t* num)
71 {
72     if (native == nullptr || native->napi == nullptr) {
73         return IMAGE_RESULT_BAD_PARAMETER;
74     }
75     PixelMapNapiArgs args;
76     args.outNum = num;
77     return PixelMapNapiNativeCtxCall(CTX_FUNC_GET_ROW_BYTES, native->napi, &args);
78 }
79 
80 MIDK_EXPORT
OH_PixelMap_GetIsEditable(const NativePixelMap * native,int32_t * editable)81 int32_t OH_PixelMap_GetIsEditable(const NativePixelMap* native, int32_t* editable)
82 {
83     if (native == nullptr || native->napi == nullptr) {
84         return IMAGE_RESULT_BAD_PARAMETER;
85     }
86     PixelMapNapiArgs args;
87     args.outNum = editable;
88     return PixelMapNapiNativeCtxCall(CTX_FUNC_IS_EDITABLE, native->napi, &args);
89 }
90 
91 MIDK_EXPORT
OH_PixelMap_IsSupportAlpha(const NativePixelMap * native,int32_t * alpha)92 int32_t OH_PixelMap_IsSupportAlpha(const NativePixelMap* native, int32_t* alpha)
93 {
94     if (native == nullptr || native->napi == nullptr) {
95         return IMAGE_RESULT_BAD_PARAMETER;
96     }
97     PixelMapNapiArgs args;
98     args.outNum = alpha;
99     return PixelMapNapiNativeCtxCall(CTX_FUNC_IS_SUPPORT_ALPHA, native->napi, &args);
100 }
101 
102 MIDK_EXPORT
OH_PixelMap_SetAlphaAble(const NativePixelMap * native,int32_t alpha)103 int32_t OH_PixelMap_SetAlphaAble(const NativePixelMap* native, int32_t alpha)
104 {
105     if (native == nullptr || native->napi == nullptr) {
106         return IMAGE_RESULT_BAD_PARAMETER;
107     }
108     PixelMapNapiArgs args;
109     args.inNum0 = alpha;
110     return PixelMapNapiNativeCtxCall(CTX_FUNC_SET_ALPHAABLE, native->napi, &args);
111 }
112 
113 MIDK_EXPORT
OH_PixelMap_GetDensity(const NativePixelMap * native,int32_t * density)114 int32_t OH_PixelMap_GetDensity(const NativePixelMap* native, int32_t* density)
115 {
116     if (native == nullptr || native->napi == nullptr) {
117         return IMAGE_RESULT_BAD_PARAMETER;
118     }
119     PixelMapNapiArgs args;
120     args.outNum = density;
121     return PixelMapNapiNativeCtxCall(CTX_FUNC_GET_DENSITY, native->napi, &args);
122 }
123 
124 MIDK_EXPORT
OH_PixelMap_SetDensity(const NativePixelMap * native,int32_t density)125 int32_t OH_PixelMap_SetDensity(const NativePixelMap* native, int32_t density)
126 {
127     if (native == nullptr || native->napi == nullptr) {
128         return IMAGE_RESULT_BAD_PARAMETER;
129     }
130     PixelMapNapiArgs args;
131     args.inNum0 = density;
132     return PixelMapNapiNativeCtxCall(CTX_FUNC_SET_DENSITY, native->napi, &args);
133 }
134 
135 MIDK_EXPORT
OH_PixelMap_SetOpacity(const NativePixelMap * native,float opacity)136 int32_t OH_PixelMap_SetOpacity(const NativePixelMap* native, float opacity)
137 {
138     if (native == nullptr || native->napi == nullptr) {
139         return IMAGE_RESULT_BAD_PARAMETER;
140     }
141     PixelMapNapiArgs args;
142     args.inFloat0 = opacity;
143     return PixelMapNapiNativeCtxCall(CTX_FUNC_SET_OPACITY, native->napi, &args);
144 }
145 
146 MIDK_EXPORT
OH_PixelMap_Scale(const NativePixelMap * native,float x,float y)147 int32_t OH_PixelMap_Scale(const NativePixelMap* native, float x, float y)
148 {
149     if (native == nullptr || native->napi == nullptr) {
150         return IMAGE_RESULT_BAD_PARAMETER;
151     }
152     PixelMapNapiArgs args;
153     args.inFloat0 = x;
154     args.inFloat1 = y;
155     return PixelMapNapiNativeCtxCall(CTX_FUNC_SCALE, native->napi, &args);
156 }
157 
158 MIDK_EXPORT
OH_PixelMap_Translate(const NativePixelMap * native,float x,float y)159 int32_t OH_PixelMap_Translate(const NativePixelMap* native, float x, float y)
160 {
161     if (native == nullptr || native->napi == nullptr) {
162         return IMAGE_RESULT_BAD_PARAMETER;
163     }
164     PixelMapNapiArgs args;
165     args.inFloat0 = x;
166     args.inFloat1 = y;
167     return PixelMapNapiNativeCtxCall(CTX_FUNC_TRANSLATE, native->napi, &args);
168 }
169 
170 MIDK_EXPORT
OH_PixelMap_Rotate(const NativePixelMap * native,float angle)171 int32_t OH_PixelMap_Rotate(const NativePixelMap* native, float angle)
172 {
173     if (native == nullptr || native->napi == nullptr) {
174         return IMAGE_RESULT_BAD_PARAMETER;
175     }
176     PixelMapNapiArgs args;
177     args.inFloat0 = angle;
178     return PixelMapNapiNativeCtxCall(CTX_FUNC_ROTATE, native->napi, &args);
179 }
180 
181 MIDK_EXPORT
OH_PixelMap_Flip(const NativePixelMap * native,int32_t x,int32_t y)182 int32_t OH_PixelMap_Flip(const NativePixelMap* native, int32_t x, int32_t y)
183 {
184     if (native == nullptr || native->napi == nullptr) {
185         return IMAGE_RESULT_BAD_PARAMETER;
186     }
187     PixelMapNapiArgs args;
188     args.inNum0 = x;
189     args.inNum1 = y;
190     return PixelMapNapiNativeCtxCall(CTX_FUNC_FLIP, native->napi, &args);
191 }
192 
193 MIDK_EXPORT
OH_PixelMap_Crop(const NativePixelMap * native,int32_t x,int32_t y,int32_t width,int32_t height)194 int32_t OH_PixelMap_Crop(const NativePixelMap* native, int32_t x, int32_t y, int32_t width, int32_t height)
195 {
196     if (native == nullptr || native->napi == nullptr) {
197         return IMAGE_RESULT_BAD_PARAMETER;
198     }
199     PixelMapNapiArgs args;
200     args.inNum0 = x;
201     args.inNum1 = y;
202     args.inNum2 = width;
203     args.inNum3 = height;
204     return PixelMapNapiNativeCtxCall(CTX_FUNC_CROP, native->napi, &args);
205 }
206 
207 MIDK_EXPORT
OH_PixelMap_GetImageInfo(const NativePixelMap * native,OhosPixelMapInfos * info)208 int32_t OH_PixelMap_GetImageInfo(const NativePixelMap* native, OhosPixelMapInfos *info)
209 {
210     if (native == nullptr || native->napi == nullptr) {
211         return IMAGE_RESULT_BAD_PARAMETER;
212     }
213     PixelMapNapiArgs args;
214     args.outInfo = info;
215     return PixelMapNapiNativeCtxCall(CTX_FUNC_GET_IMAGE_INFO, native->napi, &args);
216 }
217 
218 MIDK_EXPORT
OH_PixelMap_AccessPixels(const NativePixelMap * native,void ** addr)219 int32_t OH_PixelMap_AccessPixels(const NativePixelMap* native, void** addr)
220 {
221     if (native == nullptr || native->napi == nullptr) {
222         return IMAGE_RESULT_BAD_PARAMETER;
223     }
224     PixelMapNapiArgs args;
225     args.outAddr = addr;
226     return PixelMapNapiNativeCtxCall(CTX_FUNC_ACCESS_PIXELS, native->napi, &args);
227 }
228 
229 MIDK_EXPORT
OH_PixelMap_UnAccessPixels(const NativePixelMap * native)230 int32_t OH_PixelMap_UnAccessPixels(const NativePixelMap* native)
231 {
232     if (native == nullptr || native->napi == nullptr) {
233         return IMAGE_RESULT_BAD_PARAMETER;
234     }
235     PixelMapNapiArgs args;
236     return PixelMapNapiNativeCtxCall(CTX_FUNC_UNACCESS_PIXELS, native->napi, &args);
237 }
238 
239 #ifdef __cplusplus
240 };
241 #endif
242