public double reduceTo(int width,int height,double limit){
  int w=getIconWidth();
  int h=getIconHeight();
  double scale=1.0;
  if (w > width) {
    scale=((double)width) / w;
  }
  if (h > height) {
    scale=Math.min(scale,((double)height) / h);
  }
  if (scale < 1) {
    if (limit > 0.0) {
      scale=Math.max(scale,limit);
    }
    AffineTransform t=AffineTransform.getScaleInstance(scale,scale);
    transformImage((int)Math.ceil(scale * w),(int)Math.ceil(scale * h),t,null);
  }
  return scale;
}

public double reduceTo ( int width , int height , double limit ) { int w = getIconWidth ( ) ; int h = getIconHeight ( ) ; double scale = 1.0 ; if ( w > width ) { scale = ( ( double ) width ) / w ; } if ( h > height ) { scale = Math . min ( scale , ( ( double ) height ) / h ) ; } if ( scale < 1 ) { if ( limit > 0.0 ) { scale = Math . max ( scale , limit ) ; } AffineTransform t = AffineTransform . getScaleInstance ( scale , scale ) ; transformImage ( ( int ) Math . ceil ( scale * w ) , ( int ) Math . ceil ( scale * h ) , t , null ) ; } return scale ; }
if necessary , reduce this image to within ' width ' x ' height ' dimensions . limit the reduction by ' limit '
