17777dab0Sopenharmony_ci/* 27777dab0Sopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 37777dab0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47777dab0Sopenharmony_ci * you may not use this file except in compliance with the License. 57777dab0Sopenharmony_ci * You may obtain a copy of the License at 67777dab0Sopenharmony_ci * 77777dab0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87777dab0Sopenharmony_ci * 97777dab0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107777dab0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117777dab0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127777dab0Sopenharmony_ci * See the License for the specific language governing permissions and 137777dab0Sopenharmony_ci * limitations under the License. 147777dab0Sopenharmony_ci */ 157777dab0Sopenharmony_ci 167777dab0Sopenharmony_ci#ifndef C_INCLUDE_DRAWING_H 177777dab0Sopenharmony_ci#define C_INCLUDE_DRAWING_H 187777dab0Sopenharmony_ci 197777dab0Sopenharmony_ci/** 207777dab0Sopenharmony_ci * @addtogroup Drawing 217777dab0Sopenharmony_ci * @{ 227777dab0Sopenharmony_ci * 237777dab0Sopenharmony_ci * @brief Provides functions such as 2D graphics rendering, text drawing, and image display. 247777dab0Sopenharmony_ci * 257777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 267777dab0Sopenharmony_ci * 277777dab0Sopenharmony_ci * @since 8 287777dab0Sopenharmony_ci * @version 1.0 297777dab0Sopenharmony_ci */ 307777dab0Sopenharmony_ci 317777dab0Sopenharmony_ci/** 327777dab0Sopenharmony_ci * @file drawing_canvas.h 337777dab0Sopenharmony_ci * 347777dab0Sopenharmony_ci * @brief Declares functions related to the <b>canvas</b> object in the drawing module. 357777dab0Sopenharmony_ci * 367777dab0Sopenharmony_ci * @kit ArkGraphics2D 377777dab0Sopenharmony_ci * @library libnative_drawing.so 387777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 397777dab0Sopenharmony_ci * @since 8 407777dab0Sopenharmony_ci * @version 1.0 417777dab0Sopenharmony_ci */ 427777dab0Sopenharmony_ci 437777dab0Sopenharmony_ci#include "drawing_error_code.h" 447777dab0Sopenharmony_ci#include "drawing_types.h" 457777dab0Sopenharmony_ci 467777dab0Sopenharmony_ci#ifdef __cplusplus 477777dab0Sopenharmony_ciextern "C" { 487777dab0Sopenharmony_ci#endif 497777dab0Sopenharmony_ci 507777dab0Sopenharmony_ci/** 517777dab0Sopenharmony_ci * @brief Enumeration defines the constraint type. 527777dab0Sopenharmony_ci * 537777dab0Sopenharmony_ci * @since 12 547777dab0Sopenharmony_ci * @version 1.0 557777dab0Sopenharmony_ci */ 567777dab0Sopenharmony_citypedef enum { 577777dab0Sopenharmony_ci /** 587777dab0Sopenharmony_ci * Using sampling only inside bounds in a slower manner. 597777dab0Sopenharmony_ci */ 607777dab0Sopenharmony_ci STRICT_SRC_RECT_CONSTRAINT, 617777dab0Sopenharmony_ci /** 627777dab0Sopenharmony_ci * Using sampling outside bounds in a faster manner. 637777dab0Sopenharmony_ci */ 647777dab0Sopenharmony_ci FAST_SRC_RECT_CONSTRAINT, 657777dab0Sopenharmony_ci} OH_Drawing_SrcRectConstraint; 667777dab0Sopenharmony_ci 677777dab0Sopenharmony_ci/** 687777dab0Sopenharmony_ci * @brief Creates an <b>OH_Drawing_Canvas</b> object. 697777dab0Sopenharmony_ci * 707777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 717777dab0Sopenharmony_ci * @return Returns the pointer to the <b>OH_Drawing_Canvas</b> object created. 727777dab0Sopenharmony_ci * @since 8 737777dab0Sopenharmony_ci * @version 1.0 747777dab0Sopenharmony_ci */ 757777dab0Sopenharmony_ciOH_Drawing_Canvas* OH_Drawing_CanvasCreate(void); 767777dab0Sopenharmony_ci 777777dab0Sopenharmony_ci/** 787777dab0Sopenharmony_ci * @brief Destroys an <b>OH_Drawing_Canvas</b> object and reclaims the memory occupied by the object. 797777dab0Sopenharmony_ci * 807777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 817777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 827777dab0Sopenharmony_ci * @since 8 837777dab0Sopenharmony_ci * @version 1.0 847777dab0Sopenharmony_ci */ 857777dab0Sopenharmony_civoid OH_Drawing_CanvasDestroy(OH_Drawing_Canvas*); 867777dab0Sopenharmony_ci 877777dab0Sopenharmony_ci/** 887777dab0Sopenharmony_ci * @brief Binds a bitmap to a canvas so that the content drawn on the canvas 897777dab0Sopenharmony_ci * is output to the bitmap (this process is called CPU rendering). 907777dab0Sopenharmony_ci * 917777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 927777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 937777dab0Sopenharmony_ci * @param OH_Drawing_Bitmap Indicates the pointer to an <b>OH_Drawing_Bitmap</b> object. 947777dab0Sopenharmony_ci * @since 8 957777dab0Sopenharmony_ci * @version 1.0 967777dab0Sopenharmony_ci */ 977777dab0Sopenharmony_civoid OH_Drawing_CanvasBind(OH_Drawing_Canvas*, OH_Drawing_Bitmap*); 987777dab0Sopenharmony_ci 997777dab0Sopenharmony_ci/** 1007777dab0Sopenharmony_ci * @brief Attaches a pen to a canvas so that the canvas will use the style and color of the pen to outline a shape. 1017777dab0Sopenharmony_ci * 1027777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1037777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1047777dab0Sopenharmony_ci * @param OH_Drawing_Pen Indicates the pointer to an <b>OH_Drawing_Pen</b> object. 1057777dab0Sopenharmony_ci * @since 8 1067777dab0Sopenharmony_ci * @version 1.0 1077777dab0Sopenharmony_ci */ 1087777dab0Sopenharmony_civoid OH_Drawing_CanvasAttachPen(OH_Drawing_Canvas*, const OH_Drawing_Pen*); 1097777dab0Sopenharmony_ci 1107777dab0Sopenharmony_ci/** 1117777dab0Sopenharmony_ci * @brief Detaches the pen from a canvas so that the canvas will not use the style 1127777dab0Sopenharmony_ci * and color of the pen to outline a shape. 1137777dab0Sopenharmony_ci * 1147777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1157777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1167777dab0Sopenharmony_ci * @since 8 1177777dab0Sopenharmony_ci * @version 1.0 1187777dab0Sopenharmony_ci */ 1197777dab0Sopenharmony_civoid OH_Drawing_CanvasDetachPen(OH_Drawing_Canvas*); 1207777dab0Sopenharmony_ci 1217777dab0Sopenharmony_ci/** 1227777dab0Sopenharmony_ci * @brief Attaches a brush to a canvas so that the canvas will use the style and color of the brush to fill in a shape. 1237777dab0Sopenharmony_ci * 1247777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1257777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1267777dab0Sopenharmony_ci * @param OH_Drawing_Brush Indicates the pointer to an <b>OH_Drawing_Brush</b> object. 1277777dab0Sopenharmony_ci * @since 8 1287777dab0Sopenharmony_ci * @version 1.0 1297777dab0Sopenharmony_ci */ 1307777dab0Sopenharmony_civoid OH_Drawing_CanvasAttachBrush(OH_Drawing_Canvas*, const OH_Drawing_Brush*); 1317777dab0Sopenharmony_ci 1327777dab0Sopenharmony_ci/** 1337777dab0Sopenharmony_ci * @brief Detaches the brush from a canvas so that the canvas will not use the style 1347777dab0Sopenharmony_ci * and color of the brush to fill in a shape. 1357777dab0Sopenharmony_ci * 1367777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1377777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1387777dab0Sopenharmony_ci * @since 8 1397777dab0Sopenharmony_ci * @version 1.0 1407777dab0Sopenharmony_ci */ 1417777dab0Sopenharmony_civoid OH_Drawing_CanvasDetachBrush(OH_Drawing_Canvas*); 1427777dab0Sopenharmony_ci 1437777dab0Sopenharmony_ci/** 1447777dab0Sopenharmony_ci * @brief Saves the current canvas status (canvas matrix) to the top of the stack. 1457777dab0Sopenharmony_ci * 1467777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1477777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1487777dab0Sopenharmony_ci * @since 8 1497777dab0Sopenharmony_ci * @version 1.0 1507777dab0Sopenharmony_ci */ 1517777dab0Sopenharmony_civoid OH_Drawing_CanvasSave(OH_Drawing_Canvas*); 1527777dab0Sopenharmony_ci 1537777dab0Sopenharmony_ci/** 1547777dab0Sopenharmony_ci * @brief Saves matrix and clip, and allocates a bitmap for subsequent drawing. 1557777dab0Sopenharmony_ci * Calling restore discards changes to matrix and clip, and draws the bitmap. 1567777dab0Sopenharmony_ci * 1577777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1587777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1597777dab0Sopenharmony_ci * @param OH_Drawing_Rect Indicates the pointer to an <b>OH_Drawing_Rect</b> object. 1607777dab0Sopenharmony_ci * @param OH_Drawing_Brush Indicates the pointer to an <b>OH_Drawing_Brush</b> object. 1617777dab0Sopenharmony_ci * @since 12 1627777dab0Sopenharmony_ci * @version 1.0 1637777dab0Sopenharmony_ci */ 1647777dab0Sopenharmony_civoid OH_Drawing_CanvasSaveLayer(OH_Drawing_Canvas*, const OH_Drawing_Rect*, const OH_Drawing_Brush*); 1657777dab0Sopenharmony_ci 1667777dab0Sopenharmony_ci/** 1677777dab0Sopenharmony_ci * @brief Restores the canvas status (canvas matrix) saved on the top of the stack. 1687777dab0Sopenharmony_ci * 1697777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1707777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1717777dab0Sopenharmony_ci * @since 8 1727777dab0Sopenharmony_ci * @version 1.0 1737777dab0Sopenharmony_ci */ 1747777dab0Sopenharmony_civoid OH_Drawing_CanvasRestore(OH_Drawing_Canvas*); 1757777dab0Sopenharmony_ci 1767777dab0Sopenharmony_ci/** 1777777dab0Sopenharmony_ci * @brief Gets the number of the canvas status (canvas matrix) saved in the stack. 1787777dab0Sopenharmony_ci * 1797777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1807777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1817777dab0Sopenharmony_ci * @return Returns a 32-bit variable that describes the number of canvas status. 1827777dab0Sopenharmony_ci * @since 11 1837777dab0Sopenharmony_ci * @version 1.0 1847777dab0Sopenharmony_ci */ 1857777dab0Sopenharmony_ciuint32_t OH_Drawing_CanvasGetSaveCount(OH_Drawing_Canvas*); 1867777dab0Sopenharmony_ci 1877777dab0Sopenharmony_ci/** 1887777dab0Sopenharmony_ci * @brief Restores the specific number of the canvas status (canvas matrix) saved in the stack. 1897777dab0Sopenharmony_ci * 1907777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1917777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 1927777dab0Sopenharmony_ci * @param saveCount Indicates the specific number of canvas status. 1937777dab0Sopenharmony_ci * @since 11 1947777dab0Sopenharmony_ci * @version 1.0 1957777dab0Sopenharmony_ci */ 1967777dab0Sopenharmony_civoid OH_Drawing_CanvasRestoreToCount(OH_Drawing_Canvas*, uint32_t saveCount); 1977777dab0Sopenharmony_ci 1987777dab0Sopenharmony_ci/** 1997777dab0Sopenharmony_ci * @brief Draws a line segment. 2007777dab0Sopenharmony_ci * 2017777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 2027777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 2037777dab0Sopenharmony_ci * @param x1 Indicates the x coordinate of the start point of the line segment. 2047777dab0Sopenharmony_ci * @param y1 Indicates the y coordinate of the start point of the line segment. 2057777dab0Sopenharmony_ci * @param x2 Indicates the x coordinate of the end point of the line segment. 2067777dab0Sopenharmony_ci * @param y2 Indicates the y coordinate of the end point of the line segment. 2077777dab0Sopenharmony_ci * @since 8 2087777dab0Sopenharmony_ci * @version 1.0 2097777dab0Sopenharmony_ci */ 2107777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawLine(OH_Drawing_Canvas*, float x1, float y1, float x2, float y2); 2117777dab0Sopenharmony_ci 2127777dab0Sopenharmony_ci/** 2137777dab0Sopenharmony_ci * @brief Draws a path. 2147777dab0Sopenharmony_ci * 2157777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 2167777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 2177777dab0Sopenharmony_ci * @param OH_Drawing_Path Indicates the pointer to an <b>OH_Drawing_Path</b> object. 2187777dab0Sopenharmony_ci * @since 8 2197777dab0Sopenharmony_ci * @version 1.0 2207777dab0Sopenharmony_ci */ 2217777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawPath(OH_Drawing_Canvas*, const OH_Drawing_Path*); 2227777dab0Sopenharmony_ci 2237777dab0Sopenharmony_ci/** 2247777dab0Sopenharmony_ci * @brief Draw the specified area of the Media::PixelMap to the specified area of the canvas. 2257777dab0Sopenharmony_ci * 2267777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 2277777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 2287777dab0Sopenharmony_ci * @param OH_Drawing_PixelMap Indicates the pointer to an <b>OH_Drawing_PixelMap</b> object. 2297777dab0Sopenharmony_ci * @param src the area of source pixelmap. 2307777dab0Sopenharmony_ci * @param dst the area of destination canvas. 2317777dab0Sopenharmony_ci * @param OH_Drawing_SamplingOptions the sampling mode. 2327777dab0Sopenharmony_ci * @since 12 2337777dab0Sopenharmony_ci * @version 1.0 2347777dab0Sopenharmony_ci */ 2357777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawPixelMapRect(OH_Drawing_Canvas*, OH_Drawing_PixelMap*, const OH_Drawing_Rect* src, 2367777dab0Sopenharmony_ci const OH_Drawing_Rect* dst, const OH_Drawing_SamplingOptions*); 2377777dab0Sopenharmony_ci 2387777dab0Sopenharmony_ci/** 2397777dab0Sopenharmony_ci * @brief Fills clipped canvas area with brush. 2407777dab0Sopenharmony_ci * 2417777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 2427777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 2437777dab0Sopenharmony_ci * @param OH_Drawing_Brush Indicates the pointer to an <b>OH_Drawing_Brush</b> object. 2447777dab0Sopenharmony_ci * @since 12 2457777dab0Sopenharmony_ci * @version 1.0 2467777dab0Sopenharmony_ci */ 2477777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawBackground(OH_Drawing_Canvas*, const OH_Drawing_Brush*); 2487777dab0Sopenharmony_ci 2497777dab0Sopenharmony_ci/** 2507777dab0Sopenharmony_ci * @brief Draws region using clip, matrix and paint. 2517777dab0Sopenharmony_ci * 2527777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 2537777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 2547777dab0Sopenharmony_ci * @param OH_Drawing_Region Indicates the pointer to an <b>OH_Drawing_Region</b> object. 2557777dab0Sopenharmony_ci * @since 12 2567777dab0Sopenharmony_ci * @version 1.0 2577777dab0Sopenharmony_ci */ 2587777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawRegion(OH_Drawing_Canvas*, const OH_Drawing_Region*); 2597777dab0Sopenharmony_ci 2607777dab0Sopenharmony_ci/** 2617777dab0Sopenharmony_ci * @brief Enumerates of scale to fit flags, selects if an array of points are drawn as discrete points, as lines, 2627777dab0Sopenharmony_ci * or as an open polygon. 2637777dab0Sopenharmony_ci * 2647777dab0Sopenharmony_ci * @since 12 2657777dab0Sopenharmony_ci * @version 1.0 2667777dab0Sopenharmony_ci */ 2677777dab0Sopenharmony_citypedef enum { 2687777dab0Sopenharmony_ci /** 2697777dab0Sopenharmony_ci * Draw each point separately. 2707777dab0Sopenharmony_ci */ 2717777dab0Sopenharmony_ci POINT_MODE_POINTS, 2727777dab0Sopenharmony_ci /** 2737777dab0Sopenharmony_ci * Draw each pair of points as a line segment. 2747777dab0Sopenharmony_ci */ 2757777dab0Sopenharmony_ci POINT_MODE_LINES, 2767777dab0Sopenharmony_ci /** 2777777dab0Sopenharmony_ci * Draw the array of points as a open polygon. 2787777dab0Sopenharmony_ci */ 2797777dab0Sopenharmony_ci POINT_MODE_POLYGON, 2807777dab0Sopenharmony_ci} OH_Drawing_PointMode; 2817777dab0Sopenharmony_ci 2827777dab0Sopenharmony_ci/** 2837777dab0Sopenharmony_ci * @brief Draws a point. 2847777dab0Sopenharmony_ci * 2857777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 2867777dab0Sopenharmony_ci * @param canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 2877777dab0Sopenharmony_ci * @param point Indicates the pointer to an <b>OH_Drawing_Point</b> object. 2887777dab0Sopenharmony_ci * @return Returns the error code. 2897777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful. 2907777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if canvas or point is nullptr. 2917777dab0Sopenharmony_ci * @since 12 2927777dab0Sopenharmony_ci * @version 1.0 2937777dab0Sopenharmony_ci */ 2947777dab0Sopenharmony_ciOH_Drawing_ErrorCode OH_Drawing_CanvasDrawPoint(OH_Drawing_Canvas* canvas, const OH_Drawing_Point2D* point); 2957777dab0Sopenharmony_ci 2967777dab0Sopenharmony_ci/** 2977777dab0Sopenharmony_ci * @brief Draws point array as separate point, line segment or open polygon according to given point mode. 2987777dab0Sopenharmony_ci * 2997777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 3007777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 3017777dab0Sopenharmony_ci * @param mode Draw points enum. 3027777dab0Sopenharmony_ci * @param count The point count. 3037777dab0Sopenharmony_ci * @param OH_Drawing_Point2D Point struct array. 3047777dab0Sopenharmony_ci * @since 12 3057777dab0Sopenharmony_ci * @version 1.0 3067777dab0Sopenharmony_ci */ 3077777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawPoints(OH_Drawing_Canvas*, OH_Drawing_PointMode mode, 3087777dab0Sopenharmony_ci uint32_t count, const OH_Drawing_Point2D*); 3097777dab0Sopenharmony_ci 3107777dab0Sopenharmony_ci/** 3117777dab0Sopenharmony_ci * @brief Draws a bitmap. 3127777dab0Sopenharmony_ci * 3137777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 3147777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 3157777dab0Sopenharmony_ci * @param OH_Drawing_Bitmap Indicates the pointer to an <b>OH_Drawing_Bitmap</b> object. 3167777dab0Sopenharmony_ci * @param left Indicates the left position of the <b>OH_Drawing_Bitmap</b>. 3177777dab0Sopenharmony_ci * @param top Indicates the top position of the <b>OH_Drawing_Bitmap</b>. 3187777dab0Sopenharmony_ci * @since 11 3197777dab0Sopenharmony_ci * @version 1.0 3207777dab0Sopenharmony_ci */ 3217777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawBitmap(OH_Drawing_Canvas*, const OH_Drawing_Bitmap*, float left, float top); 3227777dab0Sopenharmony_ci 3237777dab0Sopenharmony_ci/** 3247777dab0Sopenharmony_ci * @brief Draw the specified area of the bitmap to the specified area of the canvas. 3257777dab0Sopenharmony_ci * 3267777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 3277777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 3287777dab0Sopenharmony_ci * @param OH_Drawing_Bitmap Indicates the pointer to an <b>OH_Drawing_Bitmap</b> object. 3297777dab0Sopenharmony_ci * @param src the area of source bitmap, can be nullptr. 3307777dab0Sopenharmony_ci * @param dst the area of destination canvas. 3317777dab0Sopenharmony_ci * @param OH_Drawing_SamplingOptions the sampling mode. 3327777dab0Sopenharmony_ci * @since 12 3337777dab0Sopenharmony_ci * @version 1.0 3347777dab0Sopenharmony_ci */ 3357777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawBitmapRect(OH_Drawing_Canvas*, const OH_Drawing_Bitmap*, const OH_Drawing_Rect* src, 3367777dab0Sopenharmony_ci const OH_Drawing_Rect* dst, const OH_Drawing_SamplingOptions*); 3377777dab0Sopenharmony_ci 3387777dab0Sopenharmony_ci/** 3397777dab0Sopenharmony_ci * @brief Draws a rect. 3407777dab0Sopenharmony_ci * 3417777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 3427777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 3437777dab0Sopenharmony_ci * @param OH_Drawing_Rect Indicates the pointer to an <b>OH_Drawing_Rect</b> object. 3447777dab0Sopenharmony_ci * @since 11 3457777dab0Sopenharmony_ci * @version 1.0 3467777dab0Sopenharmony_ci */ 3477777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawRect(OH_Drawing_Canvas*, const OH_Drawing_Rect*); 3487777dab0Sopenharmony_ci 3497777dab0Sopenharmony_ci/** 3507777dab0Sopenharmony_ci * @brief Draws a circle. 3517777dab0Sopenharmony_ci * 3527777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 3537777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 3547777dab0Sopenharmony_ci * @param OH_Drawing_Point Indicates the pointer to an <b>OH_Drawing_Point</b> object. 3557777dab0Sopenharmony_ci * @param radius Indicates the radius of the circle. 3567777dab0Sopenharmony_ci * @since 11 3577777dab0Sopenharmony_ci * @version 1.0 3587777dab0Sopenharmony_ci */ 3597777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawCircle(OH_Drawing_Canvas*, const OH_Drawing_Point*, float radius); 3607777dab0Sopenharmony_ci 3617777dab0Sopenharmony_ci/** 3627777dab0Sopenharmony_ci * @brief Fills the entire canvas with the specified color and blend mode. 3637777dab0Sopenharmony_ci * 3647777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 3657777dab0Sopenharmony_ci * @param canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 3667777dab0Sopenharmony_ci * @param color Indicates the color, which is a 32-bit variable. 3677777dab0Sopenharmony_ci * @param blendMode Indicates the blend mode. 3687777dab0Sopenharmony_ci * @return Returns the error code. 3697777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful. 3707777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if canvas is nullptr. 3717777dab0Sopenharmony_ci * @since 12 3727777dab0Sopenharmony_ci * @version 1.0 3737777dab0Sopenharmony_ci */ 3747777dab0Sopenharmony_ciOH_Drawing_ErrorCode OH_Drawing_CanvasDrawColor(OH_Drawing_Canvas* canvas, uint32_t color, 3757777dab0Sopenharmony_ci OH_Drawing_BlendMode blendMode); 3767777dab0Sopenharmony_ci 3777777dab0Sopenharmony_ci/** 3787777dab0Sopenharmony_ci * @brief Draws an oval. 3797777dab0Sopenharmony_ci * 3807777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 3817777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 3827777dab0Sopenharmony_ci * @param OH_Drawing_Rect Indicates the pointer to an <b>OH_Drawing_Rect</b> object. 3837777dab0Sopenharmony_ci * @since 11 3847777dab0Sopenharmony_ci * @version 1.0 3857777dab0Sopenharmony_ci */ 3867777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawOval(OH_Drawing_Canvas*, const OH_Drawing_Rect*); 3877777dab0Sopenharmony_ci 3887777dab0Sopenharmony_ci/** 3897777dab0Sopenharmony_ci * @brief Draws an arc. 3907777dab0Sopenharmony_ci * 3917777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 3927777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 3937777dab0Sopenharmony_ci * @param OH_Drawing_Rect Indicates the pointer to an <b>OH_Drawing_Rect</b> object. 3947777dab0Sopenharmony_ci * @param startAngle Indicates the startAngle of the arc. 3957777dab0Sopenharmony_ci * @param sweepAngle Indicates the sweepAngle of the arc. 3967777dab0Sopenharmony_ci * @since 11 3977777dab0Sopenharmony_ci * @version 1.0 3987777dab0Sopenharmony_ci */ 3997777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawArc(OH_Drawing_Canvas*, const OH_Drawing_Rect*, float startAngle, float sweepAngle); 4007777dab0Sopenharmony_ci 4017777dab0Sopenharmony_ci/** 4027777dab0Sopenharmony_ci * @brief Draws a roundrect. 4037777dab0Sopenharmony_ci * 4047777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 4057777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 4067777dab0Sopenharmony_ci * @param OH_Drawing_RoundRect Indicates the pointer to an <b>OH_Drawing_RoundRect</b> object. 4077777dab0Sopenharmony_ci * @since 11 4087777dab0Sopenharmony_ci * @version 1.0 4097777dab0Sopenharmony_ci */ 4107777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawRoundRect(OH_Drawing_Canvas*, const OH_Drawing_RoundRect*); 4117777dab0Sopenharmony_ci 4127777dab0Sopenharmony_ci/** 4137777dab0Sopenharmony_ci * @brief Draws a single character. 4147777dab0Sopenharmony_ci * 4157777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 4167777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 4177777dab0Sopenharmony_ci * @param str Indicates the single character encoded in UTF-8. 4187777dab0Sopenharmony_ci * @param OH_Drawing_Font Indicates the pointer to an <b>OH_Drawing_Font</b> object. 4197777dab0Sopenharmony_ci * @param x Indicates the horizontal offset applied to the single character. 4207777dab0Sopenharmony_ci * @param y Indicates the vertical offset applied to the single character. 4217777dab0Sopenharmony_ci * @return Returns the error code. 4227777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful. 4237777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if any of canvas, str 4247777dab0Sopenharmony_ci * and font is nullptr or strlen(str) is 0. 4257777dab0Sopenharmony_ci * @since 12 4267777dab0Sopenharmony_ci * @version 1.0 4277777dab0Sopenharmony_ci */ 4287777dab0Sopenharmony_ciOH_Drawing_ErrorCode OH_Drawing_CanvasDrawSingleCharacter(OH_Drawing_Canvas* canvas, const char* str, 4297777dab0Sopenharmony_ci const OH_Drawing_Font* font, float x, float y); 4307777dab0Sopenharmony_ci 4317777dab0Sopenharmony_ci/** 4327777dab0Sopenharmony_ci * @brief Draws a textblob. 4337777dab0Sopenharmony_ci * 4347777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 4357777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 4367777dab0Sopenharmony_ci * @param OH_Drawing_TextBlob Indicates the pointer to an <b>OH_Drawing_TextBlob</b> object. 4377777dab0Sopenharmony_ci * @param x Indicates the horizontal offset applied to blob. 4387777dab0Sopenharmony_ci * @param y Indicates the vertical offset applied to blob. 4397777dab0Sopenharmony_ci * @since 11 4407777dab0Sopenharmony_ci * @version 1.0 4417777dab0Sopenharmony_ci */ 4427777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawTextBlob(OH_Drawing_Canvas*, const OH_Drawing_TextBlob*, float x, float y); 4437777dab0Sopenharmony_ci 4447777dab0Sopenharmony_ci/** 4457777dab0Sopenharmony_ci * @brief Enumerates clip op. 4467777dab0Sopenharmony_ci * 4477777dab0Sopenharmony_ci * @since 11 4487777dab0Sopenharmony_ci * @version 1.0 4497777dab0Sopenharmony_ci */ 4507777dab0Sopenharmony_citypedef enum { 4517777dab0Sopenharmony_ci /** 4527777dab0Sopenharmony_ci * Clip with difference. 4537777dab0Sopenharmony_ci */ 4547777dab0Sopenharmony_ci DIFFERENCE, 4557777dab0Sopenharmony_ci /** 4567777dab0Sopenharmony_ci * Clip with intersection. 4577777dab0Sopenharmony_ci */ 4587777dab0Sopenharmony_ci INTERSECT, 4597777dab0Sopenharmony_ci} OH_Drawing_CanvasClipOp; 4607777dab0Sopenharmony_ci 4617777dab0Sopenharmony_ci/** 4627777dab0Sopenharmony_ci * @brief Clip a rect. 4637777dab0Sopenharmony_ci * 4647777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 4657777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 4667777dab0Sopenharmony_ci * @param OH_Drawing_Rect Indicates the pointer to an <b>OH_Drawing_Rect</b> object. 4677777dab0Sopenharmony_ci * @param clipOp Indicates the operation to apply to clip. 4687777dab0Sopenharmony_ci * @param doAntiAlias Indicates whether clip operation requires anti-aliased. 4697777dab0Sopenharmony_ci * @since 11 4707777dab0Sopenharmony_ci * @version 1.0 4717777dab0Sopenharmony_ci */ 4727777dab0Sopenharmony_civoid OH_Drawing_CanvasClipRect(OH_Drawing_Canvas*, const OH_Drawing_Rect*, 4737777dab0Sopenharmony_ci OH_Drawing_CanvasClipOp clipOp, bool doAntiAlias); 4747777dab0Sopenharmony_ci 4757777dab0Sopenharmony_ci/** 4767777dab0Sopenharmony_ci * @brief Clip a round rect. 4777777dab0Sopenharmony_ci * 4787777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 4797777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 4807777dab0Sopenharmony_ci * @param OH_Drawing_RoundRect Indicates the pointer to an <b>OH_Drawing_RoundRect</b> object. 4817777dab0Sopenharmony_ci * @param clipOp Indicates the operation to apply to clip. 4827777dab0Sopenharmony_ci * @param doAntiAlias Indicates whether clip operation requires anti-aliased. 4837777dab0Sopenharmony_ci * @since 12 4847777dab0Sopenharmony_ci * @version 1.0 4857777dab0Sopenharmony_ci */ 4867777dab0Sopenharmony_civoid OH_Drawing_CanvasClipRoundRect(OH_Drawing_Canvas*, const OH_Drawing_RoundRect*, 4877777dab0Sopenharmony_ci OH_Drawing_CanvasClipOp clipOp, bool doAntiAlias); 4887777dab0Sopenharmony_ci 4897777dab0Sopenharmony_ci/** 4907777dab0Sopenharmony_ci * @brief Clip a path. 4917777dab0Sopenharmony_ci * 4927777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 4937777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 4947777dab0Sopenharmony_ci * @param OH_Drawing_Path Indicates the pointer to an <b>OH_Drawing_Path</b> object. 4957777dab0Sopenharmony_ci * @param clipOp Indicates the operation to apply to clip. 4967777dab0Sopenharmony_ci * @param doAntiAlias Indicates whether clip operation requires anti-aliased. 4977777dab0Sopenharmony_ci * @since 11 4987777dab0Sopenharmony_ci * @version 1.0 4997777dab0Sopenharmony_ci */ 5007777dab0Sopenharmony_civoid OH_Drawing_CanvasClipPath(OH_Drawing_Canvas*, const OH_Drawing_Path*, 5017777dab0Sopenharmony_ci OH_Drawing_CanvasClipOp clipOp, bool doAntiAlias); 5027777dab0Sopenharmony_ci 5037777dab0Sopenharmony_ci/** 5047777dab0Sopenharmony_ci * @brief Clips a region. 5057777dab0Sopenharmony_ci * 5067777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 5077777dab0Sopenharmony_ci * @param canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 5087777dab0Sopenharmony_ci * @param region Indicates the pointer to an <b>OH_Drawing_Region</b> object. 5097777dab0Sopenharmony_ci * @param clipOp To apply to clip. 5107777dab0Sopenharmony_ci * @return Returns the error code. 5117777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful. 5127777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if canvas or region is nullptr. 5137777dab0Sopenharmony_ci * @since 12 5147777dab0Sopenharmony_ci * @version 1.0 5157777dab0Sopenharmony_ci */ 5167777dab0Sopenharmony_ciOH_Drawing_ErrorCode OH_Drawing_CanvasClipRegion(OH_Drawing_Canvas* canvas, const OH_Drawing_Region* region, 5177777dab0Sopenharmony_ci OH_Drawing_CanvasClipOp clipOp); 5187777dab0Sopenharmony_ci 5197777dab0Sopenharmony_ci/** 5207777dab0Sopenharmony_ci * @brief Rotates by degrees. Positive degrees rotates clockwise. 5217777dab0Sopenharmony_ci * 5227777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 5237777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 5247777dab0Sopenharmony_ci * @param degrees Indicates the amount to rotate, in degrees. 5257777dab0Sopenharmony_ci * @param px Indicates the x-axis value of the point to rotate about. 5267777dab0Sopenharmony_ci * @param py Indicates the y-axis value of the point to rotate about. 5277777dab0Sopenharmony_ci * @since 11 5287777dab0Sopenharmony_ci * @version 1.0 5297777dab0Sopenharmony_ci */ 5307777dab0Sopenharmony_civoid OH_Drawing_CanvasRotate(OH_Drawing_Canvas*, float degrees, float px, float py); 5317777dab0Sopenharmony_ci 5327777dab0Sopenharmony_ci/** 5337777dab0Sopenharmony_ci * @brief Translates by dx along the x-axis and dy along the y-axis. 5347777dab0Sopenharmony_ci * 5357777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 5367777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 5377777dab0Sopenharmony_ci * @param dx Indicates the distance to translate on x-axis. 5387777dab0Sopenharmony_ci * @param dy Indicates the distance to translate on y-axis. 5397777dab0Sopenharmony_ci * @since 11 5407777dab0Sopenharmony_ci * @version 1.0 5417777dab0Sopenharmony_ci */ 5427777dab0Sopenharmony_civoid OH_Drawing_CanvasTranslate(OH_Drawing_Canvas*, float dx, float dy); 5437777dab0Sopenharmony_ci 5447777dab0Sopenharmony_ci/** 5457777dab0Sopenharmony_ci * @brief Scales by sx on the x-axis and sy on the y-axis. 5467777dab0Sopenharmony_ci * 5477777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 5487777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 5497777dab0Sopenharmony_ci * @param sx Indicates the amount to scale on x-axis. 5507777dab0Sopenharmony_ci * @param sy Indicates the amount to scale on y-axis. 5517777dab0Sopenharmony_ci * @since 11 5527777dab0Sopenharmony_ci * @version 1.0 5537777dab0Sopenharmony_ci */ 5547777dab0Sopenharmony_civoid OH_Drawing_CanvasScale(OH_Drawing_Canvas*, float sx, float sy); 5557777dab0Sopenharmony_ci 5567777dab0Sopenharmony_ci/** 5577777dab0Sopenharmony_ci * @brief Skew by sx on the x-axis and sy on the y-axis. 5587777dab0Sopenharmony_ci * 5597777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 5607777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 5617777dab0Sopenharmony_ci * @param sx Indicates the amount to skew on x-axis. 5627777dab0Sopenharmony_ci * @param sy Indicates the amount to skew on y-axis. 5637777dab0Sopenharmony_ci * @since 12 5647777dab0Sopenharmony_ci * @version 1.0 5657777dab0Sopenharmony_ci */ 5667777dab0Sopenharmony_civoid OH_Drawing_CanvasSkew(OH_Drawing_Canvas*, float sx, float sy); 5677777dab0Sopenharmony_ci 5687777dab0Sopenharmony_ci/** 5697777dab0Sopenharmony_ci * @brief Get the width of a canvas. 5707777dab0Sopenharmony_ci * 5717777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 5727777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 5737777dab0Sopenharmony_ci * @since 12 5747777dab0Sopenharmony_ci * @version 1.0 5757777dab0Sopenharmony_ci */ 5767777dab0Sopenharmony_ciint32_t OH_Drawing_CanvasGetWidth(OH_Drawing_Canvas*); 5777777dab0Sopenharmony_ci 5787777dab0Sopenharmony_ci/** 5797777dab0Sopenharmony_ci * @brief Get the height of a canvas. 5807777dab0Sopenharmony_ci * 5817777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 5827777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 5837777dab0Sopenharmony_ci * @since 12 5847777dab0Sopenharmony_ci * @version 1.0 5857777dab0Sopenharmony_ci */ 5867777dab0Sopenharmony_ciint32_t OH_Drawing_CanvasGetHeight(OH_Drawing_Canvas*); 5877777dab0Sopenharmony_ci 5887777dab0Sopenharmony_ci/** 5897777dab0Sopenharmony_ci * @brief Get the bounds of clip of a canvas. 5907777dab0Sopenharmony_ci * 5917777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 5927777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 5937777dab0Sopenharmony_ci * @param OH_Drawing_Rect Indicates the pointer to an <b>OH_Drawing_Rect</b> object. 5947777dab0Sopenharmony_ci * @since 12 5957777dab0Sopenharmony_ci * @version 1.0 5967777dab0Sopenharmony_ci */ 5977777dab0Sopenharmony_civoid OH_Drawing_CanvasGetLocalClipBounds(OH_Drawing_Canvas*, OH_Drawing_Rect*); 5987777dab0Sopenharmony_ci 5997777dab0Sopenharmony_ci/** 6007777dab0Sopenharmony_ci * @brief Get a 3x3 matrix of the transform from local coordinates to 'device'. 6017777dab0Sopenharmony_ci * 6027777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 6037777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 6047777dab0Sopenharmony_ci * @param OH_Drawing_Matrix Indicates the pointer to an <b>OH_Drawing_Matrix</b> object. 6057777dab0Sopenharmony_ci * @since 12 6067777dab0Sopenharmony_ci * @version 1.0 6077777dab0Sopenharmony_ci */ 6087777dab0Sopenharmony_civoid OH_Drawing_CanvasGetTotalMatrix(OH_Drawing_Canvas*, OH_Drawing_Matrix*); 6097777dab0Sopenharmony_ci 6107777dab0Sopenharmony_ci/** 6117777dab0Sopenharmony_ci * @brief Use the passed matrix to transforming the geometry, then use existing matrix. 6127777dab0Sopenharmony_ci * 6137777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 6147777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 6157777dab0Sopenharmony_ci * @param OH_Drawing_Matrix Indicates the pointer to an <b>OH_Drawing_Matrix</b> object, 6167777dab0Sopenharmony_ci * represents the matrix which is passed. 6177777dab0Sopenharmony_ci * @since 12 6187777dab0Sopenharmony_ci * @version 1.0 6197777dab0Sopenharmony_ci */ 6207777dab0Sopenharmony_civoid OH_Drawing_CanvasConcatMatrix(OH_Drawing_Canvas*, OH_Drawing_Matrix*); 6217777dab0Sopenharmony_ci 6227777dab0Sopenharmony_ci/** 6237777dab0Sopenharmony_ci * @brief Enumerates of shadow flags. 6247777dab0Sopenharmony_ci * 6257777dab0Sopenharmony_ci * @since 12 6267777dab0Sopenharmony_ci * @version 1.0 6277777dab0Sopenharmony_ci */ 6287777dab0Sopenharmony_citypedef enum { 6297777dab0Sopenharmony_ci /** 6307777dab0Sopenharmony_ci * Use no shadow flags. 6317777dab0Sopenharmony_ci */ 6327777dab0Sopenharmony_ci SHADOW_FLAGS_NONE, 6337777dab0Sopenharmony_ci /** 6347777dab0Sopenharmony_ci * The occluding object is transparent. 6357777dab0Sopenharmony_ci */ 6367777dab0Sopenharmony_ci SHADOW_FLAGS_TRANSPARENT_OCCLUDER, 6377777dab0Sopenharmony_ci /** 6387777dab0Sopenharmony_ci * No need to analyze shadows. 6397777dab0Sopenharmony_ci */ 6407777dab0Sopenharmony_ci SHADOW_FLAGS_GEOMETRIC_ONLY, 6417777dab0Sopenharmony_ci /** 6427777dab0Sopenharmony_ci * Use all shadow flags. 6437777dab0Sopenharmony_ci */ 6447777dab0Sopenharmony_ci SHADOW_FLAGS_ALL, 6457777dab0Sopenharmony_ci} OH_Drawing_CanvasShadowFlags; 6467777dab0Sopenharmony_ci 6477777dab0Sopenharmony_ci/** 6487777dab0Sopenharmony_ci * @brief Use circular light to draw an offset spot shadow and outlining ambient shadow for the given path. 6497777dab0Sopenharmony_ci * 6507777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 6517777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 6527777dab0Sopenharmony_ci * @param OH_Drawing_Path Indicates the pointer to an <b>OH_Drawing_Path</b> object, use to generate shadows. 6537777dab0Sopenharmony_ci * @param planeParams Represents the value of the function which returns Z offset of the occluder from the 6547777dab0Sopenharmony_ci * canvas based on x and y. 6557777dab0Sopenharmony_ci * @param devLightPos Represents the position of the light relative to the canvas. 6567777dab0Sopenharmony_ci * @param lightRadius The radius of the circular light. 6577777dab0Sopenharmony_ci * @param ambientColor Ambient shadow's color. 6587777dab0Sopenharmony_ci * @param spotColor Spot shadow's color. 6597777dab0Sopenharmony_ci * @param flag Indicates the flag to control opaque occluder, shadow, and light position. 6607777dab0Sopenharmony_ci * @since 12 6617777dab0Sopenharmony_ci * @version 1.0 6627777dab0Sopenharmony_ci */ 6637777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawShadow(OH_Drawing_Canvas*, OH_Drawing_Path*, OH_Drawing_Point3D planeParams, 6647777dab0Sopenharmony_ci OH_Drawing_Point3D devLightPos, float lightRadius, uint32_t ambientColor, uint32_t spotColor, 6657777dab0Sopenharmony_ci OH_Drawing_CanvasShadowFlags flag); 6667777dab0Sopenharmony_ci 6677777dab0Sopenharmony_ci/** 6687777dab0Sopenharmony_ci * @brief Clears a canvas by using a specified color. 6697777dab0Sopenharmony_ci * 6707777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 6717777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 6727777dab0Sopenharmony_ci * @param color Indicates the color, which is a 32-bit (ARGB) variable. 6737777dab0Sopenharmony_ci * @since 8 6747777dab0Sopenharmony_ci * @version 1.0 6757777dab0Sopenharmony_ci */ 6767777dab0Sopenharmony_civoid OH_Drawing_CanvasClear(OH_Drawing_Canvas*, uint32_t color); 6777777dab0Sopenharmony_ci 6787777dab0Sopenharmony_ci/** 6797777dab0Sopenharmony_ci * @brief Sets matrix of canvas. 6807777dab0Sopenharmony_ci * 6817777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 6827777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 6837777dab0Sopenharmony_ci * @param OH_Drawing_Matrix Indicates the pointer to an <b>OH_Drawing_Matrix</b> object. 6847777dab0Sopenharmony_ci * @since 12 6857777dab0Sopenharmony_ci * @version 1.0 6867777dab0Sopenharmony_ci */ 6877777dab0Sopenharmony_civoid OH_Drawing_CanvasSetMatrix(OH_Drawing_Canvas*, OH_Drawing_Matrix*); 6887777dab0Sopenharmony_ci 6897777dab0Sopenharmony_ci/** 6907777dab0Sopenharmony_ci * @brief Reset matrix to the idenmtity matrix, any prior matrix state is overwritten. 6917777dab0Sopenharmony_ci * 6927777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 6937777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 6947777dab0Sopenharmony_ci * @since 12 6957777dab0Sopenharmony_ci * @version 1.0 6967777dab0Sopenharmony_ci */ 6977777dab0Sopenharmony_civoid OH_Drawing_CanvasResetMatrix(OH_Drawing_Canvas*); 6987777dab0Sopenharmony_ci 6997777dab0Sopenharmony_ci/** 7007777dab0Sopenharmony_ci * @brief Draws the specified source rectangle of the image onto the canvas, 7017777dab0Sopenharmony_ci * scaled and translated to the destination rectangle. 7027777dab0Sopenharmony_ci * 7037777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 7047777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 7057777dab0Sopenharmony_ci * @param OH_Drawing_Image Indicates the pointer to an <b>OH_Drawing_Image</b> object. 7067777dab0Sopenharmony_ci * @param src The area of source image. 7077777dab0Sopenharmony_ci * @param dst The area of destination canvas. 7087777dab0Sopenharmony_ci * @param OH_Drawing_SamplingOptions Indicates the pointer to an <b>OH_Drawing_SamplingOptions</b> object. 7097777dab0Sopenharmony_ci * @param OH_Drawing_SrcRectConstraint Constraint type. 7107777dab0Sopenharmony_ci * @since 12 7117777dab0Sopenharmony_ci * @version 1.0 7127777dab0Sopenharmony_ci */ 7137777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawImageRectWithSrc(OH_Drawing_Canvas*, const OH_Drawing_Image*, 7147777dab0Sopenharmony_ci const OH_Drawing_Rect* src, const OH_Drawing_Rect* dst, const OH_Drawing_SamplingOptions*, 7157777dab0Sopenharmony_ci OH_Drawing_SrcRectConstraint); 7167777dab0Sopenharmony_ci 7177777dab0Sopenharmony_ci/** 7187777dab0Sopenharmony_ci * @brief Draws the specified source rectangle of the image onto the canvas, 7197777dab0Sopenharmony_ci * scaled and translated to the destination rectangle. 7207777dab0Sopenharmony_ci * 7217777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 7227777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 7237777dab0Sopenharmony_ci * @param OH_Drawing_Image Indicates the pointer to an <b>OH_Drawing_Image</b> object. 7247777dab0Sopenharmony_ci * @param OH_Drawing_Rect Indicates the pointer to an <b>OH_Drawing_Rect</b> object. 7257777dab0Sopenharmony_ci * @param OH_Drawing_SamplingOptions Indicates the pointer to an <b>OH_Drawing_SamplingOptions</b> object. 7267777dab0Sopenharmony_ci * @since 12 7277777dab0Sopenharmony_ci * @version 1.0 7287777dab0Sopenharmony_ci */ 7297777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawImageRect(OH_Drawing_Canvas*, OH_Drawing_Image*, 7307777dab0Sopenharmony_ci OH_Drawing_Rect* dst, OH_Drawing_SamplingOptions*); 7317777dab0Sopenharmony_ci 7327777dab0Sopenharmony_ci/** 7337777dab0Sopenharmony_ci * @brief Enumerates of vertices flags. 7347777dab0Sopenharmony_ci * 7357777dab0Sopenharmony_ci * @since 12 7367777dab0Sopenharmony_ci * @version 1.0 7377777dab0Sopenharmony_ci */ 7387777dab0Sopenharmony_citypedef enum { 7397777dab0Sopenharmony_ci /** 7407777dab0Sopenharmony_ci * The vertices are a triangle list. 7417777dab0Sopenharmony_ci */ 7427777dab0Sopenharmony_ci VERTEX_MODE_TRIANGLES, 7437777dab0Sopenharmony_ci /** 7447777dab0Sopenharmony_ci * The vertices are a triangle strip. 7457777dab0Sopenharmony_ci */ 7467777dab0Sopenharmony_ci VERTEX_MODE_TRIANGLES_STRIP, 7477777dab0Sopenharmony_ci /** 7487777dab0Sopenharmony_ci * The vertices are a triangle fan. 7497777dab0Sopenharmony_ci */ 7507777dab0Sopenharmony_ci VERTEX_MODE_TRIANGLE_FAN, 7517777dab0Sopenharmony_ci} OH_Drawing_VertexMode; 7527777dab0Sopenharmony_ci 7537777dab0Sopenharmony_ci/** 7547777dab0Sopenharmony_ci * @brief Draw a triangular mesh with vertex descriptions. 7557777dab0Sopenharmony_ci * 7567777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 7577777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 7587777dab0Sopenharmony_ci * @param vertexMmode Draw a set of vertices. 7597777dab0Sopenharmony_ci * @param vertexCount Vertex count. 7607777dab0Sopenharmony_ci * @param positions Positions data pointer. 7617777dab0Sopenharmony_ci * @param texs Texture coordinate data pointer. 7627777dab0Sopenharmony_ci * @param colors Color data pointer. 7637777dab0Sopenharmony_ci * @param indexCount Index count. 7647777dab0Sopenharmony_ci * @param indices Index data pointer. 7657777dab0Sopenharmony_ci * @since 12 7667777dab0Sopenharmony_ci * @version 1.0 7677777dab0Sopenharmony_ci */ 7687777dab0Sopenharmony_civoid OH_Drawing_CanvasDrawVertices(OH_Drawing_Canvas*, OH_Drawing_VertexMode vertexMmode, 7697777dab0Sopenharmony_ci int32_t vertexCount, const OH_Drawing_Point2D* positions, const OH_Drawing_Point2D* texs, 7707777dab0Sopenharmony_ci const uint32_t* colors, int32_t indexCount, const uint16_t* indices, OH_Drawing_BlendMode mode); 7717777dab0Sopenharmony_ci 7727777dab0Sopenharmony_ci/** 7737777dab0Sopenharmony_ci * @brief Read pixels data from canvas. 7747777dab0Sopenharmony_ci * 7757777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 7767777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 7777777dab0Sopenharmony_ci * @param OH_Drawing_Image_Info width, height, colorType, and alphaType of dstPixels. 7787777dab0Sopenharmony_ci * @param dstPixels destination pixel storage. 7797777dab0Sopenharmony_ci * @param dstRowBytes size of one row of pixels. 7807777dab0Sopenharmony_ci * @param srcX offset into canvas writable pixels on x-axis. 7817777dab0Sopenharmony_ci * @param srcY offset into canvas writable pixels on y-axis. 7827777dab0Sopenharmony_ci * @return true if pixels are copied to dstPixels. 7837777dab0Sopenharmony_ci * @since 12 7847777dab0Sopenharmony_ci * @version 1.0 7857777dab0Sopenharmony_ci */ 7867777dab0Sopenharmony_cibool OH_Drawing_CanvasReadPixels(OH_Drawing_Canvas*, OH_Drawing_Image_Info*, 7877777dab0Sopenharmony_ci void* dstPixels, uint32_t dstRowBytes, int32_t srcX, int32_t srcY); 7887777dab0Sopenharmony_ci 7897777dab0Sopenharmony_ci/** 7907777dab0Sopenharmony_ci * @brief Read pixels data to a bitmap from canvas. 7917777dab0Sopenharmony_ci * 7927777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 7937777dab0Sopenharmony_ci * @param OH_Drawing_Canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 7947777dab0Sopenharmony_ci * @param OH_Drawing_Bitmap Indicates the pointer to an <b>OH_Drawing_Bitmap</b> object. 7957777dab0Sopenharmony_ci * @param srcX offset into canvas writable pixels on x-axis. 7967777dab0Sopenharmony_ci * @param srcY offset into canvas writable pixels on y-axis. 7977777dab0Sopenharmony_ci * @return true if pixels are copied to dstBitmap. 7987777dab0Sopenharmony_ci * @since 12 7997777dab0Sopenharmony_ci * @version 1.0 8007777dab0Sopenharmony_ci */ 8017777dab0Sopenharmony_cibool OH_Drawing_CanvasReadPixelsToBitmap(OH_Drawing_Canvas*, OH_Drawing_Bitmap*, int32_t srcX, int32_t srcY); 8027777dab0Sopenharmony_ci 8037777dab0Sopenharmony_ci/** 8047777dab0Sopenharmony_ci * @brief Checks whether the drawable area is empty. 8057777dab0Sopenharmony_ci * 8067777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 8077777dab0Sopenharmony_ci * @param canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 8087777dab0Sopenharmony_ci * @param isClipEmpty Indicates if drawable area is empty. 8097777dab0Sopenharmony_ci * @return Returns the error code. 8107777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful. 8117777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if canvas or isClipEmpty is nullptr. 8127777dab0Sopenharmony_ci * @since 12 8137777dab0Sopenharmony_ci * @version 1.0 8147777dab0Sopenharmony_ci */ 8157777dab0Sopenharmony_ciOH_Drawing_ErrorCode OH_Drawing_CanvasIsClipEmpty(OH_Drawing_Canvas* canvas, bool* isClipEmpty); 8167777dab0Sopenharmony_ci 8177777dab0Sopenharmony_ci/** 8187777dab0Sopenharmony_ci * @brief Gets image info of canvas. 8197777dab0Sopenharmony_ci * 8207777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 8217777dab0Sopenharmony_ci * @param canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 8227777dab0Sopenharmony_ci * @param imageInfo Indicates the pointer to an <b>OH_Drawing_Image_Info</b> object. 8237777dab0Sopenharmony_ci * @return Returns the error code. 8247777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful. 8257777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if canvas or imageInfo is nullptr. 8267777dab0Sopenharmony_ci * @since 12 8277777dab0Sopenharmony_ci * @version 1.0 8287777dab0Sopenharmony_ci */ 8297777dab0Sopenharmony_ciOH_Drawing_ErrorCode OH_Drawing_CanvasGetImageInfo(OH_Drawing_Canvas* canvas, OH_Drawing_Image_Info* imageInfo); 8307777dab0Sopenharmony_ci 8317777dab0Sopenharmony_ci/** 8327777dab0Sopenharmony_ci * @brief Replay drawing command. 8337777dab0Sopenharmony_ci * 8347777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 8357777dab0Sopenharmony_ci * @param canvas Indicates the pointer to an <b>OH_Drawing_Canvas</b> object. 8367777dab0Sopenharmony_ci * @param recordCmd Indicates the pointer to an <b>OH_Drawing_RecordCmd</b> object. 8377777dab0Sopenharmony_ci * @return Returns the error code. 8387777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_SUCCESS} if the operation is successful. 8397777dab0Sopenharmony_ci * Returns {@link OH_DRAWING_ERROR_INVALID_PARAMETER} if canvas or recordCmd is nullptr. 8407777dab0Sopenharmony_ci * @since 13 8417777dab0Sopenharmony_ci * @version 1.0 8427777dab0Sopenharmony_ci */ 8437777dab0Sopenharmony_ciOH_Drawing_ErrorCode OH_Drawing_CanvasDrawRecordCmd(OH_Drawing_Canvas* canvas, OH_Drawing_RecordCmd* recordCmd); 8447777dab0Sopenharmony_ci#ifdef __cplusplus 8457777dab0Sopenharmony_ci} 8467777dab0Sopenharmony_ci#endif 8477777dab0Sopenharmony_ci/** @} */ 8487777dab0Sopenharmony_ci#endif 849