*/
private double[] effectivePath;
- private final List<Runnable> redrawListeners;
private final List<Consumer<GUIWire>> pathChangedListeners;
/**
this.path = path == null ? null : Arrays.copyOf(path, path.length);
this.bounds = new Rectangle(0, 0, -1, -1);
- redrawListeners = new ArrayList<>();
pathChangedListeners = new ArrayList<>();
- logicObs = (i) -> callRedrawListeners();
+ logicObs = (i) -> model.requestRedraw();
pin1.addPinMovedListener(p -> pinMoved());
pin2.addPinMovedListener(p -> pinMoved());
private void pinMoved()
{
recalculateEffectivePath();
- callRedrawListeners();
+ model.requestRedraw();
}
// "graphical" operations
*/
public void render(GeneralGC gc)
{
+ // TODO maybe make wires with logicWidth!=1 thicker? Maybe make thickness selectable?
ColorDefinition wireColor = BitVectorFormatter.formatAsColor(end);
if (wireColor != null)
gc.setForeground(ColorManager.current().toColor(wireColor));
this.path = deepPathCopy(path);
recalculateEffectivePath();
callPathChangedListeners();
- callRedrawListeners();
+ model.requestRedraw();
}
public Point getPathPoint(int index)
path[index] = pointCopy(p);
recalculateEffectivePath();
callPathChangedListeners();
- callRedrawListeners();
+ model.requestRedraw();
}
public void insertPathPoint(Point p, int index)
// listeners
// @formatter:off
- public void addRedrawListener (Runnable listener) {redrawListeners .add (listener);}
public void addPathChangedListener (Consumer<GUIWire> listener) {pathChangedListeners.add (listener);}
- public void removeRedrawListener (Runnable listener) {redrawListeners .remove(listener);}
public void removePathChangedListener(Consumer<GUIWire> listener) {pathChangedListeners.remove(listener);}
- private void callRedrawListeners () {redrawListeners .forEach(l -> l.run ( ));}
private void callPathChangedListeners() {pathChangedListeners.forEach(l -> l.accept(this));}
// @formatter:on