public virtual void Write(Res_value data) { _writer.Write(data.Size); _writer.Write(data.Res0); _writer.Write((byte) data.DataType); _writer.Write(data.RawData); }
private string FormatValue(Res_value value) { Color c; int index0; switch (value.DataType) { case Res.ValueType.TYPE_STRING: return _parser.Strings.GetString(value.StringValue); case Res.ValueType.TYPE_NULL: return "null"; case Res.ValueType.TYPE_FLOAT: return value.FloatValue.ToString("g"); case Res.ValueType.TYPE_FRACTION: index0 = (int) value.ComplexFractionUnit; return string.Format( "{0:g}{1}", value.ComplexValue, index0 < 2 ? new[] {"%", "%p"}[index0] : "?"); case Res.ValueType.TYPE_DIMENSION: index0 = (int) value.ComplexDimensionUnit; return string.Format( "{0:g}{1}", value.ComplexValue, index0 < 6 ? new[] {"px", "dip", "sp", "pt", "in", "mm"}[index0] : "?"); case Res.ValueType.TYPE_INT_DEC: return string.Format("{0:d}", value.IntValue); case Res.ValueType.TYPE_INT_HEX: return string.Format("0x{0:x}", value.IntValue); case Res.ValueType.TYPE_INT_BOOLEAN: return value.IntValue == 0 ? "false" : "true"; case Res.ValueType.TYPE_INT_COLOR_ARGB8: c = value.ColorValue; return string.Format("#{0:x2}{1:x2}{2:x2}{3:x2}", c.A, c.R, c.G, c.B); case Res.ValueType.TYPE_INT_COLOR_ARGB4: c = value.ColorValue; return string.Format("#{0:x1}{1:x1}{2:x1}{3:x1}", c.A/51, c.R/51, c.G/51, c.B/51); case Res.ValueType.TYPE_INT_COLOR_RGB8: c = value.ColorValue; return string.Format("#{0:x2}{1:x2}{2:x2}", c.R, c.G, c.B); case Res.ValueType.TYPE_INT_COLOR_RGB4: c = value.ColorValue; return string.Format("#{0:x1}{1:x1}{2:x1}", c.R/51, c.G/51, c.B/51); case Res.ValueType.TYPE_REFERENCE: uint? ident = value.ReferenceValue.Ident; if (ident == null) return "@undef"; return string.Format("@{0:x8}", ident.Value); default: return string.Format("({0}:{1:x8})", value.DataType, value.RawData); } }