winrgn.h
来自「MinGUI 可视化程序代码」· C头文件 代码 · 共 62 行
H
62 行
//---------------------------------------------------------------------------
#ifndef _WINRGN_H
#define _WINRGN_H
//---------------------------------------------------------------------------
#include "winmem.h"
//---------------------------------------------------------------------------
typedef struct
{ int x,y;
}TPOINT,TSIZE;
//---------------------------------------------------------------------------
typedef struct
{ int left,top,right,bottom;
}TRECT,*PRECT;
typedef struct
{ int left2,top2,right,bottom;
}TRECT2;
//---------------------------------------------------------------------------
typedef struct _CLIPRECT{ TRECT rc;
struct _CLIPRECT* next;
struct _CLIPRECT* prev;
}TClipRect;
//---------------------------------------------------------------------------
typedef struct
{ int type;
TRECT rcBound;
TClipRect *head;
TClipRect *tail;
TBLOCKHEAP *heap;
}TREGION;
//---------------------------------------------------------------------------
#define PointInRect(x,y,prc) ( (x)>=(prc)->left && (x)<(prc)->right && (y)>=(prc)->top && (y)<(prc)->bottom )
#define RectInRect(prc,area) ( (prc)->left>=(area)->left && (prc)->top>=(area)->top && (prc)->right<=(area)->right && (prc)->bottom<=(area)->bottom )
#define IsRectEmpty(prc) ( !(prc) || (prc)->left>=(prc)->right || (prc)->top>=(prc)->bottom )
#define IsRegionEmpty(pRgn) ( !(pRgn) || !(pRgn)->head )
#define IsRectOverlap(prc1,prc2) ( (prc2)->right>(prc1)->left && (prc1)->right>(prc2)->left && (prc2)->bottom>(prc1)->top && (prc1)->bottom>(prc2)->top )
#define SetRectEmpty(prc) (prc)->left = (prc)->top = (prc)->right = (prc)->bottom = 0
#define OffsetRect(prc,dx,dy) { (prc)->left += (dx); (prc)->top += (dy); (prc)->right += (dx); (prc)->bottom += (dy); }
#define InflateRect(prc,dx,dy) { (prc)->left -= (dx); (prc)->top -= (dy); (prc)->right += (dx); (prc)->bottom += (dy); }
//---------------------------------------------------------------------------
BOOL RectIntersect(TRECT *tagRect,TRECT *srcRect);
int RectOffsetShadown(TRECT *tagRects,TRECT *srcRect,int nx,int ny);
//---------------------------------------------------------------------------void InitRegion(TREGION *pRgn, TBLOCKHEAP *heap);void ClearRegion(TREGION *pRgn);void RegionReset(TREGION *pRgn, const TRECT* pRect);void RegionCopy(TREGION *pDstRgn, const TREGION* pSrcRgn);void OffsetRegion(TREGION *region, int x, int y);void GetRegionBound(TREGION *pRgn, TRECT *pRect);BOOL PointInRegion(TREGION *region, int x, int y);BOOL RectInRegion(TREGION *region, const TRECT* rect);
void RegionSubtractRect(TREGION *region, const TRECT *rect);void RegionIntersectRect(TREGION *region, const TRECT* rect);void RegionIntersect(TREGION *dst, const TREGION *src1, const TREGION *src2);void RegionSubtract(TREGION *rgnD, const TREGION *rgnM, const TREGION *rgnS);void RegionUnion(TREGION *dst, const TREGION *src1, const TREGION *src2);void RegionXor(TREGION *dst, const TREGION *src1, const TREGION *src2);void RegionUnionRect(TREGION *region, const TRECT *rect);//---------------------------------------------------------------------------#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?