75e6fc712e8567ae544234af00dc134996b9b6d4
[Mograsim.git] / net.mograsim.logic.core / src / net / mograsim / logic / core / types / BitVectorFormatter.java
1 package net.mograsim.logic.core.types;\r
2 \r
3 import net.mograsim.logic.core.wires.Wire.ReadEnd;\r
4 import net.mograsim.preferences.ColorDefinition;\r
5 import net.mograsim.preferences.ColorDefinition.BuiltInColor;\r
6 import net.mograsim.preferences.Preferences;\r
7 \r
8 public class BitVectorFormatter\r
9 {\r
10         public static String formatValueAsString(ReadEnd end)\r
11         {\r
12                 return formatAsString(end == null ? null : end.getValues());\r
13         }\r
14 \r
15         public static String formatAsString(BitVector bitVector)\r
16         {\r
17                 if (bitVector == null)\r
18                         return "null";\r
19                 return bitVector.toBitStringMSBFirst();\r
20         }\r
21 \r
22         // TODO doesn't this belong to logic.ui?\r
23         public static ColorDefinition formatAsColor(ReadEnd end)\r
24         {\r
25                 return formatAsColor(end == null ? null : end.getValues());\r
26         }\r
27 \r
28         public static ColorDefinition formatAsColor(BitVector bitVector)\r
29         {\r
30                 // TODO maybe find a color assignment for multiple-bit bit vectors?\r
31                 if (bitVector == null || bitVector.length() != 1)\r
32                         return new ColorDefinition(BuiltInColor.COLOR_BLACK);\r
33                 switch (bitVector.getBit(0))\r
34                 {\r
35                 case ONE:\r
36                         return Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.bit.one");\r
37                 case U:\r
38                         return Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.bit.u");\r
39                 case X:\r
40                         return Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.bit.x");\r
41                 case Z:\r
42                         return Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.bit.z");\r
43                 case ZERO:\r
44                         return Preferences.current().getColorDefinition("net.mograsim.logic.ui.color.bit.zero");\r
45                 default:\r
46                         throw new IllegalArgumentException("Unknown enum constant: " + bitVector.getBit(0));\r
47                 }\r
48         }\r
49 \r
50         private BitVectorFormatter()\r
51         {\r
52                 throw new UnsupportedOperationException("No BitVectorFormatter instances");\r
53         }\r
54 }