import net.mograsim.logic.core.types.BitVectorFormatter;
import net.mograsim.logic.core.wires.Wire;
import net.mograsim.logic.core.wires.Wire.ReadEnd;
-import net.mograsim.logic.ui.ColorHelper;
import net.mograsim.logic.ui.model.ViewModelModifiable;
+import net.mograsim.preferences.ColorDefinition;
+import net.mograsim.preferences.ColorManager;
/**
* A wire connecting exactly two {@link Pin}s.
*
* @author Daniel Kirschten
*/
- public GUIWire(ViewModelModifiable model, ConnectionPoint pin1, ConnectionPoint pin2)
+ public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2)
+ {
+ this(model, pin1, pin2, (Point[]) null);
+ }
+
+ /**
+ * Creates a new {@link GUIWire} with automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2)
+ {
+ this(model, pin1, pin2, (Point[]) null);
+ }
+
+ /**
+ * Creates a new {@link GUIWire} with automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2)
+ {
+ this(model, pin1, pin2, (Point[]) null);
+ }
+
+ /**
+ * Creates a new {@link GUIWire} with automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2)
{
this(model, pin1, pin2, (Point[]) null);
}
*
* @author Daniel Kirschten
*/
- public GUIWire(ViewModelModifiable model, ConnectionPoint pin1, ConnectionPoint pin2, Point... path)
+ public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, WireCrossPoint pin2, Point... path)
{
this(model, pin1.getPin(), pin2.getPin(), path);
}
*
* @author Daniel Kirschten
*/
- GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path)
+ public GUIWire(ViewModelModifiable model, WireCrossPoint pin1, Pin pin2, Point... path)
+ {
+ this(model, pin1.getPin(), pin2, path);
+ }
+
+ /**
+ * Creates a new {@link GUIWire} without automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public GUIWire(ViewModelModifiable model, Pin pin1, WireCrossPoint pin2, Point... path)
+ {
+ this(model, pin1, pin2.getPin(), path);
+ }
+
+ /**
+ * Creates a new {@link GUIWire} without automatic interpolation.
+ *
+ * @author Daniel Kirschten
+ */
+ public GUIWire(ViewModelModifiable model, Pin pin1, Pin pin2, Point... path)
{
logicObs = (i) -> callRedrawListeners();
this.model = model;
*/
public void render(GeneralGC gc)
{
- ColorHelper.executeWithDifferentForeground(gc, BitVectorFormatter.formatAsColor(end), () -> gc.drawPolyline(effectivePath));
+ ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end);
+ if (wireColor != null)
+ gc.setForeground(ColorManager.current().toColor(wireColor));
+ gc.drawPolyline(effectivePath);
}
/**