1 #pragma once 2 3 FORCEINLINE 4 VOID 5 RECTL_vSetRect(RECTL *prcl, LONG left, LONG top, LONG right, LONG bottom) 6 { 7 prcl->left = left; 8 prcl->top = top; 9 prcl->right = right; 10 prcl->bottom = bottom; 11 } 12 13 FORCEINLINE 14 VOID 15 RECTL_vSetEmptyRect(RECTL *prcl) 16 { 17 prcl->left = 0; 18 prcl->top = 0; 19 prcl->right = 0; 20 prcl->bottom = 0; 21 } 22 23 FORCEINLINE 24 VOID 25 RECTL_vOffsetRect(RECTL *prcl, INT cx, INT cy) 26 { 27 prcl->left += cx; 28 prcl->right += cx; 29 prcl->top += cy; 30 prcl->bottom += cy; 31 } 32 33 FORCEINLINE 34 BOOL 35 RECTL_bIsEmptyRect(const RECTL *prcl) 36 { 37 return (prcl->left >= prcl->right || prcl->top >= prcl->bottom); 38 } 39 40 FORCEINLINE 41 BOOL 42 RECTL_bPointInRect(const RECTL *prcl, INT x, INT y) 43 { 44 return (x >= prcl->left && x < prcl->right && 45 y >= prcl->top && y < prcl->bottom); 46 } 47 48 FORCEINLINE 49 BOOL 50 RECTL_bIsWellOrdered(const RECTL *prcl) 51 { 52 return ((prcl->left <= prcl->right) && 53 (prcl->top <= prcl->bottom)); 54 } 55 56 BOOL 57 FASTCALL 58 RECTL_bUnionRect(RECTL *prclDst, const RECTL *prcl1, const RECTL *prcl2); 59 60 BOOL 61 FASTCALL 62 RECTL_bIntersectRect(RECTL *prclDst, const RECTL *prcl1, const RECTL *prcl2); 63 64 VOID 65 FASTCALL 66 RECTL_vMakeWellOrdered(RECTL *prcl); 67 68 VOID 69 FASTCALL 70 RECTL_vInflateRect(RECTL *rect, INT dx, INT dy); 71