@hxa-rn/react-native-gcanvas 6.0.24-beta.1 → 6.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/LICENSE +203 -21
  3. package/README.md +207 -207
  4. package/harmony/gcanvas/LICENSE +203 -21
  5. package/harmony/gcanvas/NOTICE +32 -32
  6. package/harmony/gcanvas/OAT.xml +37 -37
  7. package/harmony/gcanvas/build-profile.json5 +16 -16
  8. package/harmony/gcanvas/hvigorfile.ts +1 -1
  9. package/harmony/gcanvas/index.ets +1 -1
  10. package/harmony/gcanvas/oh-package.json5 +14 -14
  11. package/harmony/gcanvas/src/main/cpp/CMakeLists.txt +126 -126
  12. package/harmony/gcanvas/src/main/cpp/GCanvasNapi.cpp +485 -485
  13. package/harmony/gcanvas/src/main/cpp/GCanvasXComponent.cpp +106 -106
  14. package/harmony/gcanvas/src/main/cpp/GcanvasPackage.h +24 -24
  15. package/harmony/gcanvas/src/main/ets/GCanvasModuleTurboModule.ts +448 -448
  16. package/harmony/gcanvas/src/main/ets/GCanvasNativeEngine.ts +206 -206
  17. package/harmony/gcanvas/src/main/ets/components/GCanvasView.ets +64 -64
  18. package/harmony/gcanvas/src/main/module.json5 +21 -21
  19. package/harmony/gcanvas/src/main/resources/base/element/string.json +12 -12
  20. package/harmony/gcanvas/src/main/resources/en_US/element/string.json +8 -8
  21. package/harmony/gcanvas/src/main/resources/zh_CN/element/string.json +12 -12
  22. package/harmony/gcanvas.har +0 -0
  23. package/package.json +4 -4
  24. package/packages/gcanvas/.babelrc +4 -4
  25. package/packages/gcanvas/.eslintrc.js +133 -133
  26. package/packages/gcanvas/package.json +19 -19
  27. package/packages/gcanvas/rollup.config.js +13 -13
  28. package/packages/gcanvas/src/bridge/react-native.js +286 -286
  29. package/packages/gcanvas/src/bridge/weex.js +210 -210
  30. package/packages/gcanvas/src/context/2d/FillStyleLinearGradient.js +16 -16
  31. package/packages/gcanvas/src/context/2d/FillStylePattern.js +7 -7
  32. package/packages/gcanvas/src/context/2d/FillStyleRadialGradient.js +16 -16
  33. package/packages/gcanvas/src/context/2d/OffScreenRenderingContext.js +48 -48
  34. package/packages/gcanvas/src/context/2d/RenderingContext.js +787 -787
  35. package/packages/gcanvas/src/context/webgl/ActiveInfo.js +10 -10
  36. package/packages/gcanvas/src/context/webgl/Buffer.js +20 -20
  37. package/packages/gcanvas/src/context/webgl/Framebuffer.js +20 -20
  38. package/packages/gcanvas/src/context/webgl/GLenum.js +300 -300
  39. package/packages/gcanvas/src/context/webgl/GLmethod.js +141 -141
  40. package/packages/gcanvas/src/context/webgl/GLtype.js +22 -22
  41. package/packages/gcanvas/src/context/webgl/Program.js +20 -20
  42. package/packages/gcanvas/src/context/webgl/Renderbuffer.js +20 -20
  43. package/packages/gcanvas/src/context/webgl/RenderingContext.js +1479 -1479
  44. package/packages/gcanvas/src/context/webgl/Shader.js +21 -21
  45. package/packages/gcanvas/src/context/webgl/ShaderPrecisionFormat.js +10 -10
  46. package/packages/gcanvas/src/context/webgl/Texture.js +21 -21
  47. package/packages/gcanvas/src/context/webgl/UniformLocation.js +21 -21
  48. package/packages/gcanvas/src/context/webgl/classUtils.js +2 -2
  49. package/packages/gcanvas/src/env/canvas.js +210 -210
  50. package/packages/gcanvas/src/env/image.js +76 -76
  51. package/packages/gcanvas/src/env/off-screen-canvas.js +74 -74
  52. package/packages/gcanvas/src/index.js +56 -56
  53. package/src/components/CanvasView.js +20 -20
  54. package/src/components/GCanvasComponent.js +408 -408
  55. package/src/index.js +69 -69
  56. package/src/packages/gcanvas/.babelrc +4 -4
  57. package/src/packages/gcanvas/.eslintrc.js +133 -133
  58. package/src/packages/gcanvas/package.json +19 -19
  59. package/src/packages/gcanvas/rollup.config.js +13 -13
  60. package/src/packages/gcanvas/src/bridge/react-native.js +288 -288
  61. package/src/packages/gcanvas/src/bridge/weex.js +210 -210
  62. package/src/packages/gcanvas/src/context/2d/FillStyleLinearGradient.js +16 -16
  63. package/src/packages/gcanvas/src/context/2d/FillStylePattern.js +7 -7
  64. package/src/packages/gcanvas/src/context/2d/FillStyleRadialGradient.js +16 -16
  65. package/src/packages/gcanvas/src/context/2d/OffScreenRenderingContext.js +48 -48
  66. package/src/packages/gcanvas/src/context/2d/RenderingContext.js +801 -801
  67. package/src/packages/gcanvas/src/context/webgl/ActiveInfo.js +10 -10
  68. package/src/packages/gcanvas/src/context/webgl/Buffer.js +20 -20
  69. package/src/packages/gcanvas/src/context/webgl/Framebuffer.js +20 -20
  70. package/src/packages/gcanvas/src/context/webgl/GLenum.js +300 -300
  71. package/src/packages/gcanvas/src/context/webgl/GLmethod.js +141 -141
  72. package/src/packages/gcanvas/src/context/webgl/GLtype.js +22 -22
  73. package/src/packages/gcanvas/src/context/webgl/Program.js +20 -20
  74. package/src/packages/gcanvas/src/context/webgl/Renderbuffer.js +20 -20
  75. package/src/packages/gcanvas/src/context/webgl/RenderingContext.js +1479 -1479
  76. package/src/packages/gcanvas/src/context/webgl/Shader.js +21 -21
  77. package/src/packages/gcanvas/src/context/webgl/ShaderPrecisionFormat.js +10 -10
  78. package/src/packages/gcanvas/src/context/webgl/Texture.js +21 -21
  79. package/src/packages/gcanvas/src/context/webgl/UniformLocation.js +21 -21
  80. package/src/packages/gcanvas/src/context/webgl/classUtils.js +2 -2
  81. package/src/packages/gcanvas/src/env/canvas.js +210 -210
  82. package/src/packages/gcanvas/src/env/image.js +76 -76
  83. package/src/packages/gcanvas/src/env/off-screen-canvas.js +74 -74
  84. package/src/packages/gcanvas/src/index.js +56 -56
  85. package/src/specs/v1/GCanvasViewNativeComponent.ts +42 -42
  86. package/src/specs/v1/NativeGCanvasModule.ts +140 -140
@@ -1,140 +1,140 @@
1
- import type { TurboModule } from 'react-native';
2
- import { TurboModuleRegistry } from 'react-native';
3
-
4
- /**
5
- * GCanvasModule TurboModule Spec(鸿蒙适配)
6
- *
7
- * 对齐原 Android GReactModule / iOS RCTGCanvasModule 的 20 个方法。
8
- * sync/async 按 02-planning.json 的返回类型声明:
9
- * - 非 Promise 返回类型 = 同步方法(RNOH codegen 生成 C++ JSI 同步绑定)。
10
- * JS 桥(packages/gcanvas/src/bridge/react-native.js)直接使用其返回值,
11
- * 必须保持同步语义(如 extendCallNative 返回 {result}、toDataURL 返回 string)。
12
- * - Promise<T> 返回类型 = 异步方法(图片解码、网络、生命周期)。
13
- *
14
- * 方法名与 JS 桥 GBridge.GCanvasModule.xxx 调用完全一致。
15
- * TurboModuleRegistry 名称固定为 'GCanvasModule'(与 Android/iOS getName() 一致)。
16
- */
17
- export interface Spec extends TurboModule {
18
- /**
19
- * 启用画布(同步)。返回前需让 GL 表面就绪。
20
- * 原 Android isBlockingSynchronousMethod。
21
- */
22
- enable(args: {
23
- componentId: string;
24
- config: number[];
25
- }): void;
26
-
27
- /** 禁用画布(异步)。 */
28
- disable(refId: string): Promise<void>;
29
-
30
- /**
31
- * 异步执行命令字符串(type 含 32-bit 编码:2d=0x00 / webgl=0x40,async RN)。
32
- */
33
- render(canvasId: string, cmd: string, type: number): Promise<void>;
34
-
35
- /**
36
- * 【核心】同步执行命令字符串并返回结果。
37
- * 32-bit type = ContextType[31:30](0=2d/1=webgl) | MethodType[29](1=sync) | OptionType[28:0]。
38
- * 2d sync execWithoutDisplay = 0x20000000,execWithDisplay = 0x20000001
39
- * webgl sync = 0x60000000 / 0x60000001
40
- * 复刻 Android GCanvasJNI.render() 的同步语义。
41
- */
42
- extendCallNative(args: {
43
- contextId: string;
44
- args: string;
45
- type: number;
46
- }): { result: string };
47
-
48
- /** 设置上下文类型(同步)。0=2d, 1=webgl。 */
49
- setContextType(contextType: number, refId: string): void;
50
-
51
- /** 设置设备像素比(同步)。 */
52
- setDevicePixelRatio(refId: string, ratio: number): void;
53
-
54
- /** 重置 GL viewport(同步)。 */
55
- resetGlViewport(refId: string): void;
56
-
57
- /**
58
- * 同步导出画布为 data URL(glReadPixels → PNG → base64)。
59
- * 返回形如 data:image/png;base64,xxxx。
60
- */
61
- toDataURL(refId: string, mimeType: string, quality: number): string;
62
-
63
- /** 将一个画布内容绘制到另一画布(同步)。 */
64
- drawCanvas2Canvas(map: {
65
- srcComponentId: string;
66
- dstComponentId: string;
67
- tw: number;
68
- th: number;
69
- sx: number;
70
- sy: number;
71
- sw: number;
72
- sh: number;
73
- dx: number;
74
- dy: number;
75
- dw: number;
76
- dh: number;
77
- }): void;
78
-
79
- /** 图片解码后绑定纹理(异步)。src=图片路径,imageId=纹理 id。 */
80
- bindImageTexture(
81
- args: { src: string; imageId: number },
82
- refId: string,
83
- ): Promise<void>;
84
-
85
- /** 预加载图片(异步)。url=图片地址,id=图片 id,返回尺寸/错误信息。 */
86
- preLoadImage(args: { url: string; id: number }): Promise<{
87
- width: number;
88
- height: number;
89
- error?: string;
90
- }>;
91
-
92
- /** 获取设备信息(异步)。返回 JSON 字符串。 */
93
- getDeviceInfo(args: string): Promise<{ data: string }>;
94
-
95
- /** 注册自定义字体族(同步)。fontNames 与 fontFiles 一一对应。 */
96
- addFontFamily(fontNames: string[], fontFiles: string[]): void;
97
-
98
- /** 枚举系统字体族名(同步)。 */
99
- getFontNames(): string[];
100
-
101
- /** 设置额外字体目录(同步)。 */
102
- setExtraFontLocation(location: string): void;
103
-
104
- /** 设置日志级别(异步)。 */
105
- setLogLevel(level: number): Promise<void>;
106
-
107
- /** 重置组件(异步)。 */
108
- resetComponent(refId: string): Promise<void>;
109
-
110
- /**
111
- * WebGL 纹理上传(同步,鸿蒙新增分支)。
112
- * image kit 解码 RGBA 后按命令 '102,9,...' 上传纹理(对齐 Android texImage2D)。
113
- */
114
- texImage2D(
115
- refId: string,
116
- target: number,
117
- level: number,
118
- internalformat: number,
119
- format: number,
120
- type: number,
121
- src: string,
122
- ): void;
123
-
124
- /** WebGL 纹理子图上传(同步,鸿蒙新增分支)。命令 '105,9,...'。 */
125
- texSubImage2D(
126
- refId: string,
127
- target: number,
128
- level: number,
129
- xoffset: number,
130
- yoffset: number,
131
- format: number,
132
- type: number,
133
- src: string,
134
- ): void;
135
-
136
- /** 设置组件 alpha(异步,原实现为空壳,鸿蒙同样空实现)。 */
137
- setAlpha(refId: string, alpha: number): Promise<void>;
138
- }
139
-
140
- export default TurboModuleRegistry.getEnforcing<Spec>('GCanvasModule');
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ /**
5
+ * GCanvasModule TurboModule Spec(鸿蒙适配)
6
+ *
7
+ * 对齐原 Android GReactModule / iOS RCTGCanvasModule 的 20 个方法。
8
+ * sync/async 按 02-planning.json 的返回类型声明:
9
+ * - 非 Promise 返回类型 = 同步方法(RNOH codegen 生成 C++ JSI 同步绑定)。
10
+ * JS 桥(packages/gcanvas/src/bridge/react-native.js)直接使用其返回值,
11
+ * 必须保持同步语义(如 extendCallNative 返回 {result}、toDataURL 返回 string)。
12
+ * - Promise<T> 返回类型 = 异步方法(图片解码、网络、生命周期)。
13
+ *
14
+ * 方法名与 JS 桥 GBridge.GCanvasModule.xxx 调用完全一致。
15
+ * TurboModuleRegistry 名称固定为 'GCanvasModule'(与 Android/iOS getName() 一致)。
16
+ */
17
+ export interface Spec extends TurboModule {
18
+ /**
19
+ * 启用画布(同步)。返回前需让 GL 表面就绪。
20
+ * 原 Android isBlockingSynchronousMethod。
21
+ */
22
+ enable(args: {
23
+ componentId: string;
24
+ config: number[];
25
+ }): void;
26
+
27
+ /** 禁用画布(异步)。 */
28
+ disable(refId: string): Promise<void>;
29
+
30
+ /**
31
+ * 异步执行命令字符串(type 含 32-bit 编码:2d=0x00 / webgl=0x40,async RN)。
32
+ */
33
+ render(canvasId: string, cmd: string, type: number): Promise<void>;
34
+
35
+ /**
36
+ * 【核心】同步执行命令字符串并返回结果。
37
+ * 32-bit type = ContextType[31:30](0=2d/1=webgl) | MethodType[29](1=sync) | OptionType[28:0]。
38
+ * 2d sync execWithoutDisplay = 0x20000000,execWithDisplay = 0x20000001
39
+ * webgl sync = 0x60000000 / 0x60000001
40
+ * 复刻 Android GCanvasJNI.render() 的同步语义。
41
+ */
42
+ extendCallNative(args: {
43
+ contextId: string;
44
+ args: string;
45
+ type: number;
46
+ }): { result: string };
47
+
48
+ /** 设置上下文类型(同步)。0=2d, 1=webgl。 */
49
+ setContextType(contextType: number, refId: string): void;
50
+
51
+ /** 设置设备像素比(同步)。 */
52
+ setDevicePixelRatio(refId: string, ratio: number): void;
53
+
54
+ /** 重置 GL viewport(同步)。 */
55
+ resetGlViewport(refId: string): void;
56
+
57
+ /**
58
+ * 同步导出画布为 data URL(glReadPixels → PNG → base64)。
59
+ * 返回形如 data:image/png;base64,xxxx。
60
+ */
61
+ toDataURL(refId: string, mimeType: string, quality: number): string;
62
+
63
+ /** 将一个画布内容绘制到另一画布(同步)。 */
64
+ drawCanvas2Canvas(map: {
65
+ srcComponentId: string;
66
+ dstComponentId: string;
67
+ tw: number;
68
+ th: number;
69
+ sx: number;
70
+ sy: number;
71
+ sw: number;
72
+ sh: number;
73
+ dx: number;
74
+ dy: number;
75
+ dw: number;
76
+ dh: number;
77
+ }): void;
78
+
79
+ /** 图片解码后绑定纹理(异步)。src=图片路径,imageId=纹理 id。 */
80
+ bindImageTexture(
81
+ args: { src: string; imageId: number },
82
+ refId: string,
83
+ ): Promise<void>;
84
+
85
+ /** 预加载图片(异步)。url=图片地址,id=图片 id,返回尺寸/错误信息。 */
86
+ preLoadImage(args: { url: string; id: number }): Promise<{
87
+ width: number;
88
+ height: number;
89
+ error?: string;
90
+ }>;
91
+
92
+ /** 获取设备信息(异步)。返回 JSON 字符串。 */
93
+ getDeviceInfo(args: string): Promise<{ data: string }>;
94
+
95
+ /** 注册自定义字体族(同步)。fontNames 与 fontFiles 一一对应。 */
96
+ addFontFamily(fontNames: string[], fontFiles: string[]): void;
97
+
98
+ /** 枚举系统字体族名(同步)。 */
99
+ getFontNames(): string[];
100
+
101
+ /** 设置额外字体目录(同步)。 */
102
+ setExtraFontLocation(location: string): void;
103
+
104
+ /** 设置日志级别(异步)。 */
105
+ setLogLevel(level: number): Promise<void>;
106
+
107
+ /** 重置组件(异步)。 */
108
+ resetComponent(refId: string): Promise<void>;
109
+
110
+ /**
111
+ * WebGL 纹理上传(同步,鸿蒙新增分支)。
112
+ * image kit 解码 RGBA 后按命令 '102,9,...' 上传纹理(对齐 Android texImage2D)。
113
+ */
114
+ texImage2D(
115
+ refId: string,
116
+ target: number,
117
+ level: number,
118
+ internalformat: number,
119
+ format: number,
120
+ type: number,
121
+ src: string,
122
+ ): void;
123
+
124
+ /** WebGL 纹理子图上传(同步,鸿蒙新增分支)。命令 '105,9,...'。 */
125
+ texSubImage2D(
126
+ refId: string,
127
+ target: number,
128
+ level: number,
129
+ xoffset: number,
130
+ yoffset: number,
131
+ format: number,
132
+ type: number,
133
+ src: string,
134
+ ): void;
135
+
136
+ /** 设置组件 alpha(异步,原实现为空壳,鸿蒙同样空实现)。 */
137
+ setAlpha(refId: string, alpha: number): Promise<void>;
138
+ }
139
+
140
+ export default TurboModuleRegistry.getEnforcing<Spec>('GCanvasModule');