📄 gdi.h
字号:
*/ BYTE reserved[3];#endif /** * The bounding rect of the region. */ RECT rcBound; /** * head of the clipping rectangle list. */ PCLIPRECT head; /** * tail of the clipping rectangle list. */ PCLIPRECT tail; /** * The private block data heap used to allocate clipping rectangles. * \sa BLOCKHEAP */ PBLOCKHEAP heap;} CLIPRGN;/** * \var typedef CLIPRGN* PCLIPRGN * \brief Data type of the pointer to a CLIPRGN. * * \sa CLIPRGN */typedef CLIPRGN* PCLIPRGN;/** * \def InitFreeClipRectList(heap, size) * \brief Initializes the private block data heap used to allocate clipping rectangles. * \param heap The pointer to a BLOCKHEAP structure. * \param size The size of the heap. * * \note This macro is defined to call \a InitBlockDataHeap function with \a bd_size set to * \a sizeof(CLIPRECT). * * \sa InitBlockDataHeap */#define InitFreeClipRectList(heap, size) InitBlockDataHeap (heap, sizeof (CLIPRECT), size)/** * \def ClipRectAlloc(heap) * \brief Allocates a clipping rectangles from the private block data heap. * \param heap The pointer to the initialized BLOCKHEAP structure. * * \note This macro is defined to call \a BlockDataAlloc function. * * \sa BlockDataAlloc */#define ClipRectAlloc(heap) BlockDataAlloc (heap)/** * \def FreeClipRect(heap, cr) * \brief Frees a clipping rectangle which is allocated from the private block data heap. * \param heap The pointer to the initialized BLOCKHEAP structure. * \param cr The pointer to the clipping rectangle to be freed. * * \note This macro is defined to call \a BlockDataFree function. * * \sa BlockDataFree */#define FreeClipRect(heap, cr) BlockDataFree (heap, cr);/** * \def DestroyFreeClipRectList(heap) * \brief Destroies the private block data heap used to allocate clipping rectangles. * \param heap The pointer to the BLOCKHEAP structure. * * \note This macro is defined to call \a DestroyBlockDataHeap function. * * \sa DestroyBlockDataHeap */#define DestroyFreeClipRectList(heap) DestroyBlockDataHeap (heap);/** * \fn void GUIAPI InitClipRgn (PCLIPRGN pRgn, PBLOCKHEAP pFreeList) * \brief Initializes a clipping region. * * Before intializing a clipping region, you should initialize a private * block data heap first. The region operations, such as \a UnionRegion function, * will allocate/free the clipping rectangles from/to the heap. * This function will set the \a heap field of \a pRgn to be \a pFreeList, * and empty the region. * * \param pRgn The pointer to the CLIPRGN structure to be initialized. * \param pFreeList The pointer to the initialized private block data heap. * * \sa InitFreeClipRectList, EmptyClipRgn. * * Example: * * \include initcliprgn.c */MG_EXPORT void GUIAPI InitClipRgn (PCLIPRGN pRgn, PBLOCKHEAP pFreeList);/** * \fn void GUIAPI EmptyClipRgn (PCLIPRGN pRgn) * \brief Empties a clipping region. * * This function empties a clipping region pointed to by \a pRgn. * * \param pRgn The pointer to the region. * * \sa InitClipRgn */MG_EXPORT void GUIAPI EmptyClipRgn (PCLIPRGN pRgn);/** * \fn BOOL GUIAPI ClipRgnCopy (PCLIPRGN pDstRgn, const CLIPRGN* pSrcRgn) * \brief Copies one region to another. * * This function copies the region pointed to by \a pSrcRgn to the region pointed to by \a pDstRgn. * * \param pDstRgn The destination region. * \param pSrcRgn The source region. * \return TRUE on success, otherwise FALSE. * * \note This function will empty the region \a pDstRgn first. * * \sa EmptyClipRgn, ClipRgnIntersect, UnionRegion, SubtractRegion, XorRegion */MG_EXPORT BOOL GUIAPI ClipRgnCopy (PCLIPRGN pDstRgn, const CLIPRGN* pSrcRgn);/** * \fn BOOL GUIAPI ClipRgnIntersect (PCLIPRGN pRstRgn, const CLIPRGN* pRgn1, const CLIPRGN* pRgn2) * \brief Intersects two region. * * This function gets the intersection of two regions pointed to by \a pRgn1 and \a pRgn2 * respectively and puts the result to the region pointed to by \a pRstRgn. * * \param pRstRgn The intersected result region. * \param pRgn1 The first region. * \param pRgn2 The second region. * \return TRUE on success, otherwise FALSE. * * \note If \a pRgn1 does not intersected with \a pRgn2, the result region will be * a emgty region. * * \sa EmptyClipRgn, ClipRgnCopy, UnionRegion, SubtractRegion, XorRegion */MG_EXPORT BOOL GUIAPI ClipRgnIntersect (PCLIPRGN pRstRgn, const CLIPRGN* pRgn1, const CLIPRGN* pRgn2);/** * \fn void GUIAPI GetClipRgnBoundRect (PCLIPRGN pRgn, PRECT pRect) * \brief Gets the bounding rectangle of a region. * * This function gets the bounding rect of the region pointed to by \a pRgn, * and returns the rect in the rect pointed to by \a pRect. * * \param pRgn The pointer to the region. * \param pRect The pointer to the result rect. * * \sa IsEmptyClipRgn */MG_EXPORT void GUIAPI GetClipRgnBoundRect (PCLIPRGN pRgn, PRECT pRect);/** * \fn BOOL GUIAPI SetClipRgn (PCLIPRGN pRgn, const RECT* pRect) * \brief Sets a region to contain only one rect. * * This function sets the region \a pRgn to contain only a rect pointed to by \a pRect. * * \param pRgn The pointer to the region. * \param pRect The pointer to the rect. * \return TRUE on success, otherwise FALSE. * * \note This function will empty the region \a pRgn first. * * \sa EmptyClipRgn */MG_EXPORT BOOL GUIAPI SetClipRgn (PCLIPRGN pRgn, const RECT* pRect);/** * \fn BOOL GUIAPI IsEmptyClipRgn (const CLIPRGN* pRgn) * \brief Determines whether a region is an empty region. * * This function determines whether the region pointed to by \a pRgn is an empty region. * * \param pRgn The pointer to the region. * \return TRUE for empty one, else for not empty region. * * \sa EmptyClipRgn */MG_EXPORT BOOL GUIAPI IsEmptyClipRgn (const CLIPRGN* pRgn);/** * \fn BOOL GUIAPI AddClipRect (PCLIPRGN pRgn, const RECT* pRect) * \brief Unions one rectangle to a region. * * This function unions a rectangle to the region pointed to by \a pRgn. * * \param pRgn The pointer to the region. * \param pRect The pointer to the rectangle. * \return TRUE on success, otherwise FALSE. * * \sa IntersectClipRect, SubtractClipRect */MG_EXPORT BOOL GUIAPI AddClipRect (PCLIPRGN pRgn, const RECT* pRect);/** * \fn BOOL GUIAPI IntersectClipRect (PCLIPRGN pRgn, const RECT* pRect) * \brief Intersects a rectangle with a region. * * This function intersects the region pointed to by \a pRgn with a rect pointed to by \a pRect. * * \param pRgn The pointer to the region. * \param pRect The pointer to the rectangle. * \return TRUE on success, otherwise FALSE. * * \sa AddClipRect, SubtractClipRect */MG_EXPORT BOOL GUIAPI IntersectClipRect (PCLIPRGN pRgn, const RECT* pRect);/** * \fn BOOL GUIAPI SubtractClipRect (PCLIPRGN pRgn, const RECT* pRect) * \brief Subtracts a rectangle from a region. * * This function subtracts a rect pointed to by \a pRect from the region pointed to by \a pRgn. * * \param pRgn The pointer to the region. * \param pRect The pointer to the rect. * \return TRUE on success, otherwise FALSE. * * \sa AddClipRect, IntersectClipRect */MG_EXPORT BOOL GUIAPI SubtractClipRect (PCLIPRGN pRgn, const RECT* pRect);/** * \fn BOOL GUIAPI PtInRegion (PCLIPRGN region, int x, int y) * \brief Determines whether a point is in a region. * * This function determines whether a point \a (x,y) is in the region pointed to by \a region. * * \param region The pointer to the region. * \param x x,y: The point. * \param y x,y: The point. * \return TRUE for in the region, otherwise FALSE. * * \note This fucntion defined only for _USE_NEWGAL. * * \sa RectInRegion */MG_EXPORT BOOL GUIAPI PtInRegion (PCLIPRGN region, int x, int y);/** * \fn BOOL GUIAPI RectInRegion (PCLIPRGN region, const RECT* rect) * \brief Determines whether a rectangle is intersected with a region. * * This function determines whether the rect \a rect is intersected with the region * pointed to by \a region. * * \param region The pointer to the region. * \param rect The pointer to the rect. * \return TRUE for in the region, otherwise FALSE. * * \note This fucntion defined only for _USE_NEWGAL. * * \sa PtInRegion */MG_EXPORT BOOL GUIAPI RectInRegion (PCLIPRGN region, const RECT* rect);/** * \fn void GUIAPI OffsetRegion (PCLIPRGN region, int x, int y) * \brief Offsets the region. * * This function offsets a given region pointed to by region. * * \param region The pointer to the region. * \param x x,y: Offsets on x and y coodinates. * \param y x,y: Offsets on x and y coodinates. * * \note This fucntion defined only for _USE_NEWGAL. */MG_EXPORT void GUIAPI OffsetRegion (PCLIPRGN region, int x, int y);#ifdef _USE_NEWGAL/** * \fn BOOL GUIAPI UnionRegion (PCLIPRGN dst, const CLIPRGN* src1, const CLIPRGN* src2) * \brief Unions two regions. * * This function unions two regions pointed to by \a src1 and \a src2 respectively and * puts the result to the region pointed to by \a dst. * * \param dst The pointer to the result region. * \param src1 src1,src2: Two regions will be unioned. * \param src2 src1,src2: Two regions will be unioned. * \return TRUE on success, otherwise FALSE. * * \note This fucntion defined only for _USE_NEWGAL. * * \sa SubtractRegion, XorRegion */MG_EXPORT BOOL GUIAPI UnionRegion (PCLIPRGN dst, const CLIPRGN* src1, const CLIPRGN* src2);/** * \fn BOOL GUIAPI SubtractRegion (CLIPRGN* rgnD, const CLIPRGN* rgnM, const CLIPRGN* rgnS) * \brief Substrcts a region from another. * * This function subtracts \a rgnS from \a rgnM and leave the result in \a rgnD. * * \param rgnD The pointer to the difference region. * \param rgnM The pointer to the minuend region. * \param rgnS The pointer to the subtrahend region. * \return TRUE on success, otherwise FALSE. * * \note This fucntion defined only for _USE_NEWGAL. * * \sa UnionRegion, XorRegion */MG_EXPORT BOOL GUIAPI SubtractRegion (CLIPRGN* rgnD, const CLIPRGN* rgnM, const CLIPRGN* rgnS);/** * \fn BOOL GUIAPI XorRegion (CLIPRGN *dst, const CLIPRGN *src1, const CLIPRGN *src2) * \brief Does the XOR operation between two regions. * * This function does the XOR operation between two regions pointed to by * \a src1 and \a src2 and puts the result to the region pointed to by \a dst. * * \param dst The pointer to the result region. * \param src1 src1,src2: Two regions will be xor'ed. * \param src2 src1,src2: Two regions will be xor'ed. * \return TRUE on success, otherwise FALSE. * * \note This fucntion defined only for _USE_NEWGAL. * * \sa UnionRegion, SubtractRegion */MG_EXPORT BOOL GUIAPI XorRegion (CLIPRGN *dst, const CLIPRGN *src1, const CLIPRGN *src2);/** * \def UnionRectWithRegion * \brief Is an alias of \a AddClipRect * \sa AddClipRect */#define UnionRectWithRegion AddClipRect/** * \def CopyRegion * \brief Is an alias of \a ClipRgnCopy * \sa ClipRgnCopy */#define CopyRegion ClipRgnCopy/** * \def IntersectRegion * \brief Is an alias of \a ClipRgnIntersect * \sa ClipRgnIntersect */#define IntersectRegion ClipRgnIntersect/** * \fn BOOL GUIAPI InitCircleRegion (PCLIPRGN dst, int x, int y, int r) * \brief Initializes a region to be an enclosed circle. * * \param dst The pointer to the region to be initialized. * \param x x,y: The center of the circle. * \param y x,y: The center of the circle. * \param r The radius of the circle. * \return TRUE on success, otherwise FALSE. * * \note This fucntion defined only for _USE_NEWGAL. * * \sa InitEllipseRegion, InitPolygonRegion */MG_EXPORT BOOL GUIAPI InitCircleRegion (PCLIPRGN dst, int x, int y, int r);/** * \fn BOOL GUIAPI InitEllipseRegion (PCLIPRGN dst, int x, int y, int rx, int ry) * \brief Initializes a region to be an enclosed ellipse. * * \param dst The pointer to the region to be initialized. * \param x x,y: The center of the ellipse. * \param y x,y: The center of the ellipse. * \param rx The x-radius of the ellipse. * \param ry The y-radius of the ellipse. * \return TRUE on success, otherwise FALSE. * * \note This fucntion defined only for _USE_NEWGAL. * * \sa InitCircleRegion, InitPolygonRegion */MG_EXPORT BOOL GUIAPI InitEllipseRegion (PCLIPRGN dst, int x, int y, int rx, int ry);/** * \fn BOOL GUIAPI InitPolygonRegion (PCLIPRGN dst, const POINT* pts, int vertices) * \brief Initializes a region to be an enclosed polygon. * * \param dst The pointer to the region to be initialized.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -