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;
16 private double[] path;
20 public GUIWire(ViewModel model, Pin pin1, Pin pin2, Point... path)
22 this.path = new double[path.length * 2 + 4];
23 for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2)
25 this.path[dstI + 0] = path[srcI].x;
26 this.path[dstI + 1] = path[srcI].y;
28 // TODO support moving pins
34 this.path[this.path.length - 2] = pos.x;
35 this.path[this.path.length - 1] = pos.y;
37 model.wireCreated(this);
40 public void render(GeneralGC gc)
42 Color oldFG = gc.getForeground();
43 gc.setForeground(gc.getDevice().getSystemColor(getSWTColorConstantForWire(wire)));
44 gc.drawPolyline(path);
45 gc.setForeground(oldFG);
48 public void setLogicModelWire(Wire wire)
53 public static int getSWTColorConstantForWire(Wire wire)
55 if (wire != null && wire.length == 1)
56 return getSWTColorConstantForBit(wire.getValue());
58 return SWT.COLOR_BLACK;
61 public static int getSWTColorConstantForBit(Bit bit)
66 return SWT.COLOR_GREEN;
68 return SWT.COLOR_BLUE;
70 return SWT.COLOR_BLACK;
75 throw new IllegalArgumentException("Unknown enum constant: " + bit);