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