X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2FSubmodelComponentParams.java;fp=net.mograsim.logic.ui%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fui%2Fmodel%2Fcomponents%2FSubmodelComponentParams.java;h=5fd7ab5e437b69eb71379bbd4fdc7bc1dab3fd4e;hb=6432c12630fa3f80ec19bf23229844abd42105e3;hp=0000000000000000000000000000000000000000;hpb=82cc1d386820c179be331790fa3c1fae22bada76;p=Mograsim.git diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java new file mode 100644 index 00000000..5fd7ab5e --- /dev/null +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java @@ -0,0 +1,72 @@ +package net.mograsim.logic.ui.model.components; + +import java.io.IOException; +import java.util.Map; + +import net.haspamelodica.swt.helper.swtobjectwrappers.Point; +import net.mograsim.logic.ui.util.JsonHandler; + +/** + * This class contains all the information necessary to create a new {@link SubmodelComponent} + */ +public class SubmodelComponentParams +{ + String type; + double width, height; + InterfacePinParams[] interfacePins; + ComponentCompositionParams composition; + Map specialized; + + public static class InterfacePinParams + { + public Point location; + public int logicWidth; + } + + public static class InnerWireParams + { + public InnerPinParams pin1, pin2; + public Point[] path; + } + + public static class InnerPinParams + { + public int compId, pinIndex; + } + + public static class ComponentCompositionParams + { + double innerScale; + InnerComponentParams[] subComps; + InnerWireParams[] innerWires; + + public static class InnerComponentParams + { + public Point pos; + public String type; + public int logicWidth; + } + } + + public static SubmodelComponentParams readJson(String path) throws IOException + { + return JsonHandler.readJson(path, SubmodelComponentParams.class); + } + + /** + * Writes this {@link SubmodelComponentParams} object into a file in json format. The correct file extension is important! Check + * {@link SubmodelComponentParams}.fileExtension + */ + public void writeJson(String path) + { + try + { + JsonHandler.writeJson(this, path); + } + catch (IOException e) + { + System.err.println("Failed to write SubComponentParams to file"); + e.printStackTrace(); + } + } +} \ No newline at end of file