content: /*
   * @(#)BasicRangeIterator.java
   *
   * Copyright 2002 EGANTT LLP. All rights reserved.
   * PROPRIETARY/QPL. Use is subject to license terms.
   */
  
  package com.egantt.drawing.painter.range.iterator;
  
  import java.awt.Rectangle;
  import java.util.Iterator;
  
  import com.egantt.drawing.painter.range.RangeTransform;
  
  public class BasicRangeIterator extends AbstractRangeIterator
  {
  	protected final RangeTransform transform;
  	protected final long height;
  
  	protected transient Object data;
  
  	public BasicRangeIterator(Iterator iter, RangeTransform transform, long width, long height)
  	{
  		super (iter, width);
  
  	   this.transform = transform;
  	   this.height = height;
  	}
  
  	// _________________________________________________________________________
  
  	public Object next() {
  		return next(0);
  	}
  	public Object next(int recursionCount)
  	{
  	   this.lastData = data;
  	   this.data = iter.next();
  
  		long x2 = transform.transform(data, (long) width);
  
  	   int width = (int) x2 - (int) lastX;
  	   if (width <= 0)
  	   {
  			return iter.hasNext() && recursionCount < 10 ? next(++recursionCount) : null; // not much we can do with first object
  	   }
  
  	   Rectangle rect = new Rectangle((int)lastX, 0, width, (int)height);
  
  	   this.lastX = x2;
  	   return rect;
  	}
  
  	// _________________________________________________________________________
  	
  	public void remove()
  	{
  	}
  }
  