X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodel%2Fcomponents%2Fatomic%2FGUIMerger.java;fp=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodel%2Fcomponents%2Fatomic%2FGUIMerger.java;h=0000000000000000000000000000000000000000;hb=93b398d6271a538a2a4c9f4de07a3b4a8a2a7fd4;hp=804f871d98c4e37f1b0814650e1c1dec09849b5b;hpb=0a04a4ed66ecebd4254541c4977599f6052c115a;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIMerger.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIMerger.java deleted file mode 100644 index 804f871d..00000000 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIMerger.java +++ /dev/null @@ -1,111 +0,0 @@ -package net.mograsim.logic.model.model.components.atomic; - -import org.eclipse.swt.SWT; - -import net.haspamelodica.swt.helper.gcs.GeneralGC; -import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; -import net.mograsim.logic.core.types.BitVectorFormatter; -import net.mograsim.logic.core.wires.CoreWire.ReadEnd; -import net.mograsim.logic.model.model.ViewModelModifiable; -import net.mograsim.logic.model.model.components.GUIComponent; -import net.mograsim.logic.model.model.wires.Pin; -import net.mograsim.logic.model.model.wires.PinUsage; -import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.model.modeladapter.componentadapters.MergerAdapter; -import net.mograsim.logic.model.serializing.IdentifyParams; -import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; -import net.mograsim.preferences.ColorDefinition; -import net.mograsim.preferences.ColorManager; -import net.mograsim.preferences.Preferences; - -public class GUIMerger extends GUIComponent -{ - private static final double width = 10; - private static final double heightPerPin = 10; - - public final int logicWidth; - private final Pin outputPin; - - private final ReadEnd[] inputEnds; - private ReadEnd outputEnd; - - public GUIMerger(ViewModelModifiable model, int logicWidth) - { - this(model, logicWidth, null); - } - - public GUIMerger(ViewModelModifiable model, int logicWidth, String name) - { - super(model, name); - this.logicWidth = logicWidth; - setSize(width, (logicWidth - 1) * heightPerPin); - double inputHeight = (logicWidth - 1) * heightPerPin; - for (int i = 0; i < logicWidth; i++, inputHeight -= 10) - addPin(new Pin(this, "I" + i, 1, PinUsage.TRISTATE, 0, inputHeight)); - addPin(this.outputPin = new Pin(this, "O", logicWidth, PinUsage.TRISTATE, width, (logicWidth - 1) * heightPerPin / 2)); - inputEnds = new ReadEnd[logicWidth]; - } - - @Override - public void render(GeneralGC gc, Rectangle visibleRegion) - { - double posX = getPosX(); - double posY = getPosY(); - - ColorDefinition c = BitVectorFormatter.formatAsColor(outputEnd); - if (c != null) - gc.setForeground(ColorManager.current().toColor(c)); - gc.setLineWidth( - Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire." + (logicWidth == 1 ? "singlebit" : "multibit"))); - double outLineY = posY + (logicWidth - 1) * heightPerPin / 2; - gc.drawLine(posX + width / 2, outLineY, posX + width, outLineY); - gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire.singlebit")); - double inputHeight = posY; - for (int i = 0; i < logicWidth; i++, inputHeight += 10) - { - c = BitVectorFormatter.formatAsColor(inputEnds[i]); - if (c != null) - gc.setForeground(ColorManager.current().toColor(c)); - gc.drawLine(posX, inputHeight, posX + width / 2, inputHeight); - } - gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground")); - int oldLineCap = gc.getLineCap(); - int lineJoin = gc.getLineJoin(); - // TODO find better "replacement" for JOIN_BEVEL - // TODO it looks weird that the vertical line is thinner than the single multibit wire. - gc.setLineCap(lineJoin == SWT.JOIN_MITER ? SWT.CAP_SQUARE : lineJoin == SWT.JOIN_ROUND ? SWT.CAP_ROUND : SWT.CAP_SQUARE); - gc.drawLine(posX + width / 2, posY, posX + width / 2, posY + heightPerPin * (logicWidth - 1)); - gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.default")); - gc.setLineCap(oldLineCap); - } - - @Override - public String getIDForSerializing(IdentifyParams idParams) - { - return "GUIMerger"; - } - - @Override - public Integer getParamsForSerializing(IdentifyParams idParams) - { - return logicWidth; - } - - public void setLogicModelBinding(ReadEnd[] inputEnds, ReadEnd outputEnd) - { - System.arraycopy(inputEnds, 0, this.inputEnds, 0, logicWidth); - this.outputEnd = outputEnd; - } - - public Pin getOutputPin() - { - return outputPin; - } - - static - { - ViewLogicModelAdapter.addComponentAdapter(new MergerAdapter()); - IndirectGUIComponentCreator.setComponentSupplier(GUIMerger.class.getCanonicalName(), - (m, p, n) -> new GUIMerger(m, p.getAsInt(), n)); - } -} \ No newline at end of file