public void WritePointSet(PointSet pointSet, int sliceId, string comment = null) { var groupMeta = new GpdGroupMeta { Points = pointSet.Count, Slice = sliceId, Id = _groupId++, Comment = comment }; WriteGroupMeta(groupMeta); foreach (var point in pointSet) { WritePoint(point); } }
public PointSet ReadPointSet(out GpdGroupMeta metaData) { if (_pointGroupId >= Header.Groups) { metaData = null; return(null); } metaData = ReadMetaData(); var pointSet = new PointSet((int)metaData.Points); while (_pointId < metaData.Points) { pointSet.Points.Add(ReadPoint()); } _pointGroupId++; return(pointSet); }
private GpdGroupMeta ReadMetaData() { var stringBuilder = new StringBuilder(); // Meta is ASCII encoded string, so we can read it as chars byte metaDataTagRead = 0; do { var readChar = _binaryReader.ReadChar(); if (readChar == MetaDataChar) { metaDataTagRead++; } stringBuilder.Append(readChar); } while (metaDataTagRead != 2); var metadataLine = stringBuilder.ToString(); var metaData = GpdGroupMeta.Parse(metadataLine); _sliceId = metaData.Slice; _pointId = 0; _pointGroupId = metaData.Id; _pointsInCurrentGroup = metaData.Points; return(metaData); }
public void WriteGroupMeta(GpdGroupMeta metadata) { WriteLine(metadata.ToString()); }