/* * PROJECT: ReactOS win32 kernel mode subsystem * LICENSE: GPL - See COPYING in the top level directory * FILE: win32ss/gdi/ntgdi/rect.c * PURPOSE: Rect functions * PROGRAMMER: Timo Kreuzer */ #include #define NDEBUG #include /* FUNCTIONS *****************************************************************/ BOOL FASTCALL RECTL_bUnionRect( _Out_ RECTL *prclDst, _In_ const RECTL *prcl1, _In_ const RECTL *prcl2) { if (RECTL_bIsEmptyRect(prcl1)) { if (RECTL_bIsEmptyRect(prcl2)) { RECTL_vSetEmptyRect(prclDst); return FALSE; } else { *prclDst = *prcl2; } } else { if (RECTL_bIsEmptyRect(prcl2)) { *prclDst = *prcl1; } else { prclDst->left = min(prcl1->left, prcl2->left); prclDst->top = min(prcl1->top, prcl2->top); prclDst->right = max(prcl1->right, prcl2->right); prclDst->bottom = max(prcl1->bottom, prcl2->bottom); } } return TRUE; } BOOL FASTCALL RECTL_bIntersectRect( _Out_ RECTL* prclDst, _In_ const RECTL* prcl1, _In_ const RECTL* prcl2) { prclDst->left = max(prcl1->left, prcl2->left); prclDst->right = min(prcl1->right, prcl2->right); if (prclDst->left < prclDst->right) { prclDst->top = max(prcl1->top, prcl2->top); prclDst->bottom = min(prcl1->bottom, prcl2->bottom); if (prclDst->top < prclDst->bottom) { return TRUE; } } RECTL_vSetEmptyRect(prclDst); return FALSE; } VOID FASTCALL RECTL_vMakeWellOrdered( _Inout_ RECTL *prcl) { LONG lTmp; if (prcl->left > prcl->right) { lTmp = prcl->left; prcl->left = prcl->right; prcl->right = lTmp; } if (prcl->top > prcl->bottom) { lTmp = prcl->top; prcl->top = prcl->bottom; prcl->bottom = lTmp; } } VOID FASTCALL RECTL_vInflateRect( _Inout_ RECTL *rect, _In_ INT dx, _In_ INT dy) { rect->left -= dx; rect->top -= dy; rect->right += dx; rect->bottom += dy; } /* EOF */