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}