X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2Fsubmodels%2FSimpleRectangularSubmodelComponent.java;h=529767e75c7e4f73e29c52dfc73cc7a388ad718c;hb=dbda073d92ae9dd8e701d904c4c71dd0edd1fce7;hp=605e020e18ed35d453f682f25c2bc354a0f65f6d;hpb=01c5d7035474a5eb58f216b6831b2c0d8c174efa;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SimpleRectangularSubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SimpleRectangularSubmodelComponent.java index 605e020e..529767e7 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SimpleRectangularSubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/submodels/SimpleRectangularSubmodelComponent.java @@ -5,16 +5,18 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.Map; -import java.util.TreeMap; +import java.util.function.Function; import org.eclipse.swt.graphics.Color; +import com.google.gson.JsonObject; + import net.haspamelodica.swt.helper.gcs.GeneralGC; import net.haspamelodica.swt.helper.swtobjectwrappers.Font; import net.haspamelodica.swt.helper.swtobjectwrappers.Point; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; import net.mograsim.logic.ui.model.ViewModelModifiable; +import net.mograsim.logic.ui.model.components.GUIComponent; import net.mograsim.logic.ui.model.wires.MovablePin; import net.mograsim.logic.ui.model.wires.Pin; import net.mograsim.logic.ui.serializing.SubmodelComponentParams; @@ -22,8 +24,6 @@ import net.mograsim.preferences.Preferences; public class SimpleRectangularSubmodelComponent extends SubmodelComponent { - public static String kLabel = "label", kInCount = "input_count", kOutCount = "output_count", kLogicWidth = "logic_width"; - private static final double width = 35; private static final double pinDistance = 10; private static final double pinNameMargin = .5; @@ -98,6 +98,7 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent @Override protected void renderSymbol(GeneralGC gc, Rectangle visibleRegion) { + // TODO code duplication: see SimpleRectagularLikeSymbolRendererProvider Font oldFont = gc.getFont(); gc.setFont(new Font(oldFont.getName(), labelFontHeight, oldFont.getStyle())); Point textExtent = gc.textExtent(label); @@ -131,18 +132,21 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent gc.drawRectangle(getBounds()); } + // serializing + @Override - public SubmodelComponentParams calculateParams() + public SubmodelComponentParams calculateParams(Function getIdentifier) { - SubmodelComponentParams ret = super.calculateParams(); - ret.type = SimpleRectangularSubmodelComponent.class.getSimpleName(); - Map m = new TreeMap<>(); - m.put(kLabel, label); - m.put(kInCount, inputPinNames.toArray()); - m.put(kOutCount, outputPinNames.toArray()); - m.put(kLogicWidth, logicWidth); - ret.specialized = m; - return ret; + SubmodelComponentParams params = super.calculateParams(getIdentifier); + JsonObject symbolRendererParams = new JsonObject(); + symbolRendererParams.addProperty("centerText", label); + symbolRendererParams.addProperty("horizontalComponentCenter", getWidth() / 2); + symbolRendererParams.addProperty("centerTextHeight", labelFontHeight); + symbolRendererParams.addProperty("pinLabelHeight", pinNameFontHeight); + symbolRendererParams.addProperty("pinLabelMargin", pinNameMargin); + params.symbolRendererSnippetID = "SimpleRectangularLikeSymbolRenderer"; + params.symbolRendererParams = symbolRendererParams; + return params; } @Override