Showing
18 changed files
with
586 additions
and
1 deletions
@@ -23,7 +23,7 @@ class IProcessingCameraImage implements ProcessingCameraImage { | @@ -23,7 +23,7 @@ class IProcessingCameraImage implements ProcessingCameraImage { | ||
23 | } | 23 | } |
24 | 24 | ||
25 | IProcessingCameraImage._() { | 25 | IProcessingCameraImage._() { |
26 | - final DynamicLibrary convertImageLib = Platform.isAndroid | 26 | + final DynamicLibrary convertImageLib = Platform.isAndroid || Platform.operatingSystem == "ohos" |
27 | ? DynamicLibrary.open("libconvertImage.so") | 27 | ? DynamicLibrary.open("libconvertImage.so") |
28 | : DynamicLibrary.process(); | 28 | : DynamicLibrary.process(); |
29 | _convertImageYuv420pToRGB = convertImageLib | 29 | _convertImageYuv420pToRGB = convertImageLib |
ohos/.gitignore
0 → 100644
ohos/BuildProfile.ets
0 → 100644
1 | +/** | ||
2 | + * Use these variables when you tailor your ArkTS code. They must be of the const type. | ||
3 | + */ | ||
4 | +export const HAR_VERSION = '1.0.0'; | ||
5 | +export const BUILD_MODE_NAME = 'debug'; | ||
6 | +export const DEBUG = true; | ||
7 | +export const TARGET_NAME = 'default'; | ||
8 | + | ||
9 | +/** | ||
10 | + * BuildProfile Class is used only for compatibility purposes. | ||
11 | + */ | ||
12 | +export default class BuildProfile { | ||
13 | + static readonly HAR_VERSION = HAR_VERSION; | ||
14 | + static readonly BUILD_MODE_NAME = BUILD_MODE_NAME; | ||
15 | + static readonly DEBUG = DEBUG; | ||
16 | + static readonly TARGET_NAME = TARGET_NAME; | ||
17 | +} |
ohos/build-profile.json5
0 → 100644
1 | +{ | ||
2 | + "apiType": "stageMode", | ||
3 | + "buildOption": { | ||
4 | + "externalNativeOptions": { | ||
5 | + "path": "./src/main/cpp/CMakeLists.txt", | ||
6 | + "arguments": "", | ||
7 | + "cppFlags": "", | ||
8 | + } | ||
9 | + }, | ||
10 | + "buildOptionSet": [ | ||
11 | + { | ||
12 | + "name": "release", | ||
13 | + "arkOptions": { | ||
14 | + "obfuscation": { | ||
15 | + "ruleOptions": { | ||
16 | + "enable": false, | ||
17 | + "files": [ | ||
18 | + "./obfuscation-rules.txt" | ||
19 | + ] | ||
20 | + }, | ||
21 | + "consumerFiles": [ | ||
22 | + "./consumer-rules.txt" | ||
23 | + ] | ||
24 | + } | ||
25 | + }, | ||
26 | + "nativeLib": { | ||
27 | + "debugSymbol": { | ||
28 | + "strip": true, | ||
29 | + "exclude": [] | ||
30 | + } | ||
31 | + } | ||
32 | + }, | ||
33 | + ], | ||
34 | + "targets": [ | ||
35 | + { | ||
36 | + "name": "default" | ||
37 | + }, | ||
38 | + { | ||
39 | + "name": "processing_camera_image" | ||
40 | + } | ||
41 | + ] | ||
42 | +} |
ohos/consumer-rules.txt
0 → 100644
ohos/hvigorfile.ts
0 → 100644
ohos/index.ets
0 → 100644
ohos/obfuscation-rules.txt
0 → 100644
1 | +# Define project specific obfuscation rules here. | ||
2 | +# You can include the obfuscation configuration files in the current module's build-profile.json5. | ||
3 | +# | ||
4 | +# For more details, see | ||
5 | +# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5 | ||
6 | + | ||
7 | +# Obfuscation options: | ||
8 | +# -disable-obfuscation: disable all obfuscations | ||
9 | +# -enable-property-obfuscation: obfuscate the property names | ||
10 | +# -enable-toplevel-obfuscation: obfuscate the names in the global scope | ||
11 | +# -compact: remove unnecessary blank spaces and all line feeds | ||
12 | +# -remove-log: remove all console.* statements | ||
13 | +# -print-namecache: print the name cache that contains the mapping from the old names to new names | ||
14 | +# -apply-namecache: reuse the given cache file | ||
15 | + | ||
16 | +# Keep options: | ||
17 | +# -keep-property-name: specifies property names that you want to keep | ||
18 | +# -keep-global-name: specifies names that you want to keep in the global scope | ||
19 | + | ||
20 | +-enable-property-obfuscation | ||
21 | +-enable-toplevel-obfuscation | ||
22 | +-enable-filename-obfuscation | ||
23 | +-enable-export-obfuscation |
ohos/oh-package.json5
0 → 100644
1 | +{ | ||
2 | + "name": "processing_camera_image", | ||
3 | + "version": "1.0.0", | ||
4 | + "description": "Please describe the basic information.", | ||
5 | + "main": "Index.ets", | ||
6 | + "author": "", | ||
7 | + "license": "", | ||
8 | + "dependencies": { | ||
9 | + "@ohos/flutter_ohos": "file:./libs/flutter_embedding.har", | ||
10 | + "libconvertImage.so": "file:./src/main/cpp/types/libconvertImage" | ||
11 | + }, | ||
12 | + "modelVersion": "5.0.1", | ||
13 | + "compatibleSdkVersion": "13", | ||
14 | + "compatibleSdkType": "HarmonyOS" | ||
15 | +} |
ohos/src/main/cpp/CMakeLists.txt
0 → 100644
1 | +# the minimum version of CMake. | ||
2 | +cmake_minimum_required(VERSION 3.5.0) | ||
3 | +project(MyApplication2) | ||
4 | + | ||
5 | +set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) | ||
6 | + | ||
7 | +if(DEFINED PACKAGE_FIND_FILE) | ||
8 | + include(${PACKAGE_FIND_FILE}) | ||
9 | +endif() | ||
10 | + | ||
11 | +include_directories(${NATIVERENDER_ROOT_PATH} | ||
12 | + ${NATIVERENDER_ROOT_PATH}/include) | ||
13 | + | ||
14 | +add_library(convertImage SHARED napi_init.cpp converter.c) | ||
15 | +target_link_libraries(convertImage PUBLIC libace_napi.z.so) |
ohos/src/main/cpp/converter.c
0 → 100644
1 | +// | ||
2 | +// Created by thuanpm on 4/22/22. | ||
3 | +// | ||
4 | + | ||
5 | +#include <stdio.h> | ||
6 | +#include "converter.h" | ||
7 | +#include <math.h> | ||
8 | +#include <stdlib.h> | ||
9 | + | ||
10 | +#define HEXFF 255 | ||
11 | + | ||
12 | +int _clamp(int lower, int higher, int val) | ||
13 | +{ | ||
14 | + if (val < lower) | ||
15 | + return 0; | ||
16 | + else if (val > higher) | ||
17 | + return 255; | ||
18 | + else | ||
19 | + return val; | ||
20 | +} | ||
21 | + | ||
22 | +uint32_t *_rotaion_image_32bit(uint32_t *src, double angle, int width, int height, uint32_t background_color) | ||
23 | +{ | ||
24 | + double rad = (angle * M_PI / 180.0); | ||
25 | + double sinVal = sin(rad); | ||
26 | + double cosVal = cos(rad); | ||
27 | + int new_width = (int)(fabs(sinVal * height) + fabs(cosVal * width)); | ||
28 | + int new_height = (int)(fabs(sinVal * width) + fabs(cosVal * height)); | ||
29 | + double w2 = 0.5 * width; | ||
30 | + double h2 = 0.5 * height; | ||
31 | + double dw2 = 0.5 * new_width; | ||
32 | + double dh2 = 0.5 * new_height; | ||
33 | + | ||
34 | + uint32_t *dest = malloc(sizeof(uint32_t) * (new_width * new_height)); | ||
35 | + | ||
36 | + for (int i = 0; i < new_height; ++i) | ||
37 | + { | ||
38 | + for (int j = 0; j < new_width; ++j) | ||
39 | + { | ||
40 | + int oriX = (int)(w2 + (j - dw2) * cosVal + (i - dh2) * sinVal); | ||
41 | + int oriY = (int)(h2 - (j - dw2) * sinVal + (i - dh2) * cosVal); | ||
42 | + if (oriX >= 0 && oriX < width && oriY >= 0 && oriY < height) | ||
43 | + { | ||
44 | + dest[i * new_width + j] = src[oriX + oriY * width]; | ||
45 | + } | ||
46 | + else | ||
47 | + { | ||
48 | + dest[i * new_width + j] = background_color; | ||
49 | + } | ||
50 | + } | ||
51 | + } | ||
52 | + free(src); | ||
53 | + return dest; | ||
54 | +} | ||
55 | + | ||
56 | +uint8_t *_rotaion_image_8bit(uint8_t *src, double angle, int width, int height, uint8_t background_color) | ||
57 | +{ | ||
58 | + double rad = (angle * M_PI / 180.0); | ||
59 | + double sinVal = sin(rad); | ||
60 | + double cosVal = cos(rad); | ||
61 | + int new_width = (int)(fabs(sinVal * height) + fabs(cosVal * width)); | ||
62 | + int new_height = (int)(fabs(sinVal * width) + fabs(cosVal * height)); | ||
63 | + double w2 = 0.5 * width; | ||
64 | + double h2 = 0.5 * height; | ||
65 | + double dw2 = 0.5 * new_width; | ||
66 | + double dh2 = 0.5 * new_height; | ||
67 | + | ||
68 | + uint8_t *dest = malloc(sizeof(uint8_t) * (new_width * new_height)); | ||
69 | + | ||
70 | + for (int i = 0; i < new_height; ++i) | ||
71 | + { | ||
72 | + for (int j = 0; j < new_width; ++j) | ||
73 | + { | ||
74 | + int oriX = (int)(w2 + (j - dw2) * cosVal + (i - dh2) * sinVal); | ||
75 | + int oriY = (int)(h2 - (j - dw2) * sinVal + (i - dh2) * cosVal); | ||
76 | + if (oriX >= 0 && oriX < width && oriY >= 0 && oriY < height) | ||
77 | + { | ||
78 | + dest[i * new_width + j] = src[oriX + oriY * width]; | ||
79 | + } | ||
80 | + else | ||
81 | + { | ||
82 | + dest[i * new_width + j] = background_color; | ||
83 | + } | ||
84 | + } | ||
85 | + } | ||
86 | + free(src); | ||
87 | + return dest; | ||
88 | +} | ||
89 | + | ||
90 | +void _flip_horizontal_32bit(int width, int height, uint32_t *src) | ||
91 | +{ | ||
92 | + int dw2 = (int)(width / 2); | ||
93 | + for (int y = 0; y < height; ++y) | ||
94 | + { | ||
95 | + int y1 = (y * width); | ||
96 | + for (int x = 0; x < dw2; ++x) | ||
97 | + { | ||
98 | + int x2 = (width - 1 - x); | ||
99 | + uint32_t t = src[y1 + x2]; | ||
100 | + src[y1 + x2] = src[y1 + x]; | ||
101 | + src[y1 + x] = t; | ||
102 | + } | ||
103 | + } | ||
104 | +} | ||
105 | + | ||
106 | +void _flip_horizontal_8bit(int width, int height, uint8_t *src) | ||
107 | +{ | ||
108 | + int dw2 = (int)(width / 2); | ||
109 | + for (int y = 0; y < height; ++y) | ||
110 | + { | ||
111 | + int y1 = (y * width); | ||
112 | + for (int x = 0; x < dw2; ++x) | ||
113 | + { | ||
114 | + int x2 = (width - 1 - x); | ||
115 | + uint8_t t = src[y1 + x2]; | ||
116 | + src[y1 + x2] = src[y1 + x]; | ||
117 | + src[y1 + x] = t; | ||
118 | + } | ||
119 | + } | ||
120 | +} | ||
121 | + | ||
122 | +void _flip_vertical_32bit(int width, int height, uint32_t *src) | ||
123 | +{ | ||
124 | + int h2 = (int)(height / 2); | ||
125 | + for (int y = 0; y < h2; ++y) | ||
126 | + { | ||
127 | + int y1 = (y * width); | ||
128 | + int y2 = (height - 1 - y) * width; | ||
129 | + for (int x = 0; x < width; ++x) | ||
130 | + { | ||
131 | + uint32_t t = src[y2 + x]; | ||
132 | + src[y2 + x] = src[y1 + x]; | ||
133 | + src[y1 + x] = t; | ||
134 | + } | ||
135 | + } | ||
136 | +} | ||
137 | + | ||
138 | +void _flip_vertical_8bit(int width, int height, uint8_t *src) | ||
139 | +{ | ||
140 | + int h2 = (int)(height / 2); | ||
141 | + for (int y = 0; y < h2; ++y) | ||
142 | + { | ||
143 | + int y1 = (y * width); | ||
144 | + int y2 = (height - 1 - y) * width; | ||
145 | + for (int x = 0; x < width; ++x) | ||
146 | + { | ||
147 | + uint8_t t = src[y2 + x]; | ||
148 | + src[y2 + x] = src[y1 + x]; | ||
149 | + src[y1 + x] = t; | ||
150 | + } | ||
151 | + } | ||
152 | +} | ||
153 | + | ||
154 | +uint32_t *convert_image_yuv420p_to_gray(uint8_t *plane0, int width, int height, double angleRotation, uint32_t background_color, bool flip_vertical, bool flip_horizontal) | ||
155 | +{ | ||
156 | + int x, y; | ||
157 | + int yp, index; | ||
158 | + | ||
159 | + uint32_t *src = malloc(sizeof(uint32_t) * (width * height)); | ||
160 | + | ||
161 | + for (x = 0; x < width; x++) | ||
162 | + { | ||
163 | + for (y = 0; y < height; y++) | ||
164 | + { | ||
165 | + index = y * width + x; | ||
166 | + yp = plane0[index]; | ||
167 | + src[x + y * width] = (HEXFF << 24) | (yp << 16) | (yp << 8) | yp; | ||
168 | + } | ||
169 | + } | ||
170 | + if (flip_horizontal) | ||
171 | + { | ||
172 | + _flip_horizontal_32bit(width, height, src); | ||
173 | + } | ||
174 | + if (flip_vertical) | ||
175 | + { | ||
176 | + _flip_vertical_32bit(width, height, src); | ||
177 | + } | ||
178 | + | ||
179 | + if (angleRotation == 0) | ||
180 | + { | ||
181 | + return src; | ||
182 | + } | ||
183 | + | ||
184 | + else | ||
185 | + { | ||
186 | + return _rotaion_image_32bit(src, angleRotation, width, height, background_color); | ||
187 | + } | ||
188 | +} | ||
189 | + | ||
190 | +uint8_t *convert_image_yuv420p_to_gray_8bit(uint8_t *plane0, int width, int height, double angleRotation, uint8_t background_color, bool flip_vertical, bool flip_horizontal) | ||
191 | +{ | ||
192 | + int x, y; | ||
193 | + int index; | ||
194 | + uint8_t yp; | ||
195 | + | ||
196 | + uint8_t *src = malloc(sizeof(uint8_t) * (width * height)); | ||
197 | + | ||
198 | + for (x = 0; x < width; x++) | ||
199 | + { | ||
200 | + for (y = 0; y < height; y++) | ||
201 | + { | ||
202 | + index = y * width + x; | ||
203 | + yp = plane0[index]; | ||
204 | + src[x + y * width] = yp; | ||
205 | + } | ||
206 | + } | ||
207 | + | ||
208 | + if (flip_horizontal) | ||
209 | + { | ||
210 | + _flip_horizontal_8bit(width, height, src); | ||
211 | + } | ||
212 | + if (flip_vertical) | ||
213 | + { | ||
214 | + _flip_vertical_8bit(width, height, src); | ||
215 | + } | ||
216 | + | ||
217 | + if (angleRotation == 0) | ||
218 | + { | ||
219 | + return src; | ||
220 | + } | ||
221 | + else | ||
222 | + { | ||
223 | + return _rotaion_image_8bit(src, angleRotation, width, height, background_color); | ||
224 | + } | ||
225 | +} | ||
226 | + | ||
227 | +uint32_t *convert_image_yuv420p_to_rgb(uint8_t *plane0, uint8_t *plane1, uint8_t *plane2, int bytesPerRow, int bytesPerPixel, int width, int height, double angleRotation, uint32_t background_color, bool flip_vertical, bool flip_horizontal) | ||
228 | +{ | ||
229 | + int x, y, uvIndex, index; | ||
230 | + int yp, up, vp; | ||
231 | + int r, g, b; | ||
232 | + int rt, gt, bt; | ||
233 | + | ||
234 | + uint32_t *src = malloc(sizeof(uint32_t) * (width * height)); | ||
235 | + | ||
236 | + for (x = 0; x < width; ++x) | ||
237 | + { | ||
238 | + for (y = 0; y < height; ++y) | ||
239 | + { | ||
240 | + uvIndex = bytesPerPixel * ((int)floor(x / 2)) + bytesPerRow * ((int)floor(y / 2)); | ||
241 | + index = y * width + x; | ||
242 | + | ||
243 | + yp = plane0[index]; | ||
244 | + up = plane1[uvIndex]; | ||
245 | + vp = plane2[uvIndex]; | ||
246 | + rt = round(yp + vp * 1436 / 1024 - 179); | ||
247 | + gt = round(yp - up * 46549 / 131072 + 44 - vp * 93604 / 131072 + 91); | ||
248 | + bt = round(yp + up * 1814 / 1024 - 227); | ||
249 | + r = _clamp(0, 255, rt); | ||
250 | + g = _clamp(0, 255, gt); | ||
251 | + b = _clamp(0, 255, bt); | ||
252 | + src[x + y * width] = (HEXFF << 24) | (b << 16) | (g << 8) | r; | ||
253 | + } | ||
254 | + } | ||
255 | + if (flip_horizontal) | ||
256 | + { | ||
257 | + _flip_horizontal_32bit(width, height, src); | ||
258 | + } | ||
259 | + if (flip_vertical) | ||
260 | + { | ||
261 | + _flip_vertical_32bit(width, height, src); | ||
262 | + } | ||
263 | + | ||
264 | + if (angleRotation == 0) | ||
265 | + { | ||
266 | + return src; | ||
267 | + } | ||
268 | + else | ||
269 | + { | ||
270 | + return _rotaion_image_32bit(src, angleRotation, width, height, background_color); | ||
271 | + } | ||
272 | +} | ||
273 | + | ||
274 | +uint32_t *convert_image_nv12_to_rgb(uint8_t *plane0, uint8_t *plane1, int bytesPerRow, int bytesPerPixel, int width, int height, double angleRotation, uint32_t background_color, bool flip_vertical, bool flip_horizontal) | ||
275 | +{ | ||
276 | + int x, y, uvIndex, index; | ||
277 | + int yp, up, vp; | ||
278 | + int r, g, b; | ||
279 | + int rt, gt, bt; | ||
280 | + | ||
281 | + uint32_t *src = malloc(sizeof(uint32_t) * (width * height)); | ||
282 | + | ||
283 | + for (x = 0; x < width; ++x) | ||
284 | + { | ||
285 | + for (y = 0; y < height; ++y) | ||
286 | + { | ||
287 | + uvIndex = bytesPerPixel * ((int)floor(x / 2)) + bytesPerRow * ((int)floor(y / 2)); | ||
288 | + index = y * width + x; | ||
289 | + | ||
290 | + yp = plane0[index]; | ||
291 | + up = plane1[uvIndex]; | ||
292 | + vp = plane1[uvIndex + 1]; | ||
293 | + rt = round(yp + vp * 1436 / 1024 - 179); | ||
294 | + gt = round(yp - up * 46549 / 131072 + 44 - vp * 93604 / 131072 + 91); | ||
295 | + bt = round(yp + up * 1814 / 1024 - 227); | ||
296 | + r = _clamp(0, 255, rt); | ||
297 | + g = _clamp(0, 255, gt); | ||
298 | + b = _clamp(0, 255, bt); | ||
299 | + src[x + y * width] = (HEXFF << 24) | (b << 16) | (g << 8) | r; | ||
300 | + } | ||
301 | + } | ||
302 | + if (flip_horizontal) | ||
303 | + { | ||
304 | + _flip_horizontal_32bit(width, height, src); | ||
305 | + } | ||
306 | + if (flip_vertical) | ||
307 | + { | ||
308 | + _flip_vertical_32bit(width, height, src); | ||
309 | + } | ||
310 | + if (angleRotation == 0) | ||
311 | + { | ||
312 | + return src; | ||
313 | + } | ||
314 | + else | ||
315 | + { | ||
316 | + return _rotaion_image_32bit(src, angleRotation, width, height, background_color); | ||
317 | + } | ||
318 | +} |
ohos/src/main/cpp/converter.h
0 → 100644
1 | +// | ||
2 | +// Created by thuanpm on 4/22/22. | ||
3 | +// | ||
4 | + | ||
5 | +#ifndef PROCESSING_CAMERA_IMAGE_CONVERTER_H | ||
6 | +#define PROCESSING_CAMERA_IMAGE_CONVERTER_H | ||
7 | + | ||
8 | +#ifdef __cplusplus | ||
9 | +extern "C" | ||
10 | +{ | ||
11 | +#endif | ||
12 | + | ||
13 | +#include <stdbool.h> | ||
14 | + | ||
15 | + uint8_t *convert_image_yuv420p_to_gray_8bit(uint8_t *plane0, int width, int height, double angleRotation, uint8_t background_color, bool flip_vertical, bool flip_horizontal); | ||
16 | + uint32_t *convert_image_nv12_to_rgb(uint8_t *plane0, uint8_t *plane1, int bytesPerRow, int bytesPerPixel, int width, int height, double angleRotation, uint32_t background_color, bool flip_vertical, bool flip_horizontal); | ||
17 | + uint32_t *convert_image_yuv420p_to_gray(uint8_t *plane0, int width, int height, double angleRotation, uint32_t background_color, bool flip_vertical, bool flip_horizontal); | ||
18 | + uint32_t *convert_image_yuv420p_to_rgb(uint8_t *plane0, uint8_t *plane1, uint8_t *plane2, int bytesPerRow, int bytesPerPixel, int width, int height, double angleRotation, uint32_t background_color, bool flip_vertical, bool flip_horizontal); | ||
19 | + | ||
20 | +#ifdef __cplusplus | ||
21 | +} | ||
22 | +#endif | ||
23 | + | ||
24 | +#endif // PROCESSING_CAMERA_IMAGE_CONVERTER_H |
ohos/src/main/cpp/napi_init.cpp
0 → 100644
1 | +#include "napi/native_api.h" | ||
2 | + | ||
3 | +static napi_value Add(napi_env env, napi_callback_info info) | ||
4 | +{ | ||
5 | + size_t argc = 2; | ||
6 | + napi_value args[2] = {nullptr}; | ||
7 | + | ||
8 | + napi_get_cb_info(env, info, &argc, args , nullptr, nullptr); | ||
9 | + | ||
10 | + napi_valuetype valuetype0; | ||
11 | + napi_typeof(env, args[0], &valuetype0); | ||
12 | + | ||
13 | + napi_valuetype valuetype1; | ||
14 | + napi_typeof(env, args[1], &valuetype1); | ||
15 | + | ||
16 | + double value0; | ||
17 | + napi_get_value_double(env, args[0], &value0); | ||
18 | + | ||
19 | + double value1; | ||
20 | + napi_get_value_double(env, args[1], &value1); | ||
21 | + | ||
22 | + napi_value sum; | ||
23 | + napi_create_double(env, value0 + value1, &sum); | ||
24 | + | ||
25 | + return sum; | ||
26 | + | ||
27 | +} | ||
28 | + | ||
29 | +EXTERN_C_START | ||
30 | +static napi_value Init(napi_env env, napi_value exports) | ||
31 | +{ | ||
32 | + napi_property_descriptor desc[] = { | ||
33 | + { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr } | ||
34 | + }; | ||
35 | + napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); | ||
36 | + return exports; | ||
37 | +} | ||
38 | +EXTERN_C_END | ||
39 | + | ||
40 | +static napi_module demoModule = { | ||
41 | + .nm_version = 1, | ||
42 | + .nm_flags = 0, | ||
43 | + .nm_filename = nullptr, | ||
44 | + .nm_register_func = Init, | ||
45 | + .nm_modname = "entry", | ||
46 | + .nm_priv = ((void*)0), | ||
47 | + .reserved = { 0 }, | ||
48 | +}; | ||
49 | + | ||
50 | +extern "C" __attribute__((constructor)) void RegisterEntryModule(void) | ||
51 | +{ | ||
52 | + napi_module_register(&demoModule); | ||
53 | +} |
1 | +export const add: (a: number, b: number) => number; |
1 | +import { | ||
2 | + FlutterPlugin, | ||
3 | + FlutterPluginBinding, | ||
4 | + MethodCall, | ||
5 | + MethodCallHandler, | ||
6 | + MethodChannel, | ||
7 | + MethodResult, | ||
8 | +} from '@ohos/flutter_ohos'; | ||
9 | + | ||
10 | +import common from '@ohos.app.ability.common'; | ||
11 | + | ||
12 | +/** ProcessingCameraImagePlugin **/ | ||
13 | +export default class ProcessingCameraImagePlugin implements FlutterPlugin, MethodCallHandler { | ||
14 | + private channel: MethodChannel | null = null; | ||
15 | + private context: common.Context | null = null; | ||
16 | + | ||
17 | + constructor(context?: common.Context) { | ||
18 | + if (context) { | ||
19 | + this.context = context; | ||
20 | + } | ||
21 | + } | ||
22 | + | ||
23 | + getUniqueClassName(): string { | ||
24 | + return "ProcessingCameraImagePlugin" | ||
25 | + } | ||
26 | + | ||
27 | + onAttachedToEngine(binding: FlutterPluginBinding): void { | ||
28 | + this.channel = new MethodChannel(binding.getBinaryMessenger(), "processing_camera_image"); | ||
29 | + this.channel.setMethodCallHandler(this) | ||
30 | + | ||
31 | + this.context = binding.getApplicationContext(); | ||
32 | + // hilog.info(0x0000, 'start', 'MMKVPlugin onAttachedToEngine: %{public}s', this.context); | ||
33 | + } | ||
34 | + | ||
35 | + onDetachedFromEngine(binding: FlutterPluginBinding): void { | ||
36 | + if (this.channel != null) { | ||
37 | + this.channel.setMethodCallHandler(null) | ||
38 | + } | ||
39 | + } | ||
40 | + | ||
41 | + onMethodCall(call: MethodCall, result: MethodResult): void { | ||
42 | + result.notImplemented() | ||
43 | + } | ||
44 | +} |
ohos/src/main/module.json5
0 → 100644
@@ -35,6 +35,8 @@ flutter: | @@ -35,6 +35,8 @@ flutter: | ||
35 | pluginClass: ProcessingCameraImagePlugin | 35 | pluginClass: ProcessingCameraImagePlugin |
36 | ios: | 36 | ios: |
37 | pluginClass: ProcessingCameraImagePlugin | 37 | pluginClass: ProcessingCameraImagePlugin |
38 | + ohos: | ||
39 | + pluginClass: ProcessingCameraImagePlugin | ||
38 | 40 | ||
39 | # To add assets to your plugin package, add an assets section, like this: | 41 | # To add assets to your plugin package, add an assets section, like this: |
40 | # assets: | 42 | # assets: |
-
Please register or login to post a comment