mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-25 22:18:48 -04:00
Added a small switch symbol to the transmission gate.
This commit is contained in:
parent
243e58fd88
commit
7f359f6ccc
@ -75,4 +75,10 @@ public class TransGate extends Node implements Element {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the state of the transmission gate
|
||||
*/
|
||||
public boolean isClosed() {
|
||||
return closed;
|
||||
}
|
||||
}
|
||||
|
@ -80,13 +80,22 @@ public abstract class FETShape implements Shape {
|
||||
* @param graphic the instance to draw to
|
||||
*/
|
||||
private void drawSwitch(Graphic graphic) {
|
||||
boolean closed = fet.isClosed();
|
||||
drawSwitch(graphic, fet.isClosed());
|
||||
}
|
||||
|
||||
/**
|
||||
* draws the switch
|
||||
*
|
||||
* @param graphic the graphics instance to draw to
|
||||
* @param closed state of the switch
|
||||
*/
|
||||
public static void drawSwitch(Graphic graphic, boolean closed) {
|
||||
if (closed) {
|
||||
graphic.drawLine(new Vector(SIZE + SIZE2, 0), new Vector(SIZE + SIZE2, SIZE), Style.SHAPE_PIN);
|
||||
} else {
|
||||
graphic.drawLine(new Vector(SIZE + SIZE2, 0), new Vector(SIZE + SIZE2, SIZE2 / 2), Style.SHAPE_PIN);
|
||||
graphic.drawPolygon(new Polygon(false)
|
||||
.add(SIZE + SIZE2 / 2, SIZE2 / 2)
|
||||
.add(SIZE + SIZE2 / 2, SIZE2 / 2 + 2)
|
||||
.add(SIZE + SIZE2, SIZE - SIZE2 / 2)
|
||||
.add(SIZE + SIZE2, SIZE), Style.SHAPE_PIN);
|
||||
}
|
||||
|
@ -3,13 +3,11 @@ package de.neemann.digital.draw.shapes;
|
||||
import de.neemann.digital.core.Observer;
|
||||
import de.neemann.digital.core.element.ElementAttributes;
|
||||
import de.neemann.digital.core.element.PinDescriptions;
|
||||
import de.neemann.digital.core.switching.TransGate;
|
||||
import de.neemann.digital.draw.elements.IOState;
|
||||
import de.neemann.digital.draw.elements.Pin;
|
||||
import de.neemann.digital.draw.elements.Pins;
|
||||
import de.neemann.digital.draw.graphics.Graphic;
|
||||
import de.neemann.digital.draw.graphics.Polygon;
|
||||
import de.neemann.digital.draw.graphics.Style;
|
||||
import de.neemann.digital.draw.graphics.Vector;
|
||||
import de.neemann.digital.draw.graphics.*;
|
||||
|
||||
import static de.neemann.digital.draw.shapes.GenericShape.SIZE;
|
||||
import static de.neemann.digital.draw.shapes.GenericShape.SIZE2;
|
||||
@ -34,8 +32,11 @@ public class TransGateShape implements Shape {
|
||||
.add(SIZE * 2, SIZE)
|
||||
.add(0, 0);
|
||||
|
||||
private static final Transform TRANS_SWITCH = new TransformRotate(new Vector(SIZE2, SIZE + SIZE2), 1);
|
||||
|
||||
private final PinDescriptions input;
|
||||
private final PinDescriptions output;
|
||||
private TransGate transGate;
|
||||
|
||||
/**
|
||||
* Creates a trantmission gate
|
||||
@ -60,6 +61,7 @@ public class TransGateShape implements Shape {
|
||||
|
||||
@Override
|
||||
public InteractorInterface applyStateMonitor(IOState ioState, Observer guiObserver) {
|
||||
transGate = (TransGate) ioState.getElement();
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -69,6 +71,9 @@ public class TransGateShape implements Shape {
|
||||
graphic.drawPolygon(BOTTOM, Style.NORMAL);
|
||||
graphic.drawLine(new Vector(SIZE, -SIZE), new Vector(SIZE, -SIZE2), Style.NORMAL);
|
||||
graphic.drawCircle(new Vector(SIZE - RAD, P - RAD), new Vector(SIZE + RAD, P + RAD), Style.NORMAL);
|
||||
|
||||
if (transGate != null)
|
||||
FETShape.drawSwitch(new GraphicTransform(graphic, TRANS_SWITCH), transGate.isClosed());
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user