X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2FBitVectorFormatter.java;h=b8cd0f9da2b1cb3c5dac0127951a9298676536a1;hb=b456eecf8d1563c7e0ca64a5bc2cf146173dc3ff;hp=4836ed1b717287285554226f5acf2a8a40ccc680;hpb=590c4809a069b0d30529735bf58f0db5382f8a88;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/BitVectorFormatter.java b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/BitVectorFormatter.java index 4836ed1b..b8cd0f9d 100644 --- a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/BitVectorFormatter.java +++ b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/BitVectorFormatter.java @@ -1,10 +1,15 @@ package net.mograsim.logic.model; import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_ONE_COLOR; +import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_ONE_DASH; import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_U_COLOR; +import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_U_DASH; import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_X_COLOR; +import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_X_DASH; import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_ZERO_COLOR; +import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_ZERO_DASH; import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_Z_COLOR; +import static net.mograsim.logic.model.preferences.RenderPreferences.BIT_Z_DASH; import java.math.BigInteger; @@ -76,7 +81,52 @@ public class BitVectorFormatter return bitvector; } - // TODO doesn't this belong to logic.model? + public static double[] formatAsLineDash(RenderPreferences renderPrefs, ReadEnd end) + { + return formatAsLineDash(renderPrefs, end == null ? null : end.getValues()); + } + + public static double[] formatAsLineDash(RenderPreferences renderPrefs, BitVector bitVector) + { + // TODO maybe find a line dash assignment for multiple-bit bit vectors? + if (bitVector == null || bitVector.length() != 1) + return null; + String prefName; + switch (bitVector.getLSBit(0)) + { + case ONE: + prefName = BIT_ONE_DASH; + break; + case U: + prefName = BIT_U_DASH; + break; + case X: + prefName = BIT_X_DASH; + break; + case Z: + prefName = BIT_Z_DASH; + break; + case ZERO: + prefName = BIT_ZERO_DASH; + break; + default: + throw new IllegalArgumentException("Unknown enum constant: " + bitVector.getLSBit(0)); + } + return parseLineDashes(renderPrefs.getString(prefName)); + } + + // TODO this method does not belong here + public static double[] parseLineDashes(String dashesString) + { + if (dashesString.isEmpty()) + return null; + String[] dashesStrings = dashesString.split(","); + double[] dashes = new double[dashesStrings.length]; + for (int i = 0; i < dashesStrings.length; i++) + dashes[i] = Double.parseDouble(dashesStrings[i]); + return dashes; + } + public static ColorDefinition formatAsColor(RenderPreferences renderPrefs, ReadEnd end) { return formatAsColor(renderPrefs, end == null ? null : end.getValues());