internal static DxfEntitiesSection EntitiesSectionFromBuffer(DxfCodePairBufferReader buffer) { var entities = new List <DxfEntity>(); entities.Clear(); while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (DxfCodePair.IsSectionEnd(pair)) { // done reading entities buffer.Advance(); // swallow (0, ENDSEC) break; } if (pair.Code != 0) { throw new DxfReadException("Expected new entity.", pair); } var entity = DxfEntity.FromBuffer(buffer); if (entity != null) { entities.Add(entity); } } var section = new DxfEntitiesSection(); var collected = GatherEntities(entities); section.Entities.AddRange(collected); return(section); }
internal static DxfEntitiesSection EntitiesSectionFromBuffer(DxfCodePairBufferReader buffer) { var entities = new List<DxfEntity>(); while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (DxfCodePair.IsSectionEnd(pair)) { // done reading entities buffer.Advance(); // swallow (0, ENDSEC) break; } if (pair.Code != 0) { throw new DxfReadException("Expected new entity.", pair); } var entity = DxfEntity.FromBuffer(buffer); if (entity != null) { entities.Add(entity); } } var section = new DxfEntitiesSection(); var collected = GatherEntities(entities); section.Entities.AddRange(collected); return section; }
internal static DxfSection FromBuffer(DxfCodePairBufferReader buffer, DxfAcadVersion version) { Debug.Assert(buffer.ItemsRemain); var sectionType = buffer.Peek(); buffer.Advance(); if (sectionType.Code != 2) { throw new DxfReadException($"Expected code 2, got {sectionType.Code}", sectionType); } DxfSection section; switch (sectionType.StringValue) { case BlocksSectionText: section = DxfBlocksSection.BlocksSectionFromBuffer(buffer, version); break; case ClassesSectionText: section = DxfClassesSection.ClassesSectionFromBuffer(buffer, version); break; case EntitiesSectionText: section = DxfEntitiesSection.EntitiesSectionFromBuffer(buffer); break; case HeaderSectionText: section = DxfHeaderSection.HeaderSectionFromBuffer(buffer); break; case ObjectsSectionText: section = DxfObjectsSection.ObjectsSectionFromBuffer(buffer); break; case TablesSectionText: section = DxfTablesSection.TablesSectionFromBuffer(buffer); break; case ThumbnailImageSectionText: section = DxfThumbnailImageSection.ThumbnailImageSectionFromBuffer(buffer); break; default: SwallowSection(buffer); section = null; break; } return(section); }