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