Package com.cburch.logisim.circuit

Examples of com.cburch.logisim.circuit.Wire


  public void draw(Canvas canvas, ComponentDrawContext context) {
    Graphics g = context.getGraphics();
    if (exists) {
      Location e0 = start;
      Location e1 = cur;
      Wire shortenBefore = willShorten(start, cur);
      if (shortenBefore != null) {
        Wire shorten = getShortenResult(shortenBefore, start, cur);
        if (shorten == null) {
          return;
        } else {
          e0 = shorten.getEnd0();
          e1 = shorten.getEnd1();
        }
      }
      int x0 = e0.getX();
      int y0 = e0.getY();
      int x1 = e1.getX();
View Full Code Here


      rect.grow(3, 3);
 
      cur = Location.create(curX, curY);
      super.mouseDragged(canvas, g, e);
     
      Wire shorten = null;
      if (startShortening) {
        for (Wire w : canvas.getCircuit().getWires(start)) {
          if (w.contains(cur)) { shorten = w; break; }
        }
      }
View Full Code Here

      exists = false;
      super.mouseReleased(canvas, g, e);
 
      ArrayList<Wire> ws = new ArrayList<Wire>(2);
      if (cur.getY() == start.getY() || cur.getX() == start.getX()) {
        Wire w = Wire.create(cur, start);
        w = checkForRepairs(canvas, w, w.getEnd0());
        w = checkForRepairs(canvas, w, w.getEnd1());
        if (performShortening(canvas, start, cur)) {
          return;
        }
        if (w.getLength() > 0) ws.add(w);
      } else {
        Location m;
        if (direction == HORIZONTAL) {
          m = Location.create(cur.getX(), start.getY());
        } else {
          m = Location.create(start.getX(), cur.getY());
        }
        Wire w0 = Wire.create(start, m);
        Wire w1 = Wire.create(m, cur);
        w0 = checkForRepairs(canvas, w0, start);
        w1 = checkForRepairs(canvas, w1, cur);
        if (w0.getLength() > 0) ws.add(w0);
        if (w1.getLength() > 0) ws.add(w1);
      }
      if (ws.size() > 0) {
        CircuitMutation mutation = new CircuitMutation(canvas.getCircuit());
        mutation.addAll(ws);
        StringGetter desc;
View Full Code Here

    }
    return w;
  }
 
  private Wire willShorten(Location drag0, Location drag1) {
    Wire shorten = shortening;
    if (shorten == null) {
      return null;
    } else if (shorten.endsAt(drag0) || shorten.endsAt(drag1)) {
      return shorten;
    } else {
      return null;
    }
  }
View Full Code Here

      return e0.equals(e1) ? null : Wire.create(e0, e1);
    }
  }
 
  private boolean performShortening(Canvas canvas, Location drag0, Location drag1) {
    Wire shorten = willShorten(drag0, drag1);
    if (shorten == null) {
      return false;
    } else {
      CircuitMutation xn = new CircuitMutation(canvas.getCircuit());
      StringGetter actName;
      Wire result = getShortenResult(shorten, drag0, drag1);
      if (result == null) {
        xn.remove(shorten);
        actName = Strings.getter("removeComponentAction",
            shorten.getFactory().getDisplayGetter());
      } else {
View Full Code Here

          avoid.unmarkWire(w, nextLoc, unmarkable);
        } else if (w.contains(loc0)) { // wires after this will be removed
          found = true;
          if (!loc0.equals(nextLoc)) {
            avoid.unmarkWire(w, nextLoc, unmarkable);
            Wire shortenedWire = Wire.create(pathLoc, loc0);
            repl.replace(w, shortenedWire);
            avoid.markWire(shortenedWire, 0, 0);
          }
        }
        pathLoc = nextLoc;
      }
    }
    while (pathIt.hasNext()) {
      Location loc1 = pathIt.next();
      Wire newWire = Wire.create(loc0, loc1);
      repl.add(newWire);
      avoid.markWire(newWire, 0, 0);
      loc0 = loc1;
    }
  }
View Full Code Here

    if (canvas != null && canvas.getSelection() != null) {
      Collection<Component> sel = canvas.getSelection().getComponents();
      if (sel != null) {
        for (Component c : sel) {
          if (c instanceof Wire) {
            Wire w = (Wire) c;
            if (w.contains(loc) && !w.endsAt(loc)) return select;
          }
        }
      }
    }
   
    Circuit circ = canvas.getCircuit();
    Collection<? extends Component> at = circ.getComponents(loc);
    if (at != null && at.size() > 0) return wiring;
   
    for (Wire w : circ.getWires()) {
      if (w.contains(loc)) { return wiring; }
    }
    return select;
  }
View Full Code Here

        }
      }
      if (found) {
        List<Wire> wirePath;
        Location wirePathStart;
        Wire lastOnPath = findWire(circuit, loc, selected, null);
        if (lastOnPath == null) {
          wirePath = Collections.emptyList();
          wirePathStart = loc;
        } else {
          wirePath = new ArrayList<Wire>();
          Location cur = loc;
          for (Wire w = lastOnPath; w != null;
              w = findWire(circuit, cur, selected, w)) {
            wirePath.add(w);
            cur = w.getOtherEnd(cur);
          }
          Collections.reverse(wirePath);
          wirePathStart = cur;
        }
       
        Direction dir = null;
        if (lastOnPath != null) {
          Location other = lastOnPath.getOtherEnd(loc);
          int dx = loc.getX() - other.getX();
          int dy = loc.getY() - other.getY();
          if (Math.abs(dx) > Math.abs(dy)) {
            dir = dx > 0 ? Direction.EAST : Direction.WEST;
          } else {
View Full Code Here

    return conns;
  }

  private static Wire findWire(Circuit circ, Location loc,
      Set<Component> ignore, Wire ignoreW) {
    Wire ret = null;
    for (Component comp : circ.getComponents(loc)) {
      if (!ignore.contains(comp) && comp != ignoreW) {
        if (ret == null && comp instanceof Wire) {
          ret = (Wire) comp;
        } else {
View Full Code Here

                // wires after this will be removed
                } else if (w.contains(loc0)) {
                    found = true;
                    if (!loc0.equals(nextLoc)) {
                        avoid.unmarkWire(w, nextLoc, unmarkable);
                        Wire shortenedWire = Wire.create(pathLoc, loc0);
                        repl.replace(w, shortenedWire);
                        avoid.markWire(shortenedWire, 0, 0);
                    }
                }
                pathLoc = nextLoc;
            }
        }
        while (pathIt.hasNext()) {
            Location loc1 = pathIt.next();
            Wire newWire = Wire.create(loc0, loc1);
            repl.add(newWire);
            avoid.markWire(newWire, 0, 0);
            loc0 = loc1;
        }
    }
View Full Code Here

TOP

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

Copyright © 2018 www.massapicom. 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.