Exemple #1
0
        public DvAxisSequence(IStreamReader reader)
            : base(reader)
        {
            // DVAXIS = Axis Begin [ValueRange] [AXM] AXS [CRTMLFRT] End

            // Axis
            this.Axis = (Axis)BiffRecord.ReadRecord(reader);

            // Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            // [ValueRange]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.ValueRange)
            {
                this.ValueRange = (ValueRange)BiffRecord.ReadRecord(reader);
            }

            // [AXM]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.YMult)
            {
                this.AxmSequence = new AxmSequence(reader);
            }

            // AXS
            this.AxsSequence = new AxsSequence(reader);

            // [CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            // End
            this.End = (End)BiffRecord.ReadRecord(reader);
        }
Exemple #2
0
        public LdSequence(IStreamReader reader)
            : base(reader)
        {
            /// Legend Begin Pos ATTACHEDLABEL [FRAME] [CrtLayout12] [TEXTPROPS] [CRTMLFRT] End

            // Legend
            this.Legend = (Legend)BiffRecord.ReadRecord(reader);

            // Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            // Pos
            this.Pos = (Pos)BiffRecord.ReadRecord(reader);

            // [ATTACHEDLABEL]
            this.AttachedLabelSequence = new AttachedLabelSequence(reader);

            // [FRAME]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Frame)
            {
                this.FrameSequence = new FrameSequence(reader);
            }

            // [CrtLayout12]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLayout12)
            {
                this.CrtLayout12 = (CrtLayout12)BiffRecord.ReadRecord(reader);
            }

            // [TEXTPROPS]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.RichTextStream ||
                BiffRecord.GetNextRecordType(reader) == RecordType.TextPropsStream)
            {
                this.TextPropsSequence = new TextPropsSequence(reader);
            }

            //[CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            // End
            this.End = (End)BiffRecord.ReadRecord(reader);
        }
Exemple #3
0
        public IvAxisSequence(IStreamReader reader)
            : base(reader)
        {
            // IVAXIS = Axis Begin [CatSerRange] AxcExt [CatLab] AXS [CRTMLFRT] End

            // Axis
            this.Axis = (Axis)BiffRecord.ReadRecord(reader);

            // Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            // [CatSerRange]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CatSerRange)
            {
                this.CatSerRange = (CatSerRange)BiffRecord.ReadRecord(reader);
            }

            // AxcExt
            if (BiffRecord.GetNextRecordType(reader) == RecordType.AxcExt)
            {
                // NOTE: we parse this as an optional record because then we can use the IvAxisSequence to
                //    parse a SeriesDataSequence as well. SeriesDataSequence is just a simple version of IvAxisSequence.
                //    This simplifies mapping later on.
                this.AxcExt = (AxcExt)BiffRecord.ReadRecord(reader);
            }

            // [CatLab]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CatLab)
            {
                this.CatLab = (CatLab)BiffRecord.ReadRecord(reader);
            }

            // AXS
            this.AxsSequence = new AxsSequence(reader);

            // [CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            // End
            this.End = (End)BiffRecord.ReadRecord(reader);
        }
        public AttachedLabelSequence(IStreamReader reader)
            : base(reader)
        {
            //ATTACHEDLABEL = Text Begin Pos [FontX] [AlRuns] AI [FRAME] [ObjectLink] [DataLabExtContents] [CrtLayout12] [TEXTPROPS] [CRTMLFRT] End

            //Text
            this.Text = (Text)BiffRecord.ReadRecord(reader);

            //Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            //Pos
            this.Pos = (Pos)BiffRecord.ReadRecord(reader);

            //[FontX]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.FontX)
            {
                this.FontX = (FontX)BiffRecord.ReadRecord(reader);
            }

            //[AlRuns]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.AlRuns)
            {
                this.AlRuns = (AlRuns)BiffRecord.ReadRecord(reader);
            }

            //AI
            this.AiSequence = new AiSequence(reader);

            //[FRAME]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Frame)
            {
                this.FrameSequence = new FrameSequence(reader);
            }

            //[ObjectLink]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.ObjectLink)
            {
                this.ObjectLink = (ObjectLink)BiffRecord.ReadRecord(reader);
            }

            //[DataLabExtContents]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.DataLabExtContents)
            {
                this.DataLabExtContents = (DataLabExtContents)BiffRecord.ReadRecord(reader);
            }

            //[CrtLayout12]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLayout12)
            {
                this.CrtLayout12 = (CrtLayout12)BiffRecord.ReadRecord(reader);
            }

            //[TEXTPROPS]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.RichTextStream ||
                BiffRecord.GetNextRecordType(reader) == RecordType.TextPropsStream)
            {
                this.TextPropsSequence = new TextPropsSequence(reader);
            }

            //[CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            //End
            this.End = (End)BiffRecord.ReadRecord(reader);
        }
Exemple #5
0
        public SsSequence(IStreamReader reader)
            : base(reader)
        {
            // SS = DataFormat Begin [Chart3DBarShape] [LineFormat AreaFormat PieFormat]
            // [SerFmt] [GELFRAME] [MarkerFormat] [AttachedLabel] *2SHAPEPROPS [CRTMLFRT] End

            //// SS = DataFormat Begin [Chart3DBarShape] [LineFormat AreaFormat PieFormat]
            //// [SerFmt] [LineFormat] [AreaFormat] [GELFRAME] [MarkerFormat] [AttachedLabel] *2SHAPEPROPS [CRTMLFRT] End

            // DataFormat
            this.DataFormat = (DataFormat)BiffRecord.ReadRecord(reader);

            // Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            // [Chart3DBarShape]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Chart3DBarShape)
            {
                this.Chart3DBarShape = (Chart3DBarShape)BiffRecord.ReadRecord(reader);
            }

            // [LineFormat AreaFormat PieFormat]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.LineFormat)
            {
                this.LineFormat = (LineFormat)BiffRecord.ReadRecord(reader);
            }
            if (BiffRecord.GetNextRecordType(reader) == RecordType.AreaFormat)
            {
                this.AreaFormat = (AreaFormat)BiffRecord.ReadRecord(reader);
            }
            if (BiffRecord.GetNextRecordType(reader) == RecordType.PieFormat)
            {
                this.PieFormat = (PieFormat)BiffRecord.ReadRecord(reader);
            }


            //// this is for the case that LineFormat and AreaFormat
            //// exists and is behind the SerFmt which doesn't exists
            //if (this.PieFormat == null)
            //{
            //    if (this.LineFormat1 != null)
            //    {
            //        this.LineFormat2 = this.LineFormat1;
            //        this.LineFormat1 = null;
            //    }
            //    if (this.AreaFormat1 != null)
            //    {
            //        this.AreaFormat2 = this.AreaFormat1;
            //        this.AreaFormat1 = null;
            //    }
            //}

            // [SerFmt]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SerFmt)
            {
                this.SerFmt = (SerFmt)BiffRecord.ReadRecord(reader);
            }

            // [LineFormat] [AreaFormat] [GELFRAME] [MarkerFormat] [AttachedLabel] End

            //if (BiffRecord.GetNextRecordType(reader) == RecordType.LineFormat)
            //{
            //    this.LineFormat2 = (LineFormat)BiffRecord.ReadRecord(reader);
            //}

            //// [AreaFormat]
            //if (BiffRecord.GetNextRecordType(reader) ==
            //    RecordType.AreaFormat)
            //{
            //    this.AreaFormat2 = (AreaFormat)BiffRecord.ReadRecord(reader);
            //}

            // [GELFRAME]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.GelFrame)
            {
                this.GelFrameSequence = new GelFrameSequence(reader);
            }

            // [MarkerFormat]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.MarkerFormat)
            {
                this.MarkerFormat = (MarkerFormat)BiffRecord.ReadRecord(reader);
            }

            // [AttachedLabel]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.AttachedLabel)
            {
                this.AttachedLabel = (AttachedLabel)BiffRecord.ReadRecord(reader);
            }

            // *2SHAPEPROPS
            this.ShapePropsSequences = new List <ShapePropsSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.ShapePropsStream)
            {
                this.ShapePropsSequences.Add(new ShapePropsSequence(reader));
            }

            // [CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            // End
            this.End = (End)BiffRecord.ReadRecord(reader);
        }
Exemple #6
0
        public ChartSheetContentSequence(IStreamReader reader)
            : base(reader)
        {
            // reset id counter for chart groups
            ChartFormatIdGenerator.Instance.StartNewChartsheetSubstream();
            ChartAxisIdGenerator.Instance.StartNewChartsheetSubstream();

            // CHARTSHEETCONTENT = [WriteProtect] [SheetExt] [WebPub] *HFPicture PAGESETUP PrintSize [HeaderFooter] [BACKGROUND] *Fbi *Fbi2 [ClrtClient] [PROTECTION]
            //          [Palette] [SXViewLink] [PivotChartBits] [SBaseRef] [MsoDrawingGroup] OBJECTS Units CHARTFOMATS SERIESDATA *WINDOW *CUSTOMVIEW [CodeName] [CRTMLFRT] EOF

            // [WriteProtect]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.WriteProtect)
            {
                this.WriteProtect = (WriteProtect)BiffRecord.ReadRecord(reader);
            }

            // [SheetExt]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SheetExt)
            {
                this.SheetExt = (SheetExt)BiffRecord.ReadRecord(reader);
            }

            // [WebPub]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.WebPub)
            {
                this.WebPub = (WebPub)BiffRecord.ReadRecord(reader);
            }

            // *HFPicture
            while (BiffRecord.GetNextRecordType(reader) == RecordType.HFPicture)
            {
                this.HFPictures.Add((HFPicture)BiffRecord.ReadRecord(reader));
            }

            // PAGESETUP
            this.PageSetupSequence = new PageSetupSequence(reader);

            // PrintSize
            if (BiffRecord.GetNextRecordType(reader) == RecordType.PrintSize)
            {
                this.PrintSize = (PrintSize)BiffRecord.ReadRecord(reader);
            }

            // [HeaderFooter]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.HeaderFooter)
            {
                this.HeaderFooter = (HeaderFooter)BiffRecord.ReadRecord(reader);
            }

            // [BACKGROUND]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.BkHim)
            {
                this.BackgroundSequence = new BackgroundSequence(reader);
            }

            // *Fbi
            this.Fbis = new List <Fbi>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Fbi)
            {
                this.Fbis.Add((Fbi)BiffRecord.ReadRecord(reader));
            }

            // *Fbi2
            this.Fbi2s = new List <Fbi2>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Fbi2)
            {
                this.Fbi2s.Add((Fbi2)BiffRecord.ReadRecord(reader));
            }

            // [ClrtClient]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.ClrtClient)
            {
                this.ClrtClient = (ClrtClient)BiffRecord.ReadRecord(reader);
            }

            // [PROTECTION]
            this.ProtectionSequence = new ProtectionSequence(reader);

            // [Palette]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Palette)
            {
                this.Palette = (Palette)BiffRecord.ReadRecord(reader);
            }

            // [SXViewLink]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SXViewLink)
            {
                this.SXViewLink = (SXViewLink)BiffRecord.ReadRecord(reader);
            }

            // [PivotChartBits]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.PivotChartBits)
            {
                this.PivotChartBits = (PivotChartBits)BiffRecord.ReadRecord(reader);
            }

            // [SBaseRef]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SBaseRef)
            {
                this.SBaseRef = (SBaseRef)BiffRecord.ReadRecord(reader);
            }

            // [MsoDrawingGroup]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.MsoDrawingGroup)
            {
                this.MsoDrawingGroup = (MsoDrawingGroup)BiffRecord.ReadRecord(reader);
            }

            // OBJECTS
            this.ObjectsSequence = new ObjectsSequence(reader);

            // Units
            this.Units = (Units)BiffRecord.ReadRecord(reader);

            // CHARTFOMATS
            this.ChartFormatsSequence = new ChartFormatsSequence(reader);

            // SERIESDATA
            this.SeriesDataSequence = new SeriesDataSequence(reader);

            // *WINDOW
            this.WindowSequences = new List <WindowSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Window2)
            {
                this.WindowSequences.Add(new WindowSequence(reader));
            }

            // *CUSTOMVIEW
            this.CustomViewSequences = new List <CustomViewSequence>();

            // CUSTOMVIEW seems to be totally optional,
            // so check for the existence of the next sequences
            while (BiffRecord.GetNextRecordType(reader) != RecordType.CodeName &&
                   BiffRecord.GetNextRecordType(reader) != RecordType.CrtMlFrt &&
                   BiffRecord.GetNextRecordType(reader) != RecordType.EOF)
            {
                this.CustomViewSequences.Add(new CustomViewSequence(reader));
            }

            //this.CustomViewSequences = new List<CustomViewSequence>();
            //while (BiffRecord.GetNextRecordType(reader) == RecordType.UserSViewBegin)
            //{
            //    this.CustomViewSequences.Add(new CustomViewSequence(reader));
            //}

            // [CodeName]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CodeName)
            {
                this.CodeName = (CodeName)BiffRecord.ReadRecord(reader);
            }

            // [CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            // EOF
            this.EOF = (EOF)BiffRecord.ReadRecord(reader);
        }
        public ChartFormatsSequence(IStreamReader reader)
            : base(reader)
        {
            // CHARTFOMATS = Chart Begin *2FONTLIST Scl PlotGrowth [FRAME] *SERIESFORMAT *SS ShtProps
            //    *2DFTTEXT AxesUsed 1*2AXISPARENT [CrtLayout12A] [DAT] *ATTACHEDLABEL [CRTMLFRT]
            //    *([DataLabExt StartObject] ATTACHEDLABEL [EndObject]) [TEXTPROPS] *2CRTMLFRT End

            // Chart
            this.Chart = (Chart)BiffRecord.ReadRecord(reader);

            // Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            // *2FONTLIST
            this.FontListSequences = new List <FontListSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.FrtFontList)
            {
                this.FontListSequences.Add(new FontListSequence(reader));
            }

            // Scl
            this.Scl = (Scl)BiffRecord.ReadRecord(reader);

            // PlotGrowth
            this.PlotGrowth = (PlotGrowth)BiffRecord.ReadRecord(reader);

            // [FRAME]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Frame)
            {
                this.FrameSequence = new FrameSequence(reader);
            }

            // *SERIESFORMAT
            this.SeriesFormatSequences = new List <SeriesFormatSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Series)
            {
                var seriesFormatSequence = new SeriesFormatSequence(reader);
                // remember the index in the collection
                seriesFormatSequence.order = (ushort)this.SeriesFormatSequences.Count;
                this.SeriesFormatSequences.Add(seriesFormatSequence);
            }

            // *SS
            this.SsSequences = new List <SsSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.DataFormat)
            {
                this.SsSequences.Add(new SsSequence(reader));
            }

            // ShtProps
            this.ShtProps = (ShtProps)BiffRecord.ReadRecord(reader);

            // *2DFTTEXT
            this.DftTextSequences = new List <DftTextSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.DataLabExt ||
                   BiffRecord.GetNextRecordType(reader) == RecordType.DefaultText)
            {
                this.DftTextSequences.Add(new DftTextSequence(reader));
            }

            // AxesUsed
            this.AxesUsed = (AxesUsed)BiffRecord.ReadRecord(reader);

            // 1*2AXISPARENT
            this.AxisParentSequences = new List <AxisParentSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.AxisParent)
            {
                this.AxisParentSequences.Add(new AxisParentSequence(reader));
            }

            // [CrtLayout12A]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLayout12A)
            {
                this.CrtLayout12A = (CrtLayout12)BiffRecord.ReadRecord(reader);
            }

            // [DAT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Dat)
            {
                this.Dat = (Dat)BiffRecord.ReadRecord(reader);
            }

            // *ATTACHEDLABEL
            this.AttachedLabelSequences = new List <AttachedLabelSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.Text)
            {
                this.AttachedLabelSequences.Add(new AttachedLabelSequence(reader));
            }

            // [CrtLayout12A]
            // NOTE: The occurence of a CrtLayout12A record at this position in the sequence
            //    is a deviation from the spec. However it has been encountered in certain
            //    test documents (even if these documents were re-saved using Excel 2003)
            //
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLayout12A)
            {
                this.CrtLayout12A = (CrtLayout12)BiffRecord.ReadRecord(reader);
            }

            // [CRTMLFRT]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequence = new CrtMlfrtSequence(reader);
            }

            // [CrtLayout12A]
            // NOTE: The occurence of a CrtLayout12A record at this position in the sequence
            //    is a deviation from the spec. However it has been encountered in certain
            //    test documents (even if these documents were re-saved using Excel 2003)
            //
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLayout12A)
            {
                this.CrtLayout12A = (CrtLayout12)BiffRecord.ReadRecord(reader);
            }

            // *([DataLabExt StartObject] ATTACHEDLABEL [EndObject])
            this.DataLabelGroups = new List <DataLabelGroup>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.DataLabExt ||
                   BiffRecord.GetNextRecordType(reader) == RecordType.Text)
            {
                this.DataLabelGroups.Add(new DataLabelGroup(reader));
            }

            // [CrtLayout12A]
            // NOTE: The occurence of a CrtLayout12A record at this position in the sequence
            //    is a deviation from the spec. However it has been encountered in certain
            //    test documents (even if these documents were re-saved using Excel 2003)
            //
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLayout12A)
            {
                this.CrtLayout12A = (CrtLayout12)BiffRecord.ReadRecord(reader);
            }

            // [TEXTPROPS]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.RichTextStream ||
                BiffRecord.GetNextRecordType(reader) == RecordType.TextPropsStream)
            {
                this.TextPropsSequence = new TextPropsSequence(reader);
            }

            // [CrtLayout12A]
            // NOTE: The occurence of a CrtLayout12A record at this position in the sequence
            //    is a deviation from the spec. However it has been encountered in certain
            //    test documents (even if these documents were re-saved using Excel 2003)
            //
            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLayout12A)
            {
                this.CrtLayout12A = (CrtLayout12)BiffRecord.ReadRecord(reader);
            }

            // *2CRTMLFRT
            this.CrtMlfrtSequences = new List <CrtMlfrtSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                this.CrtMlfrtSequences.Add(new CrtMlfrtSequence(reader));
            }

            // End
            this.End = (End)BiffRecord.ReadRecord(reader);
        }
Exemple #8
0
        public CrtSequence(IStreamReader reader)
            : base(reader)
        {
            // ChartFormat
            //   Begin
            //     (Bar / Line / (BopPop [BopPopCustom]) / Pie / Area / Scatter / Radar / RadarArea / Surf)
            //     CrtLink [SeriesList] [Chart3d] [LD] [2DROPBAR] *4(CrtLine LineFormat) *2DFTTEXT [DataLabExtContents] [SS] *4SHAPEPROPS
            //   End

            // ChartFormat
            this.ChartFormat = (ChartFormat)BiffRecord.ReadRecord(reader);

            // Begin
            this.Begin = (Begin)BiffRecord.ReadRecord(reader);

            // (Bar / Line / (BopPop [BopPopCustom]) / Pie / Area / Scatter / Radar / RadarArea / Surf)
            this.ChartType = BiffRecord.ReadRecord(reader);
            if (BiffRecord.GetNextRecordType(reader) == RecordType.BopPopCustom)
            {
                this.BopPopCustom = (BopPopCustom)BiffRecord.ReadRecord(reader);
            }

            // CrtLink
            this.CrtLink = (CrtLink)BiffRecord.ReadRecord(reader);

            // [SeriesList]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.SeriesList)
            {
                this.SeriesList = (SeriesList)BiffRecord.ReadRecord(reader);
            }

            // [Chart3d]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Chart3d)
            {
                this.Chart3d = (Chart3d)BiffRecord.ReadRecord(reader);
            }

            // [LD]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.Legend)
            {
                this.LdSequence = new LdSequence(reader);
            }

            // [2DROPBAR]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.DropBar)
            {
                this.DropBarSequence = new DropBarSequence[2];
                for (int i = 0; i < 2; i++)
                {
                    this.DropBarSequence[i] = new DropBarSequence(reader);
                }
            }

            //*4(CrtLine LineFormat)
            this.CrtLineGroups = new List <CrtLineGroup>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.CrtLine)
            {
                this.CrtLineGroups.Add(new CrtLineGroup(reader));
            }

            //*2DFTTEXT
            this.DftTextSequences = new List <DftTextSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.DataLabExt ||
                   BiffRecord.GetNextRecordType(reader) == RecordType.DefaultText)
            {
                this.DftTextSequences.Add(new DftTextSequence(reader));
            }

            //[DataLabExtContents]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.DataLabExtContents)
            {
                this.DataLabExtContents = (DataLabExtContents)BiffRecord.ReadRecord(reader);
            }

            //[SS]
            if (BiffRecord.GetNextRecordType(reader) == RecordType.DataFormat)
            {
                this.SsSequence = new SsSequence(reader);
            }

            //*4SHAPEPROPS
            this.ShapePropsSequences = new List <ShapePropsSequence>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.ShapePropsStream)
            {
                this.ShapePropsSequences.Add(new ShapePropsSequence(reader));
            }

            if (BiffRecord.GetNextRecordType(reader) == RecordType.CrtMlFrt)
            {
                var crtmlfrtseq = new CrtMlfrtSequence(reader);
            }


            this.End = (End)BiffRecord.ReadRecord(reader);
        }