* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-/* $Id$ */
-#include <w32k.h>
+#include <win32k.h>
#define NDEBUG
#include <debug.h>
/* FUNCTIONS *****************************************************************/
-VOID FASTCALL
-IntGdiSetEmptyRect(PRECT Rect)
+BOOL
+FASTCALL
+RECTL_bUnionRect(RECTL *prclDst, const RECTL *prcl1, const RECTL *prcl2)
{
- Rect->left = Rect->right = Rect->top = Rect->bottom = 0;
-}
+ 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);
+ }
+ }
-BOOL FASTCALL
-IntGdiIsEmptyRect(const RECT* Rect)
-{
- return(Rect->left >= Rect->right || Rect->top >= Rect->bottom);
+ return TRUE;
}
-VOID FASTCALL
-IntGdiOffsetRect(LPRECT Rect, INT x, INT y)
-{
- Rect->left += x;
- Rect->right += x;
- Rect->top += y;
- Rect->bottom += y;
-}
-BOOL FASTCALL
-IntGdiUnionRect(PRECT Dest, const RECT* Src1, const RECT* Src2)
+BOOL
+FASTCALL
+RECTL_bIntersectRect(RECTL* prclDst, const RECTL* prcl1, const RECTL* prcl2)
{
- if (IntGdiIsEmptyRect(Src1))
- {
- if (IntGdiIsEmptyRect(Src2))
- {
- IntGdiSetEmptyRect(Dest);
- return FALSE;
- }
- else
- {
- *Dest = *Src2;
- }
- }
- else
+ prclDst->left = max(prcl1->left, prcl2->left);
+ prclDst->right = min(prcl1->right, prcl2->right);
+
+ if (prclDst->left < prclDst->right)
{
- if (IntGdiIsEmptyRect(Src2))
- {
- *Dest = *Src1;
- }
- else
- {
- Dest->left = min(Src1->left, Src2->left);
- Dest->top = min(Src1->top, Src2->top);
- Dest->right = max(Src1->right, Src2->right);
- Dest->bottom = max(Src1->bottom, Src2->bottom);
- }
+ prclDst->top = max(prcl1->top, prcl2->top);
+ prclDst->bottom = min(prcl1->bottom, prcl2->bottom);
+
+ if (prclDst->top < prclDst->bottom)
+ {
+ return TRUE;
+ }
}
- return TRUE;
-}
+ RECTL_vSetEmptyRect(prclDst);
-VOID FASTCALL
-IntGdiSetRect(PRECT Rect, INT left, INT top, INT right, INT bottom)
-{
- Rect->left = left;
- Rect->top = top;
- Rect->right = right;
- Rect->bottom = bottom;
+ return FALSE;
}
-BOOL FASTCALL
-IntGdiIntersectRect(PRECT Dest, const RECT* Src1, const RECT* Src2)
+VOID
+FASTCALL
+RECTL_vMakeWellOrdered(RECTL *prcl)
{
- if (IntGdiIsEmptyRect(Src1) || IntGdiIsEmptyRect(Src2) ||
- Src1->left >= Src2->right || Src2->left >= Src1->right ||
- Src1->top >= Src2->bottom || Src2->top >= Src1->bottom)
+ LONG lTmp;
+ if (prcl->left > prcl->right)
{
- IntGdiSetEmptyRect(Dest);
- return FALSE;
+ 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;
}
-
- Dest->left = max(Src1->left, Src2->left);
- Dest->right = min(Src1->right, Src2->right);
- Dest->top = max(Src1->top, Src2->top);
- Dest->bottom = min(Src1->bottom, Src2->bottom);
-
- return TRUE;
}
+VOID
+FASTCALL
+RECTL_vInflateRect(RECTL *rect, INT dx, INT dy)
+{
+ rect->left -= dx;
+ rect->top -= dy;
+ rect->right += dx;
+ rect->bottom += dy;
+}
/* EOF */