/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Eclipse Public License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.eclipse.org/org/documents/epl-v10.php
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.ide.eclipse.adt.editors.layout.gscripts;
/**
* Mutable rectangle bounds.
* <p/>
* To be valid, w >= 1 and h >= 1.
* By definition:
* - right side = x + w - 1.
* - bottom side = y + h - 1.
*/
public class Rect {
public int x, y, w, h;
/** Initialize an invalid rectangle. */
public Rect() {
}
/** Initialize rectangle to the given values. They can be invalid. */
public Rect(int x, int y, int w, int h) {
set(x, y, w, h);
}
/** Initialize rectangle to the given values. They can be invalid. */
public void set(int x, int y, int w, int h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
/** Initialize rectangle to match the given one. */
public void set(Rect r) {
x = r.x;
y = r.y;
w = r.w;
h = r.h;
}
/** Returns a new instance of a rectangle with the same values. */
public Rect copy() {
return new Rect(x, y, w, h);
}
/** Returns true if the rectangle has valid bounds, i.e. w>0 and h>0. */
public boolean isValid() {
return w > 0 && h > 0;
}
/** Returns true if the rectangle contains the x,y coordinates, borders included. */
public boolean contains(int x, int y) {
return isValid() &&
x >= this.x &&
y >= this.y &&
x < (this.x + this.w) &&
y < (this.y + this.h);
}
@Override
public String toString() {
return String.format("Rect [%dx%d - %dx%d]", x, y, w, h);
}
}