/* * @(#)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() { } }