X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2Fmi%2Fnandbased%2FGUInand3.java;fp=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2Fmi%2Fnandbased%2FGUInand3.java;h=8caf9905c00e95e616cdbaf10ee2adb422423f48;hb=7b0da7328f81fd64f3f674e33ea030e896759a58;hp=0000000000000000000000000000000000000000;hpb=9136e3b04ffcfe6d9a3c372c3d65f62a7f1f9376;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java new file mode 100644 index 00000000..8caf9905 --- /dev/null +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/mi/nandbased/GUInand3.java @@ -0,0 +1,80 @@ +package net.mograsim.logic.ui.model.components.mi.nandbased; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.ui.model.ViewModelModifiable; +import net.mograsim.logic.ui.model.components.GUINandGate; +import net.mograsim.logic.ui.model.components.SubmodelComponent; +import net.mograsim.logic.ui.model.wires.GUIWire; +import net.mograsim.logic.ui.model.wires.Pin; +import net.mograsim.logic.ui.model.wires.WireCrossPoint; + +public class GUInand3 extends SubmodelComponent +{ + private final Pin pinA; + private final Pin pinB; + private final Pin pinC; + private final Pin pinY; + + public GUInand3(ViewModelModifiable model) + { + super(model, "GUInand3"); + setSize(40, 30); + setSubmodelScale(.4); + + Pin A = addSubmodelInterface(1, 0, 5); + Pin B = addSubmodelInterface(1, 0, 15); + Pin C = addSubmodelInterface(1, 0, 25); + Pin Y = addSubmodelInterface(1, 40, 15); + + this.pinA = getSupermodelPin(A); + this.pinB = getSupermodelPin(B); + this.pinC = getSupermodelPin(C); + this.pinY = getSupermodelPin(Y); + + initSubmodelComponents(A, B, C, Y); + } + + @SuppressWarnings("unused") // for GUIWires being created + private void initSubmodelComponents(Pin A, Pin B, Pin C, Pin Y) + { + GUINandGate nandAB = new GUINandGate(submodelModifiable, 1); + GUINandGate andAB = new GUINandGate(submodelModifiable, 1); + GUINandGate nandABC = new GUINandGate(submodelModifiable, 1); + + WireCrossPoint cpNandAB = new WireCrossPoint(submodelModifiable, 1); + + nandAB.moveTo(10, 15); + andAB.moveTo(40, 15); + nandABC.moveTo(70, 27.5); + cpNandAB.moveTo(35, 25); + + new GUIWire(submodelModifiable, A, nandAB.getInputPins().get(0), new Point(5, 12.5), new Point(5, 20)); + new GUIWire(submodelModifiable, B, nandAB.getInputPins().get(1), new Point(5, 37.5), new Point(5, 30)); + new GUIWire(submodelModifiable, nandAB.getOutputPin(), cpNandAB.getPin()); + new GUIWire(submodelModifiable, cpNandAB.getPin(), andAB.getInputPins().get(0), new Point(35, 20)); + new GUIWire(submodelModifiable, cpNandAB.getPin(), andAB.getInputPins().get(1), new Point(35, 30)); + new GUIWire(submodelModifiable, andAB.getOutputPin(), nandABC.getInputPins().get(0), new Point(65, 25), new Point(65, 32.5)); + new GUIWire(submodelModifiable, C, nandABC.getInputPins().get(1), new Point(65, 62.5), new Point(65, 42.5)); + new GUIWire(submodelModifiable, nandABC.getOutputPin(), Y); + } + + public Pin getPinA() + { + return pinA; + } + + public Pin getPinB() + { + return pinB; + } + + public Pin getPinC() + { + return pinC; + } + + public Pin getPinY() + { + return pinY; + } +} \ No newline at end of file