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 + -
显示快捷键?