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 
16 #ifndef OHOS_ACE_FRAMEWORK_FFI_CJ_TAB_H
17 #define OHOS_ACE_FRAMEWORK_FFI_CJ_TAB_H
18 
19 #include <cstdint>
20 
21 #include "bridge/cj_frontend/interfaces/cj_ffi/cj_macro.h"
22 
23 using VectorDoublePtr = void*;
24 extern "C" {
25 struct CTextMetrics {
26     double width;
27     double height;
28 };
29 
30 struct NativeImageInfo {
31     int32_t flag;
32     double sx;
33     double sy;
34     double sWidth;
35     double sHeight;
36     double dx;
37     double dy;
38     double dWidth;
39     double dHeight;
40 };
41 
42 struct TransformParams {
43     double scaleX;
44     double skewX;
45     double skewY;
46     double scaleY;
47     double translateX;
48     double translateY;
49 };
50 
51 struct ArcParams {
52     double x;
53     double y;
54     double radius;
55     double startAngle;
56     double endAngle;
57 };
58 
59 struct ArcToParams {
60     double x1;
61     double y1;
62     double x2;
63     double y2;
64     double radius;
65 };
66 
67 struct QuadraticCurveToParams {
68     double cpx;
69     double cpy;
70     double x;
71     double y;
72 };
73 
74 struct BezierCurveToParams {
75     double cp1x;
76     double cp1y;
77     double cp2x;
78     double cp2y;
79     double x;
80     double y;
81 };
82 
83 struct EllipseParams {
84     double x;
85     double y;
86     double radiusX;
87     double radiusY;
88     double rotation;
89     double startAngle;
90     double endAngle;
91 };
92 
93 struct RectParams {
94     double x;
95     double y;
96     double width;
97     double height;
98 };
99 
100 CJ_EXPORT void FfiOHOSAceFrameworkCanvasCreate(int64_t contextId);
101 CJ_EXPORT void FfiOHOSAceFrameworkCanvasOnReady(void (*callback)());
102 
103 // Rendering Context Create
104 CJ_EXPORT int64_t FfiOHOSAceFrameworkRenderingContextCtor(bool antialias);
105 
106 // Rendering Context Attribute
107 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetFillStyle(int64_t selfId, uint32_t colorValue);
108 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetFillStyleByGradient(int64_t selfId, int64_t gradientId);
109 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetLineWidth(int64_t selfId, double lineWidth);
110 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetStrokeStyle(int64_t selfId, uint32_t color);
111 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetStrokeStyleByGradient(int64_t selfId, int64_t gradientId);
112 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetLineCap(int64_t selfId, int32_t lineCap);
113 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetLineJoin(int64_t selfId, int32_t lineJoin);
114 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetMiterLimit(int64_t selfId, double limit);
115 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetFont(
116     int64_t selfId, int32_t style, const char* weight, double size, int32_t sizeUnit, const char* family);
117 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetTextAlign(int64_t selfId, int32_t align);
118 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetTextBaseline(int64_t selfId, int32_t baseline);
119 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetGlobalAlpha(int64_t selfId, double alpha);
120 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetLineDash(int64_t selfId, VectorDoublePtr lineDashArr);
121 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetLineDashOffset(int64_t selfId, double lineDashOffset);
122 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetGlobalCompositeOperation(int64_t selfId, int32_t type);
123 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetShadowBlur(int64_t selfId, double blur);
124 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetShadowColor(int64_t selfId, uint32_t color);
125 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetShadowOffsetX(int64_t selfId, double offsetX);
126 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetShadowOffsetY(int64_t selfId, double offsetY);
127 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetImageSmoothingEnabled(int64_t selfId, bool enabled);
128 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetImageSmoothingQuality(int64_t selfId, const char* quality);
129 
130 // Rendering Context Function
131 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextFillRect(
132     int64_t selfId, double x, double y, double width, double height);
133 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextStrokeRect(
134     int64_t selfId, double x, double y, double width, double height);
135 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextClearRect(
136     int64_t selfId, double x, double y, double width, double height);
137 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextFillText(int64_t selfId, double x, double y, const char* text);
138 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextStrokeText(int64_t selfId, double x, double y, const char* text);
139 CJ_EXPORT CTextMetrics FfiOHOSAceFrameworkRenderingContextMeasureText(int64_t selfId, const char* text);
140 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextStroke(int64_t selfId);
141 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextStrokeWithPath(int64_t selfId, int64_t pathId);
142 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextBeginPath(int64_t selfId);
143 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextMoveTo(int64_t selfId, double x, double y);
144 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextLineTo(int64_t selfId, double x, double y);
145 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextClosePath(int64_t selfId);
146 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextBezierCurveTo(
147     int64_t selfId, double cp1x, double cp1y, double cp2x, double cp2y, double x, double y);
148 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextQuadraticCurveTo(
149     int64_t selfId, double cpx, double cpy, double x, double y);
150 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextArc(
151     int64_t selfId, double x, double y, double radius, double startAngle, double endAngle, bool anticlockwise);
152 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextArcTo(
153     int64_t selfId, double x1, double y1, double x2, double y2, double radius);
154 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextEllipse(int64_t selfId, double x, double y, double radiusX,
155     double radiusY, double rotation, double startAngle, double endAngle, bool anticlockwise);
156 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextRect(int64_t selfId, double x, double y, double width, double height);
157 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextFill(int64_t selfId);
158 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextClip(int64_t selfId);
159 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextRotate(int64_t selfId, double angle);
160 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextScale(int64_t selfId, double x, double y);
161 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextTransform(
162     int64_t selfId, double scaleX, double scaleY, double skewX, double skewY, double translateX, double translateY);
163 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSetTransform(
164     int64_t selfId, double scaleX, double scaleY, double skewX, double skewY, double translateX, double translateY);
165 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextTranslate(int64_t selfId, double x, double y);
166 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextRestore(int64_t selfId);
167 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextSave(int64_t selfId);
168 CJ_EXPORT int64_t FfiOHOSAceFrameworkRenderingContextCreateLinearGradient(
169     int64_t selfId, double x0, double y0, double x1, double y1);
170 CJ_EXPORT int64_t FfiOHOSAceFrameworkRenderingContextCreateRadialGradient(
171     int64_t selfId, double x0, double y0, double r0, double x1, double y1, double r1);
172 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextDrawImage(
173     int64_t contextId, const char* src, NativeImageInfo imageInfo);
174 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextDrawImageWithPixelMap(
175     int64_t contextId, int64_t pixelMapId, NativeImageInfo imageInfo);
176 CJ_EXPORT int64_t FfiOHOSAceFrameworkRenderingContextGetPixelMap(
177     int64_t contextId, double fLeft, double fTop, double fWidth, double fHeight);
178 CJ_EXPORT int64_t FfiOHOSAceFrameworkRenderingContextTransferToImageBitmap(int64_t selfId);
179 CJ_EXPORT void FfiOHOSAceFrameworkRenderingContextTransferFromImageBitmap(int64_t selfId, int64_t id);
180 
181 // canvas_gradient
182 CJ_EXPORT void FfiOHOSAceFrameworkCanvasGradientAddColorStop(int64_t selfId, double offset, uint32_t color);
183 
184 // Canvas Path2d
185 CJ_EXPORT int64_t FfiOHOSAceFrameworkCanvasPathCtor();
186 CJ_EXPORT int64_t FfiOHOSAceFrameworkCanvasPathCtorWithPath(const char* path);
187 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathAddPath(int64_t selfId, int64_t pathId);
188 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathSetTransform(int64_t selfId, TransformParams params);
189 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathMoveTo(int64_t selfId, double x, double y);
190 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathLineTo(int64_t selfId, double x, double y);
191 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathArc(int64_t selfId, ArcParams params, bool anticlockwise);
192 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathArcTo(int64_t selfId, ArcToParams params);
193 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathQuadraticCurveTo(int64_t selfId, QuadraticCurveToParams params);
194 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathBezierCurveTo(int64_t selfId, BezierCurveToParams params);
195 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathEllipse(int64_t selfId, EllipseParams params, bool anticlockwise);
196 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathRect(int64_t selfId, RectParams params);
197 CJ_EXPORT void FfiOHOSAceFrameworkCanvasPathClosePath(int64_t selfId);
198 }
199 #endif
200