javauis/eswt_qt/s60utils/java/src/com/nokia/mj/impl/uitestutils/Rect.java
changeset 21 2a9601315dfc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_qt/s60utils/java/src/com/nokia/mj/impl/uitestutils/Rect.java	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+package com.nokia.mj.impl.uitestutils;
+
+/**
+ * Simple rect container
+ * @author sampkaar
+ *
+ */
+public class Rect {
+	
+	private int x;
+	private int y;
+	private int width;
+	private int height;
+	
+	public Rect(int x, int y, int width, int height) {
+		this.x = x;
+		this.y = y;
+		this.width = width;
+		this.height = height;
+	}
+	
+	public int x() {
+		return this.x;
+	}
+	
+	public int y() {
+		return this.y;
+	}
+	
+	public int width() {
+		return this.width;
+	}
+	
+	public int height() {
+		return this.height;
+	}
+
+	public Rect intersection(Rect aRect){
+
+		if( aRect.x < this.x && aRect.x+aRect.width < this.x ||
+            aRect.x > this.x+this.width && aRect.x+aRect.width > this.x+this.width)
+        { // no intersection
+        	return new Rect(0,0,0,0);
+        } 
+        if( aRect.y < this.y && aRect.y+aRect.height < this.y ||
+            aRect.y > this.y+this.height && aRect.y+aRect.height > this.y+this.height)
+        { // no intersection
+            return new Rect(0,0,0,0);
+        }
+        int x = 0;
+        int y = 0;
+        int w = 0;
+        int h = 0;
+        
+        if(aRect.x < this.x)
+        {
+        	x = this.x;
+        	if (this.x + this.width < aRect.x + aRect.width)
+        	{
+        		w = this.width;
+        	}else
+        	{
+        		w = aRect.x + aRect.width - this.x;        		
+        	}
+        } else
+        { // aRect.x >= this.x
+        	x = aRect.x;        	
+        	if (aRect.x + aRect.width < this.x + this.width)
+        	{
+        		w = aRect.width;
+        	}else
+        	{
+        		w = this.x + this.width - aRect.x;
+        	}
+        }
+        if(aRect.y < this.y)
+        {
+        	y = this.y;
+        	if (this.y + this.height < aRect.y + aRect.height)
+        	{
+        		h = this.height;
+        	}else
+        	{
+        		h = aRect.y + aRect.height - this.y;
+        	}
+        } else
+        { // aRect.y >= this.y
+        	y = aRect.y;        	
+        	if (aRect.y + aRect.height < this.y + this.height)
+        	{
+        		h = aRect.height;
+        	}else
+        	{
+        		h = this.y + this.height - aRect.y;        		
+        	}
+        }
+		return new Rect(x, y, w, h);
+	}
+
+}