001package polaris.sdk.ui;
002/** Immutable logical-pixel rectangle. Top-left coordinates, bottom/right excluded. */
003public final class Rect {
004 public final float x,y,w,h;
005 public Rect(float x,float y,float w,float h){this.x=x;this.y=y;this.w=Math.max(0,w);this.h=Math.max(0,h);}
006 public boolean contains(float px,float py){return px>=x&&py>=y&&px<x+w&&py<y+h;}
007 public Rect intersect(Rect b){float l=Math.max(x,b.x),t=Math.max(y,b.y);return new Rect(l,t,Math.max(0,Math.min(x+w,b.x+b.w)-l),Math.max(0,Math.min(y+h,b.y+b.h)-t));}
008 public Rect inset(float v){return new Rect(x+v,y+v,Math.max(0,w-v*2),Math.max(0,h-v*2));}
009 public boolean empty(){return w<=0||h<=0;}
010}