17777dab0Sopenharmony_ci/* 27777dab0Sopenharmony_ci * Copyright (c) 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_REGION_H 177777dab0Sopenharmony_ci#define C_INCLUDE_DRAWING_REGION_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_region.h 337777dab0Sopenharmony_ci * 347777dab0Sopenharmony_ci * @brief Declares functions related to the <b>region</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 12 407777dab0Sopenharmony_ci * @version 1.0 417777dab0Sopenharmony_ci */ 427777dab0Sopenharmony_ci 437777dab0Sopenharmony_ci#include "drawing_types.h" 447777dab0Sopenharmony_ci 457777dab0Sopenharmony_ci#ifdef __cplusplus 467777dab0Sopenharmony_ciextern "C" { 477777dab0Sopenharmony_ci#endif 487777dab0Sopenharmony_ci 497777dab0Sopenharmony_ci/** 507777dab0Sopenharmony_ci * @brief Operations when two regions are combined. 517777dab0Sopenharmony_ci * 527777dab0Sopenharmony_ci * @since 12 537777dab0Sopenharmony_ci * @version 1.0 547777dab0Sopenharmony_ci */ 557777dab0Sopenharmony_citypedef enum { 567777dab0Sopenharmony_ci /** 577777dab0Sopenharmony_ci * Difference operation. 587777dab0Sopenharmony_ci */ 597777dab0Sopenharmony_ci REGION_OP_MODE_DIFFERENCE, 607777dab0Sopenharmony_ci /** 617777dab0Sopenharmony_ci * Intersect operation. 627777dab0Sopenharmony_ci */ 637777dab0Sopenharmony_ci REGION_OP_MODE_INTERSECT, 647777dab0Sopenharmony_ci /** 657777dab0Sopenharmony_ci * Union operation. 667777dab0Sopenharmony_ci */ 677777dab0Sopenharmony_ci REGION_OP_MODE_UNION, 687777dab0Sopenharmony_ci /** 697777dab0Sopenharmony_ci * Xor operation. 707777dab0Sopenharmony_ci */ 717777dab0Sopenharmony_ci REGION_OP_MODE_XOR, 727777dab0Sopenharmony_ci /** 737777dab0Sopenharmony_ci * Reverse difference operation. 747777dab0Sopenharmony_ci */ 757777dab0Sopenharmony_ci REGION_OP_MODE_REVERSE_DIFFERENCE, 767777dab0Sopenharmony_ci /** 777777dab0Sopenharmony_ci * Replace operation. 787777dab0Sopenharmony_ci */ 797777dab0Sopenharmony_ci REGION_OP_MODE_REPLACE, 807777dab0Sopenharmony_ci} OH_Drawing_RegionOpMode; 817777dab0Sopenharmony_ci 827777dab0Sopenharmony_ci/** 837777dab0Sopenharmony_ci * @brief Creates an <b>OH_Drawing_Region</b> object. 847777dab0Sopenharmony_ci * 857777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 867777dab0Sopenharmony_ci * @return Returns the pointer to the <b>OH_Drawing_Region</b> object created. 877777dab0Sopenharmony_ci * @since 12 887777dab0Sopenharmony_ci * @version 1.0 897777dab0Sopenharmony_ci */ 907777dab0Sopenharmony_ciOH_Drawing_Region* OH_Drawing_RegionCreate(void); 917777dab0Sopenharmony_ci 927777dab0Sopenharmony_ci/** 937777dab0Sopenharmony_ci * @brief Determines whether the region contains the specified coordinates. 947777dab0Sopenharmony_ci * 957777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 967777dab0Sopenharmony_ci * @param region Indicates the pointer to an <b>OH_Drawing_Region</b> object. 977777dab0Sopenharmony_ci * @param int32_t x-coordinate. 987777dab0Sopenharmony_ci * @param int32_t y-coordinate. 997777dab0Sopenharmony_ci * @return Returns <b>true</b> if (x, y) is inside region; returns <b>false</b> otherwise. 1007777dab0Sopenharmony_ci * @since 12 1017777dab0Sopenharmony_ci * @version 1.0 1027777dab0Sopenharmony_ci */ 1037777dab0Sopenharmony_cibool OH_Drawing_RegionContains(OH_Drawing_Region* region, int32_t x, int32_t y); 1047777dab0Sopenharmony_ci 1057777dab0Sopenharmony_ci/** 1067777dab0Sopenharmony_ci * @brief Combines two regions. 1077777dab0Sopenharmony_ci * 1087777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1097777dab0Sopenharmony_ci * @param region Indicates the pointer to an <b>OH_Drawing_Region</b> object. 1107777dab0Sopenharmony_ci * @param other Indicates the pointer to an <b>OH_Drawing_Region</b> object. 1117777dab0Sopenharmony_ci * @param op Indicates the operation to apply to combine. 1127777dab0Sopenharmony_ci * @return Returns <b>true</b> if constructed Region is not empty; returns <b>false</b> otherwise. 1137777dab0Sopenharmony_ci * @since 12 1147777dab0Sopenharmony_ci * @version 1.0 1157777dab0Sopenharmony_ci */ 1167777dab0Sopenharmony_cibool OH_Drawing_RegionOp(OH_Drawing_Region* region, const OH_Drawing_Region* other, OH_Drawing_RegionOpMode op); 1177777dab0Sopenharmony_ci 1187777dab0Sopenharmony_ci/** 1197777dab0Sopenharmony_ci * @brief Sets the region to the specified rect. 1207777dab0Sopenharmony_ci * 1217777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1227777dab0Sopenharmony_ci * @param OH_Drawing_Region Indicates the pointer to an <b>OH_Drawing_Region</b> object. 1237777dab0Sopenharmony_ci * @param OH_Drawing_Rect Indicates the pointer to an <b>OH_Drawing_Rect</b> object. 1247777dab0Sopenharmony_ci * @return Return true if constructed Region is not empty. 1257777dab0Sopenharmony_ci * @since 12 1267777dab0Sopenharmony_ci * @version 1.0 1277777dab0Sopenharmony_ci */ 1287777dab0Sopenharmony_cibool OH_Drawing_RegionSetRect(OH_Drawing_Region* region, const OH_Drawing_Rect* rect); 1297777dab0Sopenharmony_ci 1307777dab0Sopenharmony_ci/** 1317777dab0Sopenharmony_ci * @brief Constructs region that matchs outline of path within clip. 1327777dab0Sopenharmony_ci * 1337777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1347777dab0Sopenharmony_ci * @param region Indicates the pointer to an <b>OH_Drawing_Region</b> object. 1357777dab0Sopenharmony_ci * @param path Indicates the pointer to an <b>OH_Drawing_Path</b> object. 1367777dab0Sopenharmony_ci * @param clip Indicates the pointer to an <b>OH_Drawing_Region</b> object. 1377777dab0Sopenharmony_ci * @return Returns <b>true</b> if constructed Region is not empty; returns <b>false</b> otherwise. 1387777dab0Sopenharmony_ci * @since 12 1397777dab0Sopenharmony_ci * @version 1.0 1407777dab0Sopenharmony_ci */ 1417777dab0Sopenharmony_cibool OH_Drawing_RegionSetPath(OH_Drawing_Region* region, const OH_Drawing_Path* path, const OH_Drawing_Region* clip); 1427777dab0Sopenharmony_ci 1437777dab0Sopenharmony_ci/** 1447777dab0Sopenharmony_ci * @brief Destroys an <b>OH_Drawing_Region</b> object and reclaims the memory occupied by the object. 1457777dab0Sopenharmony_ci * 1467777dab0Sopenharmony_ci * @syscap SystemCapability.Graphic.Graphic2D.NativeDrawing 1477777dab0Sopenharmony_ci * @param OH_Drawing_Region Indicates the pointer to an <b>OH_Drawing_Region</b> object. 1487777dab0Sopenharmony_ci * @since 12 1497777dab0Sopenharmony_ci * @version 1.0 1507777dab0Sopenharmony_ci */ 1517777dab0Sopenharmony_civoid OH_Drawing_RegionDestroy(OH_Drawing_Region*); 1527777dab0Sopenharmony_ci 1537777dab0Sopenharmony_ci#ifdef __cplusplus 1547777dab0Sopenharmony_ci} 1557777dab0Sopenharmony_ci#endif 1567777dab0Sopenharmony_ci/** @} */ 1577777dab0Sopenharmony_ci#endif 158