/// <inheritdoc /> /// <summary> /// This section when called will read the data that is contained in /// the list that was passed in from the constructor. /// </summary> public override void ReadSection() { // Iterate through the list of tagged data for (var currentIndex = StartIndex; currentIndex < DataList.Length; ++currentIndex) { // set the current data var currentData = DataList.GetPair(currentIndex); // Set the ending index of the file and break out of the loop if (currentData.GroupCode == GroupCodesBase.EndSectionMarker) { EndIndex = currentIndex; break; } // The master switch for the values switch (currentData.Value) { /* * All Entities Cases will follow the same formula: * 1. Create a new Buffer class * 2. pass the Data list to the buffer class with the starting * index of the entity. * 3. Add the entity to the entity list */ // LINE case LineGroupCodes.StartMarker: var lineBuffer = new LineBuffer(); lineBuffer.Parse(DataList, currentIndex); Entities.Add(new Line(lineBuffer)); continue; // LWPOLYLINE case LwPolylineCodes.StartMarker: var lwPolyLineBuffer = new LwPolyLineBuffer(); lwPolyLineBuffer.Parse(DataList, currentIndex); Entities.Add(new LwPolyLine(lwPolyLineBuffer)); continue; // HATCH case HatchCodes.StartMarker: var hatchBuffer = new HatchBuffer(); hatchBuffer.Parse(DataList, currentIndex); Entities.Add(new Hatch(hatchBuffer)); continue; // ARC case CircularArcCodes.ArcStartMarker: var arcBuffer = new CircularArcBuffer(); arcBuffer.Parse(DataList, currentIndex); Entities.Add(new CircularArc(arcBuffer)); continue; // TEXT case TextCodes.StartMarker: var textBuffer = new TextBuffer(); textBuffer.Parse(DataList, currentIndex); Entities.Add(new Text(textBuffer)); continue; // MTEXT case MTextCodes.StartMarker: var mTextBuffer = new MTextBuffer(); mTextBuffer.Parse(DataList, currentIndex); Entities.Add(new MText(mTextBuffer)); continue; // POINT case PointCodes.StartMarker: var pointBuffer = new PointBuffer(); pointBuffer.Parse(DataList, currentIndex); Entities.Add(new Point(pointBuffer)); continue; // CIRCLE case CircularArcCodes.CircleStartMarker: var circleBuffer = new CircularArcBuffer(); circleBuffer.Parse(DataList, currentIndex); Entities.Add(new Circle(circleBuffer)); break; // DEFAULT default: continue; } } }