📄 gdi.h
字号:
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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
*/
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.
*/
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
*/
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
*/
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
*/
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
*/
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
*/
BOOL GUIAPI InitEllipseRegion (PCLIPRGN dst, int x, int y, int rx, int ry);
/**
* \fn BOOL GUIAPI InitPolygonRegion (PCLIPRGN dst, const POINT* pts, int vertices)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -