Package com.cburch.logisim.circuit

Source Code of com.cburch.logisim.circuit.WireIterator

/* Copyright (c) 2010, Carl Burch. License information is located in the
* com.cburch.logisim.Main source code and at www.cburch.com/logisim/. */

package com.cburch.logisim.circuit;

import java.util.Iterator;

import com.cburch.logisim.data.Location;

class WireIterator implements Iterator<Location> {
  private int curX;
  private int curY;
  private int destX;
  private int destY;
  private int deltaX;
  private int deltaY;
  private boolean destReturned;
 
  public WireIterator(Location e0, Location e1) {
    curX = e0.getX();
    curY = e0.getY();
    destX = e1.getX();
    destY = e1.getY();
    destReturned = false;
    if (curX < destX) deltaX = 10;
    else if (curX > destX) deltaX = -10;
    else deltaX = 0;
    if (curY < destY) deltaY = 10;
    else if (curY > destY) deltaY = -10;
    else deltaY = 0;
   
    int offX = (destX - curX) % 10;
    if (offX != 0) { // should not happen, but in case it does...
      destX = curX + deltaX * ((destX - curX) / 10);
    }
    int offY = (destY - curY) % 10;
    if (offY != 0) { // should not happen, but in case it does...
      destY = curY + deltaY * ((destY - curY) / 10);
    }
  }
 
  public boolean hasNext() {
    return !destReturned;
  }
 
  public Location next() {
    Location ret = Location.create(curX, curY);
    destReturned |= curX == destX && curY == destY;
    curX += deltaX;
    curY += deltaY;
    return ret;
  }
 
  public void remove() {
    throw new UnsupportedOperationException();
  }
}
TOP

Related Classes of com.cburch.logisim.circuit.WireIterator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.