public EscapeCommand(int identifier, StructuredDataRecord dataRecord) : base(6, 1) { Identifier = identifier; Name = GetName(identifier); DataRecord = dataRecord; }
public override void ReadFromBinary(IBinaryReader reader) { CharacterSetIndex = reader.ReadIndex(); Type = (CharacterSetList.Type)reader.ReadEnum(); SequenceTail = reader.ReadFixedString(); OctetsPerCode = reader.ReadInt(); GlyphSource = reader.ReadIndex(); CodeAssocs = reader.ReadSDR(); }
public Tile(CgmFile container, CompressionType compressionType, int rowPaddingIndicator, int cellColorPrecision, StructuredDataRecord sdr, MemoryStream image) : this(container) { CompressionType = compressionType; RowPaddingIndicator = rowPaddingIndicator; DataRecord = sdr; Image = image; CellColorPrecision = cellColorPrecision; }
public GlyphMapping(CgmFile container, int characterSetIndex, CharacterSetList.Type type, string sequenceTail, int octetsPerCode, int glyphSource, StructuredDataRecord codeAssocs) : this(container) { CharacterSetIndex = characterSetIndex; Type = type; SequenceTail = sequenceTail; OctetsPerCode = octetsPerCode; GlyphSource = glyphSource; CodeAssocs = codeAssocs; }
private void UpdateLinkTarget(StructuredDataRecord dataRecord) { var firstElement = dataRecord.Elements.FirstOrDefault(); object[] linkValues = firstElement != null ? firstElement.Values : new object[0]; if (linkValues.Length == 3) { _currentNode.LinkTarget = new HotspotLinkTarget(Convert.ToString(linkValues[0]), Convert.ToString(linkValues[1]), Convert.ToString(linkValues[2])); } }
private void UpdateScreentip(StructuredDataRecord dataRecord) { var firstElement = dataRecord.Elements.FirstOrDefault(); object screentipObject = firstElement != null?firstElement.Values.FirstOrDefault() : null; if (screentipObject != null) { _currentNode.Screentip = Convert.ToString(screentipObject); } }
private void UpdateName(StructuredDataRecord dataRecord) { var firstElement = dataRecord.Elements.FirstOrDefault(); object nameObject = firstElement != null?firstElement.Values.FirstOrDefault() : null; if (nameObject != null) { _currentNode.Name = Convert.ToString(nameObject); } }
public BitonalTile(CgmFile container, CompressionType compressionType, int rowPaddingIndicator, CgmColor backgroundcolor, CgmColor foregroundcolor, StructuredDataRecord sdr, MemoryStream image) : this(container) { DataRecord = sdr; CompressionType = compressionType; RowPaddingIndicator = rowPaddingIndicator; Backgroundcolor = backgroundcolor; Foregroundcolor = foregroundcolor; Image = image; }
private void UpdateHotspotRegion(StructuredDataRecord dataRecord) { // region has 2 SDR elements; the region type and the actual values according to the type // just say its an object boundary hotspot if we can't find anything better if (dataRecord.Elements.Count() != 2) { return; } var firstElement = dataRecord.Elements.First(); object regionTypeObject = firstElement != null?firstElement.Values.FirstOrDefault() : null; HotspotRegionType regionType; if (regionTypeObject != null && Enum.TryParse <HotspotRegionType>(Convert.ToString(regionTypeObject), out regionType)) { _currentNode.RegionType = regionType; _currentNode.RegionValues = dataRecord.Elements.Skip(1).First().Values.OfType <double>().ToArray(); } }
public static EscapeCommand Escape(MetafileReader reader) { int identifier = reader.ReadInteger(); string dataRecordString = reader.ReadString(); // attempt to parse the data record as structured record, in case it is a known one // otherwise it is probably application specific and cannot be assumed to be a structured record StructuredDataRecord dataRecord; if (EscapeCommand.KnownEscapeTypes.ContainsKey(identifier)) { dataRecord = ApplicationStructureDescriptorReader.ParseStructuredDataRecord(dataRecordString); } else { dataRecord = new StructuredDataRecord(new[] { new StructuredDataElement(DataTypeIndex.String, new object[] { dataRecordString }), }); } return(new EscapeCommand(identifier, dataRecord)); }
public override void ReadFromBinary(IBinaryReader reader) { AttributeType = reader.ReadFixedString(); Data = reader.ReadSDR(); }
public ApplicationStructureAttribute(CgmFile container, string attributeType, StructuredDataRecord sdr) : this(container) { AttributeType = attributeType; Data = sdr; }
public StructuredDataRecord ReadSDR() { var ret = new StructuredDataRecord(); var sdrLength = GetStringCount(); var startPos = CurrentArg; while (CurrentArg < (startPos + sdrLength)) { var dataType = (StructuredDataRecord.StructuredDataType)ReadIndex(); var dataCount = ReadInt(); var data = new List <object>(); for (var i = 0; i < dataCount; i++) { switch (dataType) { case StructuredDataRecord.StructuredDataType.SDR: data.Add(ReadSDR()); break; case StructuredDataRecord.StructuredDataType.CI: data.Add(ReadColorIndex()); break; case StructuredDataRecord.StructuredDataType.CD: data.Add(ReadDirectColor()); break; case StructuredDataRecord.StructuredDataType.N: data.Add(ReadName()); break; case StructuredDataRecord.StructuredDataType.E: data.Add(ReadEnum()); break; case StructuredDataRecord.StructuredDataType.I: data.Add(ReadInt()); break; case StructuredDataRecord.StructuredDataType.RESERVED: // reserved break; case StructuredDataRecord.StructuredDataType.IF8: data.Add(ReadSignedInt8()); break; case StructuredDataRecord.StructuredDataType.IF16: data.Add(ReadSignedInt16()); break; case StructuredDataRecord.StructuredDataType.IF32: data.Add(ReadSignedInt32()); break; case StructuredDataRecord.StructuredDataType.IX: data.Add(ReadIndex()); break; case StructuredDataRecord.StructuredDataType.R: data.Add(ReadReal()); break; case StructuredDataRecord.StructuredDataType.S: data.Add(ReadString()); break; case StructuredDataRecord.StructuredDataType.SF: data.Add(ReadString()); break; case StructuredDataRecord.StructuredDataType.VC: data.Add(ReadVc()); break; case StructuredDataRecord.StructuredDataType.VDC: data.Add(ReadVdc()); break; case StructuredDataRecord.StructuredDataType.CCO: data.Add(ReadDirectColor()); break; case StructuredDataRecord.StructuredDataType.UI8: data.Add(ReadUInt8()); break; case StructuredDataRecord.StructuredDataType.UI32: data.Add(ReadUInt32()); break; case StructuredDataRecord.StructuredDataType.BS: // bit stream? XXX how do we know how many bits to read? throw new NotImplementedException("ReadSDR- bit stream"); case StructuredDataRecord.StructuredDataType.CL: // color list? XXX how to read? -> evtl wie in CellArray throw new NotImplementedException("ReadSDR - color list"); case StructuredDataRecord.StructuredDataType.UI16: data.Add(ReadUInt16()); break; default: throw new NotSupportedException("ReadSDR()-unsupported dataTypeIndex " + dataType); } } ret.Add(dataType, dataCount, data); } return(ret); }
public ApplicationStructureAttribute(string attributeType, StructuredDataRecord dataRecord) : base(9, 1) { AttributeType = attributeType; DataRecord = dataRecord; }
public void WriteSDR(StructuredDataRecord data) { var oldBucket = _bucket; _bucket = new WriterBucket(); var argumentsCount = data.Members.Count; foreach (var record in data.Members) { argumentsCount += 2 + record.Data.Count; } //WriteDataLength(argumentsCount); foreach (var record in data.Members) { WriteIndex((int)record.Type); WriteInt(record.Count); foreach (var val in record.Data) { switch (record.Type) { case StructuredDataRecord.StructuredDataType.SDR: WriteSDR((StructuredDataRecord)val); break; case StructuredDataRecord.StructuredDataType.CI: WriteColorIndex((int)val, _cgm.ColourIndexPrecision); break; case StructuredDataRecord.StructuredDataType.CD: WriteDirectColor((System.Drawing.Color)val); break; case StructuredDataRecord.StructuredDataType.N: WriteName((int)val); break; case StructuredDataRecord.StructuredDataType.E: WriteEnum((int)val); break; case StructuredDataRecord.StructuredDataType.I: WriteInt((int)val); break; case StructuredDataRecord.StructuredDataType.RESERVED: // reserved break; case StructuredDataRecord.StructuredDataType.IF8: WriteSignedInt8((int)val); break; case StructuredDataRecord.StructuredDataType.IF16: WriteSignedInt16((int)val); break; case StructuredDataRecord.StructuredDataType.IF32: WriteSignedInt32((int)val); break; case StructuredDataRecord.StructuredDataType.IX: WriteIndex((int)val); break; case StructuredDataRecord.StructuredDataType.R: WriteReal((double)val); break; case StructuredDataRecord.StructuredDataType.S: WriteString((string)val); break; case StructuredDataRecord.StructuredDataType.SF: WriteFixedString((string)val); break; case StructuredDataRecord.StructuredDataType.VC: WriteVc((VC)val); break; case StructuredDataRecord.StructuredDataType.VDC: WriteVdc((double)val); break; case StructuredDataRecord.StructuredDataType.CCO: WriteDirectColor((System.Drawing.Color)val); break; case StructuredDataRecord.StructuredDataType.UI8: WriteUInt8((int)val); break; case StructuredDataRecord.StructuredDataType.UI32: WriteUInt32((int)val); break; case StructuredDataRecord.StructuredDataType.BS: _bucket.AddRange((byte[])val); break; case StructuredDataRecord.StructuredDataType.CL: // color list? XXX how to read? -> evtl wie in CellArray throw new NotImplementedException("Write SDR color list"); case StructuredDataRecord.StructuredDataType.UI16: WriteUInt16((int)val); break; default: throw new NotSupportedException($"Data type {record.Type} is not supported by WriteSDR"); } } } var sdrBucket = _bucket; _bucket = oldBucket; WriteDataLength(sdrBucket.Count); _bucket.AddRange(sdrBucket); }