protected void logLayout(VisualTable labels){
  Rectangle2D b=getLayoutBounds();
  double breadth=getBreadth(b);
  labels.clear();
  double llo=MathLib.safeLog10(m_lo);
  double lhi=MathLib.safeLog10(m_hi);
  double lspan=lhi - llo;
  double d=MathLib.log10(lhi - llo);
  int e=(int)Math.floor(d);
  int ilo=(int)Math.floor(llo);
  int ihi=(int)Math.ceil(lhi);
  double start=Math.pow(10,ilo);
  double end=Math.pow(10,ihi);
  double step=start * Math.pow(10,e);
  for (double val, v=start, i=0; v <= end; v+=step, ++i) {
    val=MathLib.safeLog10(v);
    if (i != 0 && Math.abs(val - Math.round(val)) < 0.0001) {
      i=0;
      step=10 * step;
    }
    val=((val - llo) / lspan) * breadth;
    if (val < -0.5)     continue;
    VisualItem item=labels.addItem();
    set(item,val,b);
    String label=i == 0 ? m_nf.format(v) : null;
    item.set(LABEL,label);
    item.setDouble(VALUE,v);
  }
}

protected void logLayout ( VisualTable labels ) { Rectangle2D b = getLayoutBounds ( ) ; double breadth = getBreadth ( b ) ; labels . clear ( ) ; double llo = MathLib . safeLog10 ( m_lo ) ; double lhi = MathLib . safeLog10 ( m_hi ) ; double lspan = lhi - llo ; double d = MathLib . log10 ( lhi - llo ) ; int e = ( int ) Math . floor ( d ) ; int ilo = ( int ) Math . floor ( llo ) ; int ihi = ( int ) Math . ceil ( lhi ) ; double start = Math . pow ( 10 , ilo ) ; double end = Math . pow ( 10 , ihi ) ; double step = start * Math . pow ( 10 , e ) ; for ( double val , v = start , i = 0 ; v <= end ; v += step , ++ i ) { val = MathLib . safeLog10 ( v ) ; if ( i != 0 && Math . abs ( val - Math . round ( val ) ) < 0.0001 ) { i = 0 ; step = 10 * step ; } val = ( ( val - llo ) / lspan ) * breadth ; if ( val < - 0.5 ) continue ; VisualItem item = labels . addItem ( ) ; set ( item , val , b ) ; String label = i == 0 ? m_nf . format ( v ) : null ; item . set ( LABEL , label ) ; item . setDouble ( VALUE , v ) ; } }
calculates a quantitative , logarithmically - scaled layout . todo : this method is currently not working correctly .
