com.actelion.research.gui.generic.GenericRectangle Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of openchemlib Show documentation
Show all versions of openchemlib Show documentation
Open Source Chemistry Library
package com.actelion.research.gui.generic;
public class GenericRectangle implements GenericShape {
public double x,y,width,height;
public GenericRectangle() {}
public GenericRectangle(double x, double y, double w, double h) {
this.x = x;
this.y = y;
this.width = w;
this.height = h;
}
@Override
public boolean contains(double x, double y) {
return x>=this.x && x<=this.x+this.width && y>=this.y && y<=this.y+this.height;
}
public boolean contains(GenericRectangle r) {
return contains(r.x, r.y) && contains(r.x+r.width, r.y+r.height);
}
public void set(double x, double y, double w, double h) {
this.x = x;
this.y = y;
this.width = w;
this.height = h;
}
public GenericRectangle union(GenericRectangle r) {
double x = Math.min(this.x, r.x);
double y = Math.min(this.y, r.y);
double w = Math.max(this.x+this.width, r.x+r.width) - x;
double h = Math.max(this.y+this.height, r.y+r.height) - y;
return new GenericRectangle(x, y, w, h);
}
public boolean intersects(GenericRectangle r) {
return (x < r.x+r.width) && (y < r.y+r.height) && (r.x < x+width) && (r.y < y+height);
}
public GenericRectangle intersection(GenericRectangle r) {
if (!intersects(r))
return null;
double x = Math.max(this.x, r.x);
double y = Math.max(this.y, r.y);
double w = Math.min(this.x+this.width, r.x+r.width) - x;
double h = Math.min(this.y+this.height, r.y+r.height) - y;
return new GenericRectangle(x, y, w, h);
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public double getWidth() {
return width;
}
public double getHeight() {
return height;
}
public double getCenterX() {
return x + width / 2.0;
}
public double getCenterY() {
return y + height / 2.0;
}
@Override
public String toString() {
return "x:"+x+" y:"+y+" w:"+width+" h:"+height;
}
}