internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { bool readingData = false; while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } if (readingData) { DataPairs.Add(pair); } else { if (pair.Code == 280) { DuplicateRecordHandling = (DxfDictionaryDuplicateRecordHandling)pair.ShortValue; buffer.Advance(); readingData = true; continue; } if (base.TrySetPair(pair)) { buffer.Advance(); continue; } if (this.TrySetExtensionData(pair, buffer)) { continue; } if (pair.Code == 100) { Debug.Assert(pair.StringValue == "AcDbXrecord"); buffer.Advance(); continue; } else if (pair.Code == 5 || pair.Code == 105) { // these codes aren't allowed here ExcessCodePairs.Add(pair); } else { DataPairs.Add(pair); readingData = true; } } buffer.Advance(); } return(PostParse()); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { var isReadyForSortHandles = false; while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } switch (pair.Code) { case 5: if (isReadyForSortHandles) { SortItemsPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.HandleString(pair.StringValue))); } else { ((IDxfItemInternal)this).Handle = DxfCommonConverters.HandleString(pair.StringValue); isReadyForSortHandles = true; } break; case 100: isReadyForSortHandles = true; break; case 330: ((IDxfItemInternal)this).OwnerHandle = DxfCommonConverters.HandleString(pair.StringValue); isReadyForSortHandles = true; break; case 331: EntitiesPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.HandleString(pair.StringValue))); isReadyForSortHandles = true; break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } break; } buffer.Advance(); } return(PostParse()); }
internal override DxfEntity PopulateFromBuffer(DxfCodePairBufferReader buffer) { while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } switch (pair.Code) { case 10: // start a new vertex Vertices.Add(new DxfLwPolylineVertex()); Vertices.Last().X = pair.DoubleValue; break; case 20: Vertices.Last().Y = pair.DoubleValue; break; case 40: Vertices.Last().StartingWidth = pair.DoubleValue; break; case 41: Vertices.Last().EndingWidth = pair.DoubleValue; break; case 42: Vertices.Last().Bulge = pair.DoubleValue; break; case 91: Vertices.Last().Identifier = pair.IntegerValue; break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } break; } buffer.Advance(); } return(PostParse()); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } if (pair.Code == 0) { break; } switch (pair.Code) { case 1: Debug.Assert(pair.StringValue == "SectionTypeSettings"); buffer.Advance(); for (var sectionSettings = DxfSectionTypeSettings.FromBuffer(buffer); sectionSettings != null; sectionSettings = DxfSectionTypeSettings.FromBuffer(buffer)) { SectionTypeSettings.Add(sectionSettings); } break; case 90: SectionType = pair.IntegerValue; buffer.Advance(); break; case 91: var generationSettingsCount = pair.IntegerValue; buffer.Advance(); break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } buffer.Advance(); break; } } return(PostParse()); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { bool readVersionNumber = false; while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } switch (pair.Code) { case 5: // pointer to a new light LightsPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.UIntHandle(pair.StringValue))); break; case 1: // don't worry about the name; it'll be read from the light entity directly break; case 90: if (readVersionNumber) { // count of lights is ignored since it's implicitly set by reading the values } else { Version = pair.IntegerValue; readVersionNumber = true; } break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } break; } buffer.Advance(); } return(PostParse()); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { bool isReadingPlotSettings = true; while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } if (isReadingPlotSettings) { if (pair.Code == 100 && pair.StringValue == "AcDbLayout") { isReadingPlotSettings = false; } else { if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } } } else { if (!TrySetPair(pair)) { ExcessCodePairs.Add(pair); } } buffer.Advance(); } return(PostParse()); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { int code_280_index = 0; while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } switch (pair.Code) { case 3: this.Description = (pair.StringValue); buffer.Advance(); break; case 7: var style = DxfTableCellStyle.FromBuffer(buffer); CellStyles.Add(style); break; case 40: this.HorizontalCellMargin = (pair.DoubleValue); buffer.Advance(); break; case 41: this.VerticalCellMargin = (pair.DoubleValue); buffer.Advance(); break; case 70: this.FlowDirection = (DxfFlowDirection)(pair.ShortValue); buffer.Advance(); break; case 71: this.Flags = (pair.ShortValue); buffer.Advance(); break; case 280: switch (code_280_index) { case 0: this.Version = (DxfVersion)(pair.ShortValue); code_280_index++; break; case 1: this.IsTitleSuppressed = BoolShort(pair.ShortValue); code_280_index++; break; default: Debug.Assert(false, "Unexpected extra values for code 280"); break; } buffer.Advance(); break; case 281: this.IsColumnHeadingSuppressed = BoolShort(pair.ShortValue); buffer.Advance(); break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } buffer.Advance(); break; } } return(PostParse()); }
internal override DxfEntity PopulateFromBuffer(DxfCodePairBufferReader buffer) { while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } if (pair.Code == 0) { break; } switch (pair.Code) { // vertex-specific pairs case 10: // start a new vertex Vertices.Add(new DxfLwPolylineVertex()); Vertices.Last().X = pair.DoubleValue; break; case 20: Vertices.Last().Y = pair.DoubleValue; break; case 40: Vertices.Last().StartingWidth = pair.DoubleValue; break; case 41: Vertices.Last().EndingWidth = pair.DoubleValue; break; case 42: Vertices.Last().Bulge = pair.DoubleValue; break; case 91: Vertices.Last().Identifier = pair.IntegerValue; break; // all other pairs case 39: Thickness = pair.DoubleValue; break; case 43: ConstantWidth = pair.DoubleValue; break; case 70: Flags = pair.ShortValue; break; case 210: ExtrusionDirection = ExtrusionDirection.WithUpdatedX(pair.DoubleValue); break; case 220: ExtrusionDirection = ExtrusionDirection.WithUpdatedY(pair.DoubleValue); break; case 230: ExtrusionDirection = ExtrusionDirection.WithUpdatedZ(pair.DoubleValue); break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } break; } buffer.Advance(); } return(PostParse()); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { var hasReadFrontClippingPlane = false; var hasSetInverseMatrix = false; var matrixList = new List <double>(); while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } switch (pair.Code) { case 70: var boundaryPointCount = pair.ShortValue; break; case 10: // code 10 always starts a new point ClipBoundaryDefinitionPoints.Add(new DxfPoint()); ClipBoundaryDefinitionPoints.Last().X = pair.DoubleValue; break; case 20: ClipBoundaryDefinitionPoints.Last().Y = pair.DoubleValue; break; case 30: ClipBoundaryDefinitionPoints.Last().Z = pair.DoubleValue; break; case 11: ClipBoundaryOrigin.X = pair.DoubleValue; break; case 12: ClipBoundaryOrigin.Y = pair.DoubleValue; break; case 13: ClipBoundaryOrigin.Z = pair.DoubleValue; break; case 40: if (!hasReadFrontClippingPlane) { FrontClippingPlaneDistance = pair.DoubleValue; hasReadFrontClippingPlane = true; } else { matrixList.Add(pair.DoubleValue); if (matrixList.Count == 12) { var m11 = matrixList[0]; var m21 = matrixList[1]; var m31 = matrixList[2]; var m41 = 0.0; var m12 = matrixList[0]; var m22 = matrixList[1]; var m32 = matrixList[2]; var m42 = 0.0; var m13 = matrixList[0]; var m23 = matrixList[1]; var m33 = matrixList[2]; var m43 = 0.0; var m14 = matrixList[0]; var m24 = matrixList[1]; var m34 = matrixList[2]; var m44 = 0.0; var matrix = new DxfTransformationMatrix( m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44); if (!hasSetInverseMatrix) { InverseTransformationMatrix = matrix; hasSetInverseMatrix = true; } else { TransformationMatrix = matrix; } matrixList.Clear(); } } break; case 41: BackClippingPlaneDistance = pair.DoubleValue; break; case 71: IsClipBoundaryEnabled = BoolShort(pair.ShortValue); break; case 72: IsFrontClippingPlane = BoolShort(pair.ShortValue); break; case 73: IsBackClippingPlane = BoolShort(pair.ShortValue); break; case 210: ClipBoundaryNormal.X = pair.DoubleValue; break; case 220: ClipBoundaryNormal.Y = pair.DoubleValue; break; case 230: ClipBoundaryNormal.Z = pair.DoubleValue; break; default: if (!TrySetPair(pair)) { ExcessCodePairs.Add(pair); } break; } buffer.Advance(); } Debug.Assert(matrixList.Count == 0); return(PostParse()); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { bool seenVersion = false; bool readingHours = false; int julianDay = -1; while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } switch (pair.Code) { case 1: this.SunSetupName = (pair.StringValue); break; case 2: this.Description = (pair.StringValue); break; case 3: this.SheetSetName = (pair.StringValue); break; case 4: this.SheetSubsetName = (pair.StringValue); break; case 40: this.Spacing = (pair.DoubleValue); break; case 70: this.OutputType = (pair.ShortValue); break; case 73: readingHours = true; break; case 74: this.ShadePlotType = (pair.ShortValue); break; case 75: this.ViewportsPerPage = (pair.ShortValue); break; case 76: this.ViewportDistributionRowCount = (pair.ShortValue); break; case 77: this.ViewportDistributionColumnCount = (pair.ShortValue); break; case 90: if (!seenVersion) { this.Version = pair.IntegerValue; seenVersion = true; } else { // after the version, 90 pairs come in julianDay/secondsPastMidnight duals if (julianDay == -1) { julianDay = pair.IntegerValue; } else { var date = DxfCommonConverters.DateDouble(julianDay); date = date.AddSeconds(pair.IntegerValue); this.Dates.Add(date); julianDay = -1; } } break; case 93: this.StartTime_SecondsPastMidnight = (pair.IntegerValue); break; case 94: this.EndTime_SecondsPastMidnight = (pair.IntegerValue); break; case 95: this.IntervalInSeconds = (pair.IntegerValue); break; case 290: if (!readingHours) { this.UseSubset = (pair.BoolValue); readingHours = true; } else { this.Hours.Add(pair.ShortValue); } break; case 291: this.SelectDatesFromCalendar = (pair.BoolValue); break; case 292: this.SelectRangeOfDates = (pair.BoolValue); break; case 293: this.LockViewports = (pair.BoolValue); break; case 294: this.LabelViewports = (pair.BoolValue); break; case 340: this.PageSetupWizardPointer.Handle = UIntHandle(pair.StringValue); break; case 341: this.ViewPointer.Handle = UIntHandle(pair.StringValue); break; case 342: this.VisualStylePointer.Handle = UIntHandle(pair.StringValue); break; case 343: this.TextStylePointer.Handle = UIntHandle(pair.StringValue); break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } break; } buffer.Advance(); } return(PostParse()); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { var readElementCount = false; var elementCount = 0; while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } switch (pair.Code) { case 2: this.StyleName = (pair.StringValue); break; case 3: this.Description = (pair.StringValue); break; case 51: this.StartAngle = (pair.DoubleValue); break; case 52: this.EndAngle = (pair.DoubleValue); break; case 70: this._flags = (pair.ShortValue); break; case 71: elementCount = (pair.ShortValue); readElementCount = true; break; case 49: // found a new element value Elements.Add(new DxfMLineStyleElement() { Offset = pair.DoubleValue }); break; case 62: if (readElementCount) { // update the last element if (Elements.Count > 0) { Elements[Elements.Count - 1].Color = FromRawValue(pair.ShortValue); } } else { this.FillColor = FromRawValue(pair.ShortValue); } break; case 6: // update the last element if (Elements.Count > 0) { Elements[Elements.Count - 1].LineType = pair.StringValue; } break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } break; } buffer.Advance(); } return(this); }
internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer) { bool readElementCount = false; while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } while (this.TrySetExtensionData(pair, buffer)) { pair = buffer.Peek(); } switch (pair.Code) { case 2: this.StyleName = (pair.StringValue); break; case 3: this.Description = (pair.StringValue); break; case 6: this._elementLineTypes.Add((pair.StringValue)); break; case 49: this._elementOffsets.Add((pair.DoubleValue)); break; case 51: this.StartAngle = (pair.DoubleValue); break; case 52: this.EndAngle = (pair.DoubleValue); break; case 62: if (readElementCount) { this._elementColors.Add(FromRawValue(pair.ShortValue)); } else { this.FillColor = FromRawValue(pair.ShortValue); } break; case 70: this._flags = (pair.ShortValue); break; case 71: this._elementCount = (pair.ShortValue); readElementCount = true; break; default: if (!base.TrySetPair(pair)) { ExcessCodePairs.Add(pair); } break; } buffer.Advance(); } return(PostParse()); }