1 package era.mi.gui.model.wires;
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.graphics.Color;
6 import era.mi.gui.model.ViewModel;
7 import era.mi.logic.types.Bit;
8 import era.mi.logic.wires.Wire;
9 import net.haspamelodica.swt.helper.gcs.GeneralGC;
10 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
14 private final ViewModel model;
17 private double[] path;
21 public GUIWire(ViewModel model, Pin pin1, Pin pin2, Point... path)
24 this.path = new double[path.length * 2 + 4];
25 for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2)
27 this.path[dstI + 0] = path[srcI].x;
28 this.path[dstI + 1] = path[srcI].y;
30 // TODO support moving pins
36 this.path[this.path.length - 2] = pos.x;
37 this.path[this.path.length - 1] = pos.y;
39 model.wireCreated(this);
44 model.wireDestroyed(this);
47 public void render(GeneralGC gc)
49 Color oldFG = gc.getForeground();
50 gc.setForeground(gc.getDevice().getSystemColor(getSWTColorConstantForWire(wire)));
51 gc.drawPolyline(path);
52 gc.setForeground(oldFG);
55 public void setLogicModelWire(Wire wire)
60 public static int getSWTColorConstantForWire(Wire wire)
62 if (wire != null && wire.length == 1)
63 return getSWTColorConstantForBit(wire.getValue());
65 return SWT.COLOR_BLACK;
68 public static int getSWTColorConstantForBit(Bit bit)
73 return SWT.COLOR_GREEN;
75 return SWT.COLOR_BLUE;
77 return SWT.COLOR_BLACK;
82 throw new IllegalArgumentException("Unknown enum constant: " + bit);