/*
Copyright (C) 2001, 2006 United States Government as represented by
the Administrator of the National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind;
/**
* An iteration over <code>View</code> state changes.
*
* @author dcollins
* @version $Id: ViewStateIterator.java 3557 2007-11-17 04:10:32Z dcollins $
* @see View
*/
public interface ViewStateIterator
{
/**
* If possible, merges this <code>ViewStateIterator</code> with <code>stateIterator</code> and returns the result.
*
* @param view the <code>View</code> context.
* @param stateIterator the <code>ViewStateIterator</code> to merge with.
* @return the merged <code>ViewStateIterator</code>.
* @throws IllegalArgumentException if <code>view</code> or <code>stateIterator</code> are null.
*/
ViewStateIterator coalesceWith(View view, ViewStateIterator stateIterator);
/**
* Returns true if <code>ViewStateIterator</code> has more state changes.
*
* @param view the <code>View</code> context.
* @return true if <code>ViewStateIterator</code> has more state changes; false otherwise.
*/
boolean hasNextState(View view);
/**
* Applies the the next viewing state change to <code>view</code>.
*
* @param view the <code>View</code> context.
*/
void nextState(View view);
}