/* * (c) Copyright Ascensio System SIA 2010-2019 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation. In accordance with * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect * that Ascensio System SIA expressly excludes the warranty of non-infringement * of any third-party rights. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha * street, Riga, Latvia, EU, LV-1050. * * The interactive user interfaces in modified source and object code versions * of the Program must display Appropriate Legal Notices, as required under * Section 5 of the GNU AGPL version 3. * * Pursuant to Section 7(b) of the License you must retain the original Product * logo when distributing the program. Pursuant to Section 7(e) we decline to * grant you any rights under trademark law for use of our trademarks. * * All the Product's GUI elements, including illustrations and icon sets, as * well as technical writing content are licensed under the terms of the * Creative Commons Attribution-ShareAlike 4.0 International. See the License * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ #pragma once #include "VirtualStreamReader.h" #include "../../ASCOfficeXlsFile2/source/XlsFormat/Crypt/Decryptor.h" namespace DocFileFormat { typedef enum FibVersion { Fib1983 = 0x002d, // WinWord 2 Fib1985 = 0x003F, // //--------------------------------------------------------- Fib1989 = 0x0045, // Fib1993 = 0x0065, // Word 6.0 Fib1995 = 0x0068, // Word 7.0 (95) //--------------------------------------------------------- Fib1996 = 0x0069, // Word 8.0 (97) Fib1997 = 0x00C1, Fib2000 = 0x00D9, Fib2002 = 0x0101, Fib2003 = 0x010C, Fib2007 = 0x0112 } FibVersion; typedef struct FibBase { FibBase() : wIdent(0), nFib(Fib1997), lid(0), pnNext(0), fDot(false), fGlsy(false), fComplex(false), fHasPic(false), cQuickSaves(0), fEncrypted(false), fWhichTblStm(false), fReadOnlyRecommended(false), fWriteReservation(false), fExtChar(false), fLoadOverwrite(false), fFarEast(false), fObfuscation(false), nFibBack(0), lKey(0), envr(0), fMac(false), fEmptySpecial(false), fLoadOverridePage(false), fFutureSavedUndo(false), fWord97Saved(false), fcMin(0), fcMac(0) {} //------------------------------------------------------------ WORD wIdent; FibVersion nFib; WORD lid; WORD pnNext; bool fDot; bool fGlsy; bool fComplex; bool fHasPic; WORD cQuickSaves; bool fEncrypted; bool fWhichTblStm; bool fReadOnlyRecommended; bool fWriteReservation; bool fExtChar; bool fLoadOverwrite; bool fFarEast; bool fObfuscation; WORD nFibBack; int lKey; unsigned char envr; bool fMac; bool fEmptySpecial; bool fLoadOverridePage; bool fFutureSavedUndo; bool fWord97Saved; int fcMin; int fcMac; } FibBase; typedef struct RgW97 { WORD lidFE; } RgW97; typedef struct RgLw97 { int cbMac = 0; int ccpText = 0; int ccpFtn = 0; int ccpHdr = 0; int ccpAtn = 0; int ccpEdn = 0; int ccpTxbx = 0; int ccpHdrTxbx = 0; } RgLw97; typedef struct FibWord2 { unsigned int Spare = 0; unsigned short rgwSpare0[3]; unsigned int fcPlcMcr = 0; unsigned int lcbPlcMcr = 0; unsigned int fcPrEnv = 0; unsigned int lcbPrEnv = 0; unsigned int fcSpare5 = 0; unsigned int lcbSpare5 = 0; unsigned int fcSpare6 = 0; unsigned int lcbSpare6 = 0; unsigned int wSpare4 = 0; unsigned int pnChpFirst = 0; unsigned int pnPapFirst = 0; unsigned int cpnBteChp = 0; unsigned int cpnBtePap = 0; } FibWord2; typedef struct FibWord97 { unsigned int fcStshfOrig = 0; unsigned int lcbStshfOrig = 0; unsigned int fcStshf = 0; unsigned int lcbStshf = 0; unsigned int fcPlcffndRef = 0; unsigned int lcbPlcffndRef = 0; unsigned int fcPlcffndTxt = 0; unsigned int lcbPlcffndTxt = 0; unsigned int fcPlcfandRef = 0; unsigned int lcbPlcfandRef = 0; unsigned int fcPlcfandTxt = 0; unsigned int lcbPlcfandTxt = 0; unsigned int fcPlcfSed = 0; unsigned int lcbPlcfSed = 0; unsigned int fcPlcPad = 0; unsigned int lcbPlcPad = 0; unsigned int fcPlcfPhe = 0; unsigned int lcbPlcfPhe = 0; unsigned int fcSttbfGlsy = 0; unsigned int lcbSttbfGlsy = 0; unsigned int fcPlcfGlsy = 0; unsigned int lcbPlcfGlsy = 0; unsigned int fcPlcfHdd = 0; unsigned int lcbPlcfHdd = 0; unsigned int fcPlcfBteChpx = 0; unsigned int lcbPlcfBteChpx = 0; unsigned int fcPlcfBtePapx = 0; unsigned int lcbPlcfBtePapx = 0; unsigned int fcPlcfSea = 0; unsigned int lcbPlcfSea = 0; unsigned int fcSttbfFfn = 0; unsigned int lcbSttbfFfn = 0; unsigned int fcPlcfFldMom = 0; unsigned int lcbPlcfFldMom = 0; unsigned int fcPlcfFldHdr = 0; unsigned int lcbPlcfFldHdr = 0; unsigned int fcPlcfFldFtn = 0; unsigned int lcbPlcfFldFtn = 0; unsigned int fcPlcfFldAtn = 0; unsigned int lcbPlcfFldAtn = 0; unsigned int fcPlcfFldMcr = 0; unsigned int lcbPlcfFldMcr = 0; unsigned int fcSttbfBkmk = 0; unsigned int lcbSttbfBkmk = 0; unsigned int fcPlcfBkf = 0; unsigned int lcbPlcfBkf = 0; unsigned int fcPlcfBkl = 0; unsigned int lcbPlcfBkl = 0; unsigned int fcCmds = 0; unsigned int lcbCmds = 0; unsigned int fcSttbfMcr = 0; unsigned int lcbSttbfMcr = 0; unsigned int fcPrDrvr = 0; unsigned int lcbPrDrvr = 0; unsigned int fcPrEnvPort = 0; unsigned int lcbPrEnvPort = 0; unsigned int fcPrEnvLand = 0; unsigned int lcbPrEnvLand = 0; unsigned int fcWss = 0; unsigned int lcbWss = 0; unsigned int fcDop = 0; unsigned int lcbDop = 0; unsigned int fcSttbfAssoc = 0; unsigned int lcbSttbfAssoc = 0; unsigned int fcClx = 0; unsigned int lcbClx = 0; unsigned int fcPlcfPgdFtn = 0; unsigned int lcbPlcfPgdFtn = 0; unsigned int fcAutosaveSource = 0; unsigned int lcbAutosaveSource = 0; unsigned int fcGrpXstAtnOwners = 0; unsigned int lcbGrpXstAtnOwners = 0; unsigned int fcSttbfAtnBkmk = 0; unsigned int lcbSttbfAtnBkmk = 0; unsigned int fcPlcSpaMom = 0; unsigned int lcbPlcSpaMom = 0; unsigned int fcPlcSpaHdr = 0; unsigned int lcbPlcSpaHdr = 0; unsigned int fcPlcfAtnBkf = 0; unsigned int lcbPlcfAtnBkf = 0; unsigned int fcPlcfAtnBkl = 0; unsigned int lcbPlcfAtnBkl = 0; unsigned int fcPms = 0; unsigned int lcbPms = 0; unsigned int fcFormFldSttbs = 0; unsigned int lcbFormFldSttbs = 0; unsigned int fcPlcfendRef = 0; unsigned int lcbPlcfendRef = 0; unsigned int fcPlcfendTxt = 0; unsigned int lcbPlcfendTxt = 0; unsigned int fcPlcfFldEdn = 0; unsigned int lcbPlcfFldEdn = 0; unsigned int fcDggInfo = 0; unsigned int lcbDggInfo = 0; unsigned int fcSttbfRMark = 0; unsigned int lcbSttbfRMark = 0; unsigned int fcSttbfCaption = 0; unsigned int lcbSttbfCaption = 0; unsigned int fcSttbfAutoCaption = 0; unsigned int lcbSttbfAutoCaption = 0; unsigned int fcPlcfWkb = 0; unsigned int lcbPlcfWkb = 0; unsigned int fcPlcfSpl = 0; unsigned int lcbPlcfSpl = 0; unsigned int fcPlcftxbxTxt = 0; unsigned int lcbPlcftxbxTxt = 0; unsigned int fcPlcfFldTxbx = 0; unsigned int lcbPlcfFldTxbx = 0; unsigned int fcPlcfHdrtxbxTxt = 0; unsigned int lcbPlcfHdrtxbxTxt = 0; unsigned int fcPlcffldHdrTxbx = 0; unsigned int lcbPlcffldHdrTxbx = 0; unsigned int fcStwUser = 0; unsigned int lcbStwUser = 0; unsigned int fcSttbTtmbd = 0; unsigned int lcbSttbTtmbd = 0; unsigned int fcCookieData = 0; unsigned int lcbCookieData = 0; unsigned int fcPgdMotherOldOld = 0; unsigned int lcbPgdMotherOldOld = 0; unsigned int fcBkdMotherOldOld = 0; unsigned int lcbBkdMotherOldOld = 0; unsigned int fcPgdFtnOldOld = 0; unsigned int lcbPgdFtnOldOld = 0; unsigned int fcBkdFtnOldOld = 0; unsigned int lcbBkdFtnOldOld = 0; unsigned int fcPgdEdnOldOld = 0; unsigned int lcbPgdEdnOldOld = 0; unsigned int fcBkdEdnOldOld = 0; unsigned int lcbBkdEdnOldOld = 0; unsigned int fcSttbfIntlFld = 0; unsigned int lcbSttbfIntlFld = 0; unsigned int fcRouteSlip = 0; unsigned int lcbRouteSlip = 0; unsigned int fcSttbSavedBy = 0; unsigned int lcbSttbSavedBy = 0; unsigned int fcSttbFnm = 0; unsigned int lcbSttbFnm = 0; unsigned int fcPlfLst = 0; unsigned int lcbPlfLst = 0; unsigned int fcPlfLfo = 0; unsigned int lcbPlfLfo = 0; unsigned int fcPlcfTxbxBkd = 0; unsigned int lcbPlcfTxbxBkd = 0; unsigned int fcPlcfTxbxHdrBkd = 0; unsigned int lcbPlcfTxbxHdrBkd = 0; unsigned int fcDocUndoWord9 = 0; unsigned int lcbDocUndoWord9 = 0; unsigned int fcRgbUse = 0; unsigned int lcbRgbUse = 0; unsigned int fcUsp = 0; unsigned int lcbUsp = 0; unsigned int fcUskf = 0; unsigned int lcbUskf = 0; unsigned int fcPlcupcRgbUse = 0; unsigned int lcbPlcupcRgbUse = 0; unsigned int fcPlcupcUsp = 0; unsigned int lcbPlcupcUsp = 0; unsigned int fcSttbGlsyStyle = 0; unsigned int lcbSttbGlsyStyle = 0; unsigned int fcPlgosl = 0; unsigned int lcbPlgosl = 0; unsigned int fcPlcocx = 0; unsigned int lcbPlcocx = 0; unsigned int fcPlcfBteLvc = 0; unsigned int lcbPlcfBteLvc = 0; unsigned int dwLowDateTime = 0; unsigned int dwHighDateTime = 0; unsigned int fcPlcfLvcPre10 = 0; unsigned int lcbPlcfLvcPre10 = 0; unsigned int fcPlcfAsumy = 0; unsigned int lcbPlcfAsumy = 0; unsigned int fcPlcfGram = 0; unsigned int lcbPlcfGram = 0; unsigned int fcSttbListNames = 0; unsigned int lcbSttbListNames = 0; unsigned int fcSttbfUssr = 0; unsigned int lcbSttbfUssr = 0; } FibWord97; typedef struct FibWord2000 { unsigned int fcPlcfTch = 0; unsigned int lcbPlcfTch = 0; unsigned int fcRmdThreading = 0; unsigned int lcbRmdThreading = 0; unsigned int fcMid = 0; unsigned int lcbMid = 0; unsigned int fcSttbRgtplc = 0; unsigned int lcbSttbRgtplc = 0; unsigned int fcMsoEnvelope = 0; unsigned int lcbMsoEnvelope = 0; unsigned int fcPlcfLad = 0; unsigned int lcbPlcfLad = 0; unsigned int fcRgDofr = 0; unsigned int lcbRgDofr = 0; unsigned int fcPlcosl = 0; unsigned int lcbPlcosl = 0; unsigned int fcPlcfCookieOld = 0; unsigned int lcbPlcfCookieOld = 0; unsigned int fcPgdMotherOld = 0; unsigned int lcbPgdMotherOld = 0; unsigned int fcBkdMotherOld = 0; unsigned int lcbBkdMotherOld = 0; unsigned int fcPgdFtnOld = 0; unsigned int lcbPgdFtnOld = 0; unsigned int fcBkdFtnOld = 0; unsigned int lcbBkdFtnOld = 0; unsigned int fcPgdEdnOld = 0; unsigned int lcbPgdEdnOld = 0; unsigned int fcBkdEdnOld = 0; unsigned int lcbBkdEdnOld = 0; } FibWord2000; typedef struct FibWord2002 { unsigned int fcPlcfPgp = 0; unsigned int lcbPlcfPgp = 0; unsigned int fcPlcfuim = 0; unsigned int lcbPlcfuim = 0; unsigned int fcPlfguidUim = 0; unsigned int lcbPlfguidUim = 0; unsigned int fcAtrdExtra = 0; unsigned int lcbAtrdExtra = 0; unsigned int fcPlrsid = 0; unsigned int lcbPlrsid = 0; unsigned int fcSttbfBkmkFactoid = 0; unsigned int lcbSttbfBkmkFactoid = 0; unsigned int fcPlcfBkfFactoid = 0; unsigned int lcbPlcfBkfFactoid = 0; unsigned int fcPlcfcookie = 0; unsigned int lcbPlcfcookie = 0; unsigned int fcPlcfBklFactoid = 0; unsigned int lcbPlcfBklFactoid = 0; unsigned int fcFactoidData = 0; unsigned int lcbFactoidData = 0; unsigned int fcDocUndo = 0; unsigned int lcbDocUndo = 0; unsigned int fcSttbfBkmkFcc = 0; unsigned int lcbSttbfBkmkFcc = 0; unsigned int fcPlcfBkfFcc = 0; unsigned int lcbPlcfBkfFcc = 0; unsigned int fcPlcfBklFcc = 0; unsigned int lcbPlcfBklFcc = 0; unsigned int fcSttbfbkmkBPRepairs = 0; unsigned int lcbSttbfbkmkBPRepairs = 0; unsigned int fcPlcfbkfBPRepairs = 0; unsigned int lcbPlcfbkfBPRepairs = 0; unsigned int fcPlcfbklBPRepairs = 0; unsigned int lcbPlcfbklBPRepairs = 0; unsigned int fcPmsNew = 0; unsigned int lcbPmsNew = 0; unsigned int fcODSO = 0; unsigned int lcbODSO = 0; unsigned int fcPlcfpmiOldXP = 0; unsigned int lcbPlcfpmiOldXP = 0; unsigned int fcPlcfpmiNewXP = 0; unsigned int lcbPlcfpmiNewXP = 0; unsigned int fcPlcfpmiMixedXP = 0; unsigned int lcbPlcfpmiMixedXP = 0; unsigned int fcPlcffactoid = 0; unsigned int lcbPlcffactoid = 0; unsigned int fcPlcflvcOldXP = 0; unsigned int lcbPlcflvcOldXP = 0; unsigned int fcPlcflvcNewXP = 0; unsigned int lcbPlcflvcNewXP = 0; unsigned int fcPlcflvcMixedXP = 0; unsigned int lcbPlcflvcMixedXP = 0; } FibWord2002; typedef struct FibWord2003 { unsigned int fcHplxsdr = 0; unsigned int lcbHplxsdr = 0; unsigned int fcSttbfBkmkSdt = 0; unsigned int lcbSttbfBkmkSdt = 0; unsigned int fcPlcfBkfSdt = 0; unsigned int lcbPlcfBkfSdt = 0; unsigned int fcPlcfBklSdt = 0; unsigned int lcbPlcfBklSdt = 0; unsigned int fcCustomXForm = 0; unsigned int lcbCustomXForm = 0; unsigned int fcSttbfBkmkProt = 0; unsigned int lcbSttbfBkmkProt = 0; unsigned int fcPlcfBkfProt = 0; unsigned int lcbPlcfBkfProt = 0; unsigned int fcPlcfBklProt = 0; unsigned int lcbPlcfBklProt = 0; unsigned int fcSttbProtUser = 0; unsigned int lcbSttbProtUser = 0; unsigned int fcPlcfpmiOld = 0; unsigned int lcbPlcfpmiOld = 0; unsigned int fcPlcfpmiOldInline = 0; unsigned int lcbPlcfpmiOldInline = 0; unsigned int fcPlcfpmiNew = 0; unsigned int lcbPlcfpmiNew = 0; unsigned int fcPlcfpmiNewInline = 0; unsigned int lcbPlcfpmiNewInline = 0; unsigned int fcPlcflvcOld = 0; unsigned int lcbPlcflvcOld = 0; unsigned int fcPlcflvcOldInline = 0; unsigned int lcbPlcflvcOldInline = 0; unsigned int fcPlcflvcNew = 0; unsigned int lcbPlcflvcNew = 0; unsigned int fcPlcflvcNewInline = 0; unsigned int lcbPlcflvcNewInline = 0; unsigned int fcPgdMother = 0; unsigned int lcbPgdMother = 0; unsigned int fcBkdMother = 0; unsigned int lcbBkdMother = 0; unsigned int fcAfdMother = 0; unsigned int lcbAfdMother = 0; unsigned int fcPgdFtn = 0; unsigned int lcbPgdFtn = 0; unsigned int fcBkdFtn = 0; unsigned int lcbBkdFtn = 0; unsigned int fcAfdFtn = 0; unsigned int lcbAfdFtn = 0; unsigned int fcPgdEdn = 0; unsigned int lcbPgdEdn = 0; unsigned int fcBkdEdn = 0; unsigned int lcbBkdEdn = 0; unsigned int fcAfdEdn = 0; unsigned int lcbAfdEdn = 0; unsigned int fcAfd = 0; unsigned int lcbAfd = 0; } FibWord2003; typedef struct FibWord2007 { unsigned int fcPlcfmthd = 0; unsigned int lcbPlcfmthd = 0; unsigned int fcSttbfBkmkMoveFrom = 0; unsigned int lcbSttbfBkmkMoveFrom = 0; unsigned int fcPlcfBkfMoveFrom = 0; unsigned int lcbPlcfBkfMoveFrom = 0; unsigned int fcPlcfBklMoveFrom = 0; unsigned int lcbPlcfBklMoveFrom = 0; unsigned int fcSttbfBkmkMoveTo = 0; unsigned int lcbSttbfBkmkMoveTo = 0; unsigned int fcPlcfBkfMoveTo = 0; unsigned int lcbPlcfBkfMoveTo = 0; unsigned int fcPlcfBklMoveTo = 0; unsigned int lcbPlcfBklMoveTo = 0; unsigned int fcSttbfBkmkArto = 0; unsigned int lcbSttbfBkmkArto = 0; unsigned int fcPlcfBkfArto = 0; unsigned int lcbPlcfBkfArto = 0; unsigned int fcPlcfBklArto = 0; unsigned int lcbPlcfBklArto = 0; unsigned int fcArtoData = 0; unsigned int lcbArtoData = 0; unsigned int fcOssTheme = 0; unsigned int lcbOssTheme = 0; unsigned int fcColorSchemeMapping = 0; unsigned int lcbColorSchemeMapping = 0; } FibWord2007; struct FibNew { FibNew() : nFibNew(Fib1997), cQuickSavesNew(0), lidThemeOther(0), lidThemeFE(0), lidThemeCS(0) {} FibVersion nFibNew; WORD cQuickSavesNew; WORD lidThemeOther; WORD lidThemeFE; WORD lidThemeCS; }; class FileInformationBlock { public: int m_nWordVersion; int m_CodePage; FibBase m_FibBase; RgW97 m_RgW97; RgLw97 m_RgLw97; FibWord2 m_FibWord2; FibWord97 m_FibWord97; FibWord2000 m_FibWord2000; FibWord2002 m_FibWord2002; FibWord2003 m_FibWord2003; FibWord2007 m_FibWord2007; FibNew m_FibNew; WORD csw; WORD cslw; WORD cbRgFcLcb; WORD cswNew; void reset( VirtualStreamReader reader ) { if (m_FibBase.nFib > 0 && m_FibBase.nFib <= Fib1995) { /*fcSpare0 = */reader.ReadInt32(); /*fcSpare1 = */reader.ReadInt32(); /*fcSpare2 = */reader.ReadInt32(); /*fcSpare3 = */reader.ReadInt32(); //48 m_RgLw97.ccpText = reader.ReadInt32(); m_RgLw97.ccpFtn = reader.ReadInt32(); m_RgLw97.ccpHdr = reader.ReadInt32(); /*m_FibWord97.ccpMcr = */reader.ReadInt32(); m_RgLw97.ccpAtn = reader.ReadInt32(); if (m_FibBase.nFib > Fib1985) { m_RgLw97.ccpEdn = reader.ReadInt32(); m_RgLw97.ccpTxbx = reader.ReadInt32(); m_RgLw97.ccpHdrTxbx = reader.ReadInt32(); } else { int ccpSpare0 = reader.ReadInt32(); int ccpSpare1 = reader.ReadInt32(); int ccpSpare2 = reader.ReadInt32(); } int ccpSpare3 = reader.ReadInt32(); if (m_FibBase.nFib > Fib1985) { m_FibWord97.fcStshfOrig = reader.ReadInt32(); m_FibWord97.lcbStshfOrig = reader.ReadInt32(); m_FibWord97.fcStshf = reader.ReadInt32(); //88 m_FibWord97.lcbStshf = reader.ReadInt32(); m_FibWord97.fcPlcffndRef = reader.ReadInt32(); m_FibWord97.lcbPlcffndRef = reader.ReadInt32(); m_FibWord97.fcPlcffndTxt = reader.ReadInt32();//112 m_FibWord97.lcbPlcffndTxt = reader.ReadInt32(); m_FibWord97.fcPlcfandRef = reader.ReadInt32(); m_FibWord97.lcbPlcfandRef = reader.ReadInt32(); m_FibWord97.fcPlcfandTxt = reader.ReadInt32(); m_FibWord97.lcbPlcfandTxt = reader.ReadInt32(); m_FibWord97.fcPlcfSed = reader.ReadInt32(); //136 m_FibWord97.lcbPlcfSed = reader.ReadInt32(); m_FibWord97.fcPlcPad = reader.ReadInt32(); m_FibWord97.lcbPlcPad = reader.ReadInt32(); m_FibWord97.fcPlcfPhe = reader.ReadInt32(); m_FibWord97.lcbPlcfPhe = reader.ReadInt32(); m_FibWord97.fcSttbfGlsy = reader.ReadInt32(); m_FibWord97.lcbSttbfGlsy = reader.ReadInt32(); m_FibWord97.fcPlcfGlsy = reader.ReadInt32(); m_FibWord97.lcbPlcfGlsy = reader.ReadInt32(); m_FibWord97.fcPlcfHdd = reader.ReadInt32(); m_FibWord97.lcbPlcfHdd = reader.ReadInt32(); m_FibWord97.fcPlcfBteChpx = reader.ReadInt32(); m_FibWord97.lcbPlcfBteChpx = reader.ReadInt32(); m_FibWord97.fcPlcfBtePapx = reader.ReadInt32(); m_FibWord97.lcbPlcfBtePapx = reader.ReadInt32(); m_FibWord97.fcPlcfSea = reader.ReadInt32(); m_FibWord97.lcbPlcfSea = reader.ReadInt32(); m_FibWord97.fcSttbfFfn = reader.ReadInt32(); m_FibWord97.lcbSttbfFfn = reader.ReadInt32(); m_FibWord97.fcPlcfFldMom = reader.ReadInt32(); //216 m_FibWord97.lcbPlcfFldMom = reader.ReadInt32(); m_FibWord97.fcPlcfFldHdr = reader.ReadInt32(); m_FibWord97.lcbPlcfFldHdr = reader.ReadInt32(); m_FibWord97.fcPlcfFldFtn = reader.ReadInt32(); m_FibWord97.lcbPlcfFldFtn = reader.ReadInt32(); m_FibWord97.fcPlcfFldAtn = reader.ReadInt32(); m_FibWord97.lcbPlcfFldAtn = reader.ReadInt32(); m_FibWord97.fcPlcfFldMcr = reader.ReadInt32(); m_FibWord97.lcbPlcfFldMcr = reader.ReadInt32(); m_FibWord97.fcSttbfBkmk = reader.ReadInt32(); m_FibWord97.lcbSttbfBkmk = reader.ReadInt32(); m_FibWord97.fcPlcfBkf = reader.ReadInt32(); m_FibWord97.lcbPlcfBkf = reader.ReadInt32(); m_FibWord97.fcPlcfBkl = reader.ReadInt32(); m_FibWord97.lcbPlcfBkl = reader.ReadInt32(); m_FibWord97.fcCmds = reader.ReadInt32(); m_FibWord97.lcbCmds = reader.ReadInt32(); /*m_FibWord97.fcPlcMcr = */reader.ReadInt32(); /*m_FibWord97.lcbPlcMcr = */reader.ReadInt32(); m_FibWord97.fcSttbfMcr = reader.ReadInt32(); m_FibWord97.lcbSttbfMcr = reader.ReadInt32(); m_FibWord97.fcPrDrvr = reader.ReadInt32(); m_FibWord97.lcbPrDrvr = reader.ReadInt32(); m_FibWord97.fcPrEnvPort = reader.ReadInt32(); m_FibWord97.lcbPrEnvPort = reader.ReadInt32(); //316 m_FibWord97.fcPrEnvLand = reader.ReadInt32(); m_FibWord97.lcbPrEnvLand = reader.ReadInt32(); m_FibWord97.fcWss = reader.ReadInt32(); m_FibWord97.lcbWss = reader.ReadInt32(); m_FibWord97.fcDop = reader.ReadInt32(); m_FibWord97.lcbDop = reader.ReadInt32(); m_FibWord97.fcSttbfAssoc = reader.ReadInt32(); m_FibWord97.lcbSttbfAssoc = reader.ReadInt32(); m_FibWord97.fcClx = reader.ReadInt32(); m_FibWord97.lcbClx = reader.ReadInt32(); m_FibWord97.fcPlcfPgdFtn = reader.ReadInt32(); m_FibWord97.lcbPlcfPgdFtn = reader.ReadInt32(); m_FibWord97.fcAutosaveSource = reader.ReadInt32(); m_FibWord97.lcbAutosaveSource = reader.ReadInt32(); m_FibWord97.fcGrpXstAtnOwners = reader.ReadInt32(); m_FibWord97.lcbGrpXstAtnOwners = reader.ReadInt32(); m_FibWord97.fcSttbfAtnBkmk = reader.ReadInt32(); m_FibWord97.lcbSttbfAtnBkmk = reader.ReadInt32(); m_FibWord2.wSpare4 = reader.ReadInt16(); //392 m_FibWord2.pnChpFirst = reader.ReadInt16(); m_FibWord2.pnPapFirst = reader.ReadInt16(); m_FibWord2.cpnBteChp = reader.ReadInt16(); m_FibWord2.cpnBtePap = reader.ReadInt16(); m_FibWord97.fcPlcSpaMom = reader.ReadInt32(); m_FibWord97.lcbPlcSpaMom = reader.ReadInt32(); m_FibWord97.fcPlcSpaHdr = reader.ReadInt32(); /*fcPlcfdoaHdr*/ m_FibWord97.lcbPlcSpaHdr = reader.ReadInt32(); /*lcbPlcfdoaHdr*/ /*m_FibWord97.fcUnused1 =*/ reader.ReadInt32(); /*m_FibWord97.lcbUnused1 =*/ reader.ReadInt32(); /*m_FibWord97.fcUnused2 =*/ reader.ReadInt32(); /*m_FibWord97.lcbUnused2 =*/ reader.ReadInt32(); m_FibWord97.fcPlcfAtnBkf = reader.ReadInt32(); m_FibWord97.lcbPlcfAtnBkf = reader.ReadInt32(); m_FibWord97.fcPlcfAtnBkl = reader.ReadInt32(); m_FibWord97.lcbPlcfAtnBkl = reader.ReadInt32(); m_FibWord97.fcPms = reader.ReadInt32(); m_FibWord97.lcbPms = reader.ReadInt32(); m_FibWord97.fcFormFldSttbs/*f*/ = reader.ReadInt32(); m_FibWord97.lcbFormFldSttbs/*f*/= reader.ReadInt32(); m_FibWord97.fcPlcfendRef = reader.ReadInt32(); //466 m_FibWord97.lcbPlcfendRef = reader.ReadInt32(); m_FibWord97.fcPlcfendTxt = reader.ReadInt32(); m_FibWord97.lcbPlcfendTxt = reader.ReadInt32(); m_FibWord97.fcPlcfFldEdn = reader.ReadInt32(); m_FibWord97.lcbPlcfFldEdn = reader.ReadInt32(); /*m_FibWord97.fcPlcfpgdEdn =*/ reader.ReadInt32(); /*m_FibWord97.lcbPlcfpgdEdn =*/ reader.ReadInt32(); /*m_FibWord97.fcUnused3 =*/ reader.ReadInt32(); /*m_FibWord97.lcbUnused3 =*/ reader.ReadInt32(); m_FibWord97.fcSttbfRMark = reader.ReadInt32(); m_FibWord97.lcbSttbfRMark = reader.ReadInt32(); m_FibWord97.fcSttbfCaption = reader.ReadInt32(); m_FibWord97.lcbSttbfCaption = reader.ReadInt32(); m_FibWord97.fcSttbfAutoCaption = reader.ReadInt32(); m_FibWord97.lcbSttbfAutoCaption = reader.ReadInt32(); m_FibWord97.fcPlcfWkb = reader.ReadInt32(); //530 m_FibWord97.lcbPlcfWkb = reader.ReadInt32(); /*m_FibWord97.fcUnused4 =*/ reader.ReadInt32(); /*m_FibWord97.lcbUnused4 =*/ reader.ReadInt32(); m_FibWord97.fcPlcftxbxTxt = reader.ReadInt32(); m_FibWord97.lcbPlcftxbxTxt = reader.ReadInt32(); m_FibWord97.fcPlcfFldTxbx = reader.ReadInt32(); m_FibWord97.lcbPlcfFldTxbx = reader.ReadInt32(); m_FibWord97.fcPlcfHdrtxbxTxt = reader.ReadInt32(); m_FibWord97.lcbPlcfHdrtxbxTxt = reader.ReadInt32(); m_FibWord97.fcPlcffldHdrTxbx = reader.ReadInt32(); m_FibWord97.lcbPlcffldHdrTxbx = reader.ReadInt32(); m_FibWord97.fcStwUser = reader.ReadInt32(); m_FibWord97.lcbStwUser = reader.ReadInt32(); m_FibWord97.fcSttbTtmbd = reader.ReadInt32(); m_FibWord97.lcbSttbTtmbd = reader.ReadInt32(); /*m_FibWord97.fcPlcunused = */reader.ReadInt32(); /*m_FibWord97.lcbUnused = */reader.ReadInt32(); m_FibWord97.fcPgdMotherOldOld = reader.ReadInt32(); /*fcpgdMother.fcPgd*/ //602 m_FibWord97.lcbPgdMotherOldOld = reader.ReadInt32(); /*fcPgdMother.lcbPgd*/ m_FibWord97.fcBkdMotherOldOld = reader.ReadInt32(); /*fcPgdMother.fcBkd*/ m_FibWord97.lcbBkdMotherOldOld = reader.ReadInt32(); /*fcPgdMother.lcbBkd*/ // ???? size 2 ???? m_FibWord97.fcPgdFtnOldOld = reader.ReadInt32(); /*fcPgdFtn.fcPgd*/ m_FibWord97.lcbPgdFtnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.lcbPgd*/ m_FibWord97.fcBkdFtnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.fcBkd*/ m_FibWord97.lcbBkdFtnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.lcbBkd*/ m_FibWord97.fcPgdEdnOldOld = reader.ReadInt32(); /*fcpgdFtn.fcPgd*/ m_FibWord97.lcbPgdEdnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.lcbPgd*/ m_FibWord97.fcBkdEdnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.fcBkd*/ m_FibWord97.lcbBkdEdnOldOld = reader.ReadInt32(); /*rgfcpgdFtn.lcbBkd*/ m_FibWord97.fcSttbfIntlFld = reader.ReadInt32(); m_FibWord97.lcbSttbfIntlFld = reader.ReadInt32(); m_FibWord97.fcRouteSlip = reader.ReadInt32(); //656 m_FibWord97.lcbRouteSlip = reader.ReadInt32(); m_FibWord97.fcSttbSavedBy = reader.ReadInt32(); m_FibWord97.lcbSttbSavedBy = reader.ReadInt32(); m_FibWord97.fcSttbFnm = reader.ReadInt32(); m_FibWord97.lcbSttbFnm = reader.ReadInt32(); //676 } else { m_FibWord97.fcStshfOrig = reader.ReadInt32();// 0x58 m_FibWord97.lcbStshfOrig = reader.ReadInt16(); m_FibWord97.fcStshf = reader.ReadInt32(); m_FibWord97.lcbStshf = reader.ReadInt16();//0x62 m_FibWord97.fcPlcffndRef = reader.ReadInt32(); m_FibWord97.lcbPlcffndRef = reader.ReadInt16();//0x68 m_FibWord97.fcPlcffndTxt = reader.ReadInt32();//0x6a m_FibWord97.lcbPlcffndTxt = reader.ReadInt16(); m_FibWord97.fcPlcfandRef = reader.ReadInt32();//0x70 m_FibWord97.lcbPlcfandRef = reader.ReadInt16(); m_FibWord97.fcPlcfandTxt = reader.ReadInt32();//0x76 m_FibWord97.lcbPlcfandTxt = reader.ReadInt16(); m_FibWord97.fcPlcfSed = reader.ReadInt32(); //0x7c m_FibWord97.lcbPlcfSed = reader.ReadInt16(); m_FibWord97.fcPlcPad = reader.ReadInt32(); m_FibWord97.lcbPlcPad = reader.ReadInt16(); m_FibWord97.fcPlcfPhe = reader.ReadInt32();// 0x88 m_FibWord97.lcbPlcfPhe = reader.ReadInt16(); m_FibWord97.fcSttbfGlsy = reader.ReadInt32(); m_FibWord97.lcbSttbfGlsy = reader.ReadInt16(); m_FibWord97.fcPlcfGlsy = reader.ReadInt32(); m_FibWord97.lcbPlcfGlsy = reader.ReadInt16(); m_FibWord97.fcPlcfHdd = reader.ReadInt32();// 0x9a m_FibWord97.lcbPlcfHdd = reader.ReadInt16(); m_FibWord97.fcPlcfBteChpx = reader.ReadInt32(); m_FibWord97.lcbPlcfBteChpx = reader.ReadInt16(); m_FibWord97.fcPlcfBtePapx = reader.ReadInt32();// 0xa0 m_FibWord97.lcbPlcfBtePapx = reader.ReadInt16(); m_FibWord97.fcPlcfSea = reader.ReadInt32();// 0xac m_FibWord97.lcbPlcfSea = reader.ReadInt16(); m_FibWord97.fcSttbfFfn = reader.ReadInt32();// 0xb2 m_FibWord97.lcbSttbfFfn = reader.ReadInt16(); m_FibWord97.fcPlcfFldMom = reader.ReadInt32(); // 0xb8=184 m_FibWord97.lcbPlcfFldMom = reader.ReadInt16(); m_FibWord97.fcPlcfFldHdr = reader.ReadInt32(); m_FibWord97.lcbPlcfFldHdr = reader.ReadInt16(); m_FibWord97.fcPlcfFldFtn = reader.ReadInt32(); m_FibWord97.lcbPlcfFldFtn = reader.ReadInt16(); m_FibWord97.fcPlcfFldAtn = reader.ReadInt32(); m_FibWord97.lcbPlcfFldAtn = reader.ReadInt16(); m_FibWord97.fcPlcfFldMcr = reader.ReadInt32(); m_FibWord97.lcbPlcfFldMcr = reader.ReadInt16(); m_FibWord97.fcSttbfBkmk = reader.ReadInt32();// 0xd6 m_FibWord97.lcbSttbfBkmk = reader.ReadInt16(); m_FibWord97.fcPlcfBkf = reader.ReadInt32(); m_FibWord97.lcbPlcfBkf = reader.ReadInt16(); m_FibWord97.fcPlcfBkl = reader.ReadInt32(); m_FibWord97.lcbPlcfBkl = reader.ReadInt16(); m_FibWord97.fcCmds = reader.ReadInt32();// 0xe8 m_FibWord97.lcbCmds = reader.ReadInt16(); m_FibWord2.fcPlcMcr = reader.ReadInt32();// 0xee m_FibWord2.lcbPlcMcr = reader.ReadInt16(); m_FibWord97.fcSttbfMcr = reader.ReadInt32();// 0xf4 m_FibWord97.lcbSttbfMcr = reader.ReadInt16(); m_FibWord97.fcPrDrvr = reader.ReadInt32();// m_FibWord97.lcbPrDrvr = reader.ReadInt16(); m_FibWord97.fcPrEnvPort = reader.ReadInt32();// m_FibWord97.lcbPrEnvPort = reader.ReadInt16(); m_FibWord97.fcPrEnvLand = reader.ReadInt32();// m_FibWord97.lcbPrEnvLand = reader.ReadInt16(); m_FibWord97.fcWss = reader.ReadInt32();// 268 m_FibWord97.lcbWss = reader.ReadInt16(); m_FibWord97.fcDop = reader.ReadInt32(); m_FibWord97.lcbDop = reader.ReadInt16(); m_FibWord97.fcSttbfAssoc = reader.ReadInt32(); m_FibWord97.lcbSttbfAssoc = reader.ReadInt16();; m_FibWord97.fcClx = reader.ReadInt32(); m_FibWord97.lcbClx = reader.ReadInt16(); m_FibWord97.fcPlcfPgdFtn = reader.ReadInt32(); //292 m_FibWord97.lcbPlcfPgdFtn = reader.ReadInt16(); m_FibWord97.fcAutosaveSource = reader.ReadInt32(); m_FibWord97.lcbAutosaveSource = reader.ReadInt16(); m_FibWord2.fcSpare5 = reader.ReadInt32(); m_FibWord2.lcbSpare5 = reader.ReadInt16(); m_FibWord2.fcSpare6 = reader.ReadInt32(); m_FibWord2.lcbSpare6 = reader.ReadInt16(); m_FibWord2.wSpare4 = reader.ReadInt16(); m_FibWord2.pnChpFirst = reader.ReadInt16(); m_FibWord2.pnPapFirst = reader.ReadInt16(); m_FibWord2.cpnBteChp = reader.ReadInt16(); m_FibWord2.cpnBtePap = reader.ReadInt16(); } } if (m_FibBase.nFib > Fib1995 || m_FibBase.nFib == 0) { int reserv1 = reader.ReadInt32(); int reserv2 = reader.ReadInt32(); m_RgLw97.ccpText = reader.ReadInt32(); //76 m_RgLw97.ccpFtn = reader.ReadInt32(); //80 m_RgLw97.ccpHdr = reader.ReadInt32(); //84 int reserv3 = reader.ReadInt32(); m_RgLw97.ccpAtn = reader.ReadInt32(); //92 m_RgLw97.ccpEdn = reader.ReadInt32(); //96 m_RgLw97.ccpTxbx = reader.ReadInt32(); //100 m_RgLw97.ccpHdrTxbx = reader.ReadInt32(); //104 int reserv4 = reader.ReadInt32(); int reserv5 = reader.ReadInt32(); int reserv6 = reader.ReadInt32(); int reserv7 = reader.ReadInt32(); int reserv8 = reader.ReadInt32(); int reserv9 = reader.ReadInt32(); int reserv10 = reader.ReadInt32(); int reserv11 = reader.ReadInt32(); int reserv12 = reader.ReadInt32(); int reserv13 = reader.ReadInt32(); int reserv14 = reader.ReadInt32(); cbRgFcLcb = reader.ReadUInt16(); //152 switch(cbRgFcLcb) { case 0x005D: m_FibBase.nFib = Fib1997; break; case 0x006C: m_FibBase.nFib = Fib2000; break; case 0x0088: m_FibBase.nFib = Fib2002; break; case 0x00A4: m_FibBase.nFib = Fib2003; break; case 0x00B7: m_FibBase.nFib = Fib2007; break; } m_FibWord97.fcStshfOrig = reader.ReadUInt32(); //154 m_FibWord97.lcbStshfOrig = reader.ReadUInt32(); //158 m_FibWord97.fcStshf = reader.ReadUInt32(); //162 m_FibWord97.lcbStshf = reader.ReadUInt32(); //166 m_FibWord97.fcPlcffndRef = reader.ReadUInt32(); //170 m_FibWord97.lcbPlcffndRef = reader.ReadUInt32(); //174 m_FibWord97.fcPlcffndTxt = reader.ReadUInt32(); //178 m_FibWord97.lcbPlcffndTxt = reader.ReadUInt32(); //182 m_FibWord97.fcPlcfandRef = reader.ReadUInt32(); //186 m_FibWord97.lcbPlcfandRef = reader.ReadUInt32(); //190 m_FibWord97.fcPlcfandTxt = reader.ReadUInt32(); //194 m_FibWord97.lcbPlcfandTxt = reader.ReadUInt32(); //198 m_FibWord97.fcPlcfSed = reader.ReadUInt32(); //202 m_FibWord97.lcbPlcfSed = reader.ReadUInt32(); //206 m_FibWord97.fcPlcPad = reader.ReadUInt32(); //210 m_FibWord97.lcbPlcPad = reader.ReadUInt32(); //214 m_FibWord97.fcPlcfPhe = reader.ReadUInt32(); //218 m_FibWord97.lcbPlcfPhe = reader.ReadUInt32(); //222 m_FibWord97.fcSttbfGlsy = reader.ReadUInt32(); //226 m_FibWord97.lcbSttbfGlsy = reader.ReadUInt32(); //230 m_FibWord97.fcPlcfGlsy = reader.ReadUInt32(); //234 m_FibWord97.lcbPlcfGlsy = reader.ReadUInt32(); //238 m_FibWord97.fcPlcfHdd = reader.ReadUInt32(); //242 m_FibWord97.lcbPlcfHdd = reader.ReadUInt32(); //246 m_FibWord97.fcPlcfBteChpx = reader.ReadUInt32(); //250 m_FibWord97.lcbPlcfBteChpx = reader.ReadUInt32(); //254 m_FibWord97.fcPlcfBtePapx = reader.ReadUInt32(); //258 m_FibWord97.lcbPlcfBtePapx = reader.ReadUInt32(); //262 m_FibWord97.fcPlcfSea = reader.ReadUInt32(); //266 m_FibWord97.lcbPlcfSea = reader.ReadUInt32(); //270 m_FibWord97.fcSttbfFfn = reader.ReadUInt32(); //274 m_FibWord97.lcbSttbfFfn = reader.ReadUInt32(); //278 m_FibWord97.fcPlcfFldMom = reader.ReadUInt32(); //282 m_FibWord97.lcbPlcfFldMom = reader.ReadUInt32(); //286 m_FibWord97.fcPlcfFldHdr = reader.ReadUInt32(); //290 m_FibWord97.lcbPlcfFldHdr = reader.ReadUInt32(); //294 m_FibWord97.fcPlcfFldFtn = reader.ReadUInt32(); //298 m_FibWord97.lcbPlcfFldFtn = reader.ReadUInt32(); //302 m_FibWord97.fcPlcfFldAtn = reader.ReadUInt32(); //306 m_FibWord97.lcbPlcfFldAtn = reader.ReadUInt32(); //310 m_FibWord97.fcPlcfFldMcr = reader.ReadUInt32(); //314 m_FibWord97.lcbPlcfFldMcr = reader.ReadUInt32(); //318 m_FibWord97.fcSttbfBkmk = reader.ReadUInt32(); //322 m_FibWord97.lcbSttbfBkmk = reader.ReadUInt32(); //326 m_FibWord97.fcPlcfBkf = reader.ReadUInt32(); //330 m_FibWord97.lcbPlcfBkf = reader.ReadUInt32(); //334 m_FibWord97.fcPlcfBkl = reader.ReadUInt32(); //338 m_FibWord97.lcbPlcfBkl = reader.ReadUInt32(); //342 m_FibWord97.fcCmds = reader.ReadUInt32(); //346 m_FibWord97.lcbCmds = reader.ReadUInt32(); //350 reader.ReadUInt32(); // 354 reader.ReadUInt32(); // 358 m_FibWord97.fcSttbfMcr = reader.ReadUInt32(); // 362 m_FibWord97.lcbSttbfMcr = reader.ReadUInt32(); // 366 m_FibWord97.fcPrDrvr = reader.ReadUInt32(); // 370 m_FibWord97.lcbPrDrvr = reader.ReadUInt32(); // 374 m_FibWord97.fcPrEnvPort = reader.ReadUInt32(); // 378 m_FibWord97.lcbPrEnvPort = reader.ReadUInt32(); // 382 m_FibWord97.fcPrEnvLand = reader.ReadUInt32(); // 386 m_FibWord97.lcbPrEnvLand = reader.ReadUInt32(); // 390 m_FibWord97.fcWss = reader.ReadUInt32(); // 394 m_FibWord97.lcbWss = reader.ReadUInt32(); // 398 m_FibWord97.fcDop = reader.ReadUInt32(); // 402 m_FibWord97.lcbDop = reader.ReadUInt32(); // 406 m_FibWord97.fcSttbfAssoc = reader.ReadUInt32(); // 410 m_FibWord97.lcbSttbfAssoc = reader.ReadUInt32(); // 414 m_FibWord97.fcClx = reader.ReadUInt32(); // 418 m_FibWord97.lcbClx = reader.ReadUInt32(); // 422 m_FibWord97.fcPlcfPgdFtn = reader.ReadUInt32(); // 426 m_FibWord97.lcbPlcfPgdFtn = reader.ReadUInt32(); // 430 m_FibWord97.fcAutosaveSource = reader.ReadUInt32(); // 434 m_FibWord97.lcbAutosaveSource = reader.ReadUInt32(); // 438 m_FibWord97.fcGrpXstAtnOwners = reader.ReadUInt32(); // 442 m_FibWord97.lcbGrpXstAtnOwners = reader.ReadUInt32(); // 446 m_FibWord97.fcSttbfAtnBkmk = reader.ReadUInt32(); // 450 m_FibWord97.lcbSttbfAtnBkmk = reader.ReadUInt32(); // 454 reader.ReadUInt32(); //458 reader.ReadUInt32(); //462 reader.ReadUInt32(); //466 reader.ReadUInt32(); //470 m_FibWord97.fcPlcSpaMom = reader.ReadUInt32(); //474 m_FibWord97.lcbPlcSpaMom = reader.ReadUInt32(); //478 m_FibWord97.fcPlcSpaHdr = reader.ReadUInt32(); //482 m_FibWord97.lcbPlcSpaHdr = reader.ReadUInt32(); //486 m_FibWord97.fcPlcfAtnBkf = reader.ReadUInt32(); //490 m_FibWord97.lcbPlcfAtnBkf = reader.ReadUInt32(); //494 m_FibWord97.fcPlcfAtnBkl = reader.ReadUInt32(); //498 m_FibWord97.lcbPlcfAtnBkl = reader.ReadUInt32(); //502 m_FibWord97.fcPms = reader.ReadUInt32(); //506 m_FibWord97.lcbPms = reader.ReadUInt32(); //510 m_FibWord97.fcFormFldSttbs = reader.ReadUInt32(); //514 m_FibWord97.lcbFormFldSttbs = reader.ReadUInt32(); //518 m_FibWord97.fcPlcfendRef = reader.ReadUInt32(); //522 m_FibWord97.lcbPlcfendRef = reader.ReadUInt32(); //526 m_FibWord97.fcPlcfendTxt = reader.ReadUInt32(); //530 m_FibWord97.lcbPlcfendTxt = reader.ReadUInt32(); //534 m_FibWord97.fcPlcfFldEdn = reader.ReadUInt32(); //538 m_FibWord97.lcbPlcfFldEdn = reader.ReadUInt32(); //542 reader.ReadUInt32(); //546 reader.ReadUInt32(); //550 m_FibWord97.fcDggInfo = reader.ReadUInt32(); //554 m_FibWord97.lcbDggInfo = reader.ReadUInt32(); //558 m_FibWord97.fcSttbfRMark = reader.ReadUInt32(); //562 m_FibWord97.lcbSttbfRMark = reader.ReadUInt32(); //566 m_FibWord97.fcSttbfCaption = reader.ReadUInt32(); //570 m_FibWord97.lcbSttbfCaption = reader.ReadUInt32(); //574 m_FibWord97.fcSttbfAutoCaption = reader.ReadUInt32(); //578 m_FibWord97.lcbSttbfAutoCaption = reader.ReadUInt32(); //582 m_FibWord97.fcPlcfWkb = reader.ReadUInt32(); //586 m_FibWord97.lcbPlcfWkb = reader.ReadUInt32(); //590 m_FibWord97.fcPlcfSpl = reader.ReadUInt32(); //594 m_FibWord97.lcbPlcfSpl = reader.ReadUInt32(); //598 m_FibWord97.fcPlcftxbxTxt = reader.ReadUInt32(); //602 m_FibWord97.lcbPlcftxbxTxt = reader.ReadUInt32(); //606 m_FibWord97.fcPlcfFldTxbx = reader.ReadUInt32(); //610 m_FibWord97.lcbPlcfFldTxbx = reader.ReadUInt32(); //614 m_FibWord97.fcPlcfHdrtxbxTxt = reader.ReadUInt32(); //618 m_FibWord97.lcbPlcfHdrtxbxTxt = reader.ReadUInt32(); //622 m_FibWord97.fcPlcffldHdrTxbx = reader.ReadUInt32(); //626 m_FibWord97.lcbPlcffldHdrTxbx = reader.ReadUInt32(); //630 m_FibWord97.fcStwUser = reader.ReadUInt32(); //634 m_FibWord97.lcbStwUser = reader.ReadUInt32(); //638 m_FibWord97.fcSttbTtmbd = reader.ReadUInt32(); //642 m_FibWord97.lcbSttbTtmbd = reader.ReadUInt32(); //646 m_FibWord97.fcCookieData = reader.ReadUInt32(); //650 m_FibWord97.lcbCookieData = reader.ReadUInt32(); //654 m_FibWord97.fcPgdMotherOldOld = reader.ReadUInt32(); //658 m_FibWord97.lcbPgdMotherOldOld = reader.ReadUInt32(); //662 m_FibWord97.fcBkdMotherOldOld = reader.ReadUInt32(); //666 m_FibWord97.lcbBkdMotherOldOld = reader.ReadUInt32(); //670 m_FibWord97.fcPgdFtnOldOld = reader.ReadUInt32(); //674 m_FibWord97.lcbPgdFtnOldOld = reader.ReadUInt32(); //678 m_FibWord97.fcBkdFtnOldOld = reader.ReadUInt32(); //682 m_FibWord97.lcbBkdFtnOldOld = reader.ReadUInt32(); //686 m_FibWord97.fcPgdEdnOldOld = reader.ReadUInt32(); //690 m_FibWord97.lcbPgdEdnOldOld = reader.ReadUInt32(); //694 m_FibWord97.fcBkdEdnOldOld = reader.ReadUInt32(); //698 m_FibWord97.lcbBkdEdnOldOld = reader.ReadUInt32(); //702 m_FibWord97.fcSttbfIntlFld = reader.ReadUInt32(); //706 m_FibWord97.lcbSttbfIntlFld = reader.ReadUInt32(); //710 m_FibWord97.fcRouteSlip = reader.ReadUInt32(); //714 m_FibWord97.lcbRouteSlip = reader.ReadUInt32(); //718 m_FibWord97.fcSttbSavedBy = reader.ReadUInt32(); //722 m_FibWord97.lcbSttbSavedBy = reader.ReadUInt32(); //726 m_FibWord97.fcSttbFnm = reader.ReadUInt32(); //730 m_FibWord97.lcbSttbFnm = reader.ReadUInt32(); //734 m_FibWord97.fcPlfLst = reader.ReadUInt32(); //738 m_FibWord97.lcbPlfLst = reader.ReadUInt32(); //742 m_FibWord97.fcPlfLfo = reader.ReadUInt32(); //746 m_FibWord97.lcbPlfLfo = reader.ReadUInt32(); //750 m_FibWord97.fcPlcfTxbxBkd = reader.ReadUInt32(); //754 m_FibWord97.lcbPlcfTxbxBkd = reader.ReadUInt32(); //758 m_FibWord97.fcPlcfTxbxHdrBkd = reader.ReadUInt32(); //762 m_FibWord97.lcbPlcfTxbxHdrBkd = reader.ReadUInt32(); //766 m_FibWord97.fcDocUndoWord9 = reader.ReadUInt32(); //770 m_FibWord97.lcbDocUndoWord9 = reader.ReadUInt32(); //774 m_FibWord97.fcRgbUse = reader.ReadUInt32(); //778 m_FibWord97.lcbRgbUse = reader.ReadUInt32(); //782 m_FibWord97.fcUsp = reader.ReadUInt32(); //786 m_FibWord97.lcbUsp = reader.ReadUInt32(); //790 m_FibWord97.fcUskf = reader.ReadUInt32(); //794 m_FibWord97.lcbUskf = reader.ReadUInt32(); //798 m_FibWord97.fcPlcupcRgbUse = reader.ReadUInt32(); //802 m_FibWord97.lcbPlcupcRgbUse = reader.ReadUInt32(); //806 m_FibWord97.fcPlcupcUsp = reader.ReadUInt32(); //810 m_FibWord97.lcbPlcupcUsp = reader.ReadUInt32(); //814 m_FibWord97.fcSttbGlsyStyle = reader.ReadUInt32(); //818 m_FibWord97.lcbSttbGlsyStyle = reader.ReadUInt32(); //822 m_FibWord97.fcPlgosl = reader.ReadUInt32(); //826 m_FibWord97.lcbPlgosl = reader.ReadUInt32(); //830 m_FibWord97.fcPlcocx = reader.ReadUInt32(); //834 m_FibWord97.lcbPlcocx = reader.ReadUInt32(); //838 m_FibWord97.fcPlcfBteLvc = reader.ReadUInt32(); //842 m_FibWord97.lcbPlcfBteLvc = reader.ReadUInt32(); //846 m_FibWord97.dwLowDateTime = reader.ReadUInt32(); //850 m_FibWord97.dwHighDateTime = reader.ReadUInt32(); //854 m_FibWord97.fcPlcfLvcPre10 = reader.ReadUInt32(); //858 m_FibWord97.lcbPlcfLvcPre10 = reader.ReadUInt32(); //862 m_FibWord97.fcPlcfAsumy = reader.ReadUInt32(); //866 m_FibWord97.lcbPlcfAsumy = reader.ReadUInt32(); //870 m_FibWord97.fcPlcfGram = reader.ReadUInt32(); //874 m_FibWord97.lcbPlcfGram = reader.ReadUInt32(); //878 m_FibWord97.fcSttbListNames = reader.ReadUInt32(); //882 m_FibWord97.lcbSttbListNames = reader.ReadUInt32(); //886 m_FibWord97.fcSttbfUssr = reader.ReadUInt32(); //890 m_FibWord97.lcbSttbfUssr = reader.ReadUInt32(); //894 } if (m_FibBase.nFib >= Fib2000) { //Read also the FibRgFcLcb2000 m_FibWord2000.fcPlcfTch = reader.ReadUInt32(); //898 m_FibWord2000.lcbPlcfTch = reader.ReadUInt32(); //902 m_FibWord2000.fcRmdThreading = reader.ReadUInt32(); //906 m_FibWord2000.lcbRmdThreading = reader.ReadUInt32(); //910 m_FibWord2000.fcMid = reader.ReadUInt32(); //914 m_FibWord2000.lcbMid = reader.ReadUInt32(); //918 m_FibWord2000.fcSttbRgtplc = reader.ReadUInt32(); //922 m_FibWord2000.lcbSttbRgtplc = reader.ReadUInt32(); //926 m_FibWord2000.fcMsoEnvelope = reader.ReadUInt32(); //930 m_FibWord2000.lcbMsoEnvelope = reader.ReadUInt32(); //934 m_FibWord2000.fcPlcfLad = reader.ReadUInt32(); //938 m_FibWord2000.lcbPlcfLad = reader.ReadUInt32(); //942 m_FibWord2000.fcRgDofr = reader.ReadUInt32(); //946 m_FibWord2000.lcbRgDofr = reader.ReadUInt32(); //950 m_FibWord2000.fcPlcosl = reader.ReadUInt32(); //954 m_FibWord2000.lcbPlcosl = reader.ReadUInt32(); //958 m_FibWord2000.fcPlcfCookieOld = reader.ReadUInt32(); //962 m_FibWord2000.lcbPlcfCookieOld = reader.ReadUInt32(); //966 m_FibWord2000.fcPgdMotherOld = reader.ReadUInt32(); //970 m_FibWord2000.lcbPgdMotherOld = reader.ReadUInt32(); //974 m_FibWord2000.fcBkdMotherOld = reader.ReadUInt32(); //978 m_FibWord2000.lcbBkdMotherOld = reader.ReadUInt32(); //982 m_FibWord2000.fcPgdFtnOld = reader.ReadUInt32(); //986 m_FibWord2000.lcbPgdFtnOld = reader.ReadUInt32(); //990 m_FibWord2000.fcBkdFtnOld = reader.ReadUInt32(); //994 m_FibWord2000.lcbBkdFtnOld = reader.ReadUInt32(); //998 m_FibWord2000.fcPgdEdnOld = reader.ReadUInt32(); //1002 m_FibWord2000.lcbPgdEdnOld = reader.ReadUInt32(); //1006 m_FibWord2000.fcBkdEdnOld = reader.ReadUInt32(); //1010 m_FibWord2000.lcbBkdEdnOld = reader.ReadUInt32(); //1014 } if ( m_FibBase.nFib >= Fib2002 ) { //Read also the fibRgFcLcb2002 reader.ReadUInt32(); //1018 reader.ReadUInt32(); //1022 m_FibWord2002.fcPlcfPgp = reader.ReadUInt32(); //1026 m_FibWord2002.lcbPlcfPgp = reader.ReadUInt32(); //1030 m_FibWord2002.fcPlcfuim = reader.ReadUInt32(); //1034 m_FibWord2002.lcbPlcfuim = reader.ReadUInt32(); //1038 m_FibWord2002.fcPlfguidUim = reader.ReadUInt32(); //1042 m_FibWord2002.lcbPlfguidUim = reader.ReadUInt32(); //1046 m_FibWord2002.fcAtrdExtra = reader.ReadUInt32(); //1050 m_FibWord2002.lcbAtrdExtra = reader.ReadUInt32(); //1054 m_FibWord2002.fcPlrsid = reader.ReadUInt32(); //1058 m_FibWord2002.lcbPlrsid = reader.ReadUInt32(); //1062 m_FibWord2002.fcSttbfBkmkFactoid = reader.ReadUInt32(); //1066 m_FibWord2002.lcbSttbfBkmkFactoid = reader.ReadUInt32(); //1070 m_FibWord2002.fcPlcfBkfFactoid = reader.ReadUInt32(); //1074 m_FibWord2002.lcbPlcfBkfFactoid = reader.ReadUInt32(); //1078 m_FibWord2002.fcPlcfcookie = reader.ReadUInt32(); //1082 m_FibWord2002.lcbPlcfcookie = reader.ReadUInt32(); //1086 m_FibWord2002.fcPlcfBklFactoid = reader.ReadUInt32(); //1090 m_FibWord2002.lcbPlcfBklFactoid = reader.ReadUInt32(); //1094 m_FibWord2002.fcFactoidData = reader.ReadUInt32(); //1098 m_FibWord2002.lcbFactoidData = reader.ReadUInt32(); //1102 m_FibWord2002.fcDocUndo = reader.ReadUInt32(); //1106 m_FibWord2002.lcbDocUndo = reader.ReadUInt32(); //1110 m_FibWord2002.fcSttbfBkmkFcc = reader.ReadUInt32(); //1114 m_FibWord2002.lcbSttbfBkmkFcc = reader.ReadUInt32(); //1118 m_FibWord2002.fcPlcfBkfFcc = reader.ReadUInt32(); //1122 m_FibWord2002.lcbPlcfBkfFcc = reader.ReadUInt32(); //1126 m_FibWord2002.fcPlcfBklFcc = reader.ReadUInt32(); //1130 m_FibWord2002.lcbPlcfBklFcc = reader.ReadUInt32(); //1134 m_FibWord2002.fcSttbfbkmkBPRepairs = reader.ReadUInt32(); //1138 m_FibWord2002.lcbSttbfbkmkBPRepairs = reader.ReadUInt32(); //1142 m_FibWord2002.fcPlcfbkfBPRepairs = reader.ReadUInt32(); //1146 m_FibWord2002.lcbPlcfbkfBPRepairs = reader.ReadUInt32(); //1150 m_FibWord2002.fcPlcfbklBPRepairs = reader.ReadUInt32(); //1154 m_FibWord2002.lcbPlcfbklBPRepairs = reader.ReadUInt32(); //1158 m_FibWord2002.fcPmsNew = reader.ReadUInt32(); //1162 m_FibWord2002.lcbPmsNew = reader.ReadUInt32(); //1166 m_FibWord2002.fcODSO = reader.ReadUInt32(); //1170 m_FibWord2002.lcbODSO = reader.ReadUInt32(); //1174 m_FibWord2002.fcPlcfpmiOldXP = reader.ReadUInt32(); //1178 m_FibWord2002.lcbPlcfpmiOldXP = reader.ReadUInt32(); //1182 m_FibWord2002.fcPlcfpmiNewXP = reader.ReadUInt32(); //1186 m_FibWord2002.lcbPlcfpmiNewXP = reader.ReadUInt32(); //1190 m_FibWord2002.fcPlcfpmiMixedXP = reader.ReadUInt32(); //1194 m_FibWord2002.lcbPlcfpmiMixedXP = reader.ReadUInt32(); //1198 reader.ReadUInt32(); //1202 reader.ReadUInt32(); //1206 m_FibWord2002.fcPlcffactoid = reader.ReadUInt32(); //1210 m_FibWord2002.lcbPlcffactoid = reader.ReadUInt32(); //1214 m_FibWord2002.fcPlcflvcOldXP = reader.ReadUInt32(); //1218 m_FibWord2002.lcbPlcflvcOldXP = reader.ReadUInt32(); //1222 m_FibWord2002.fcPlcflvcNewXP = reader.ReadUInt32(); //1226 m_FibWord2002.lcbPlcflvcNewXP = reader.ReadUInt32(); //1230 m_FibWord2002.fcPlcflvcMixedXP = reader.ReadUInt32(); //1234 m_FibWord2002.lcbPlcflvcMixedXP = reader.ReadUInt32(); //1238 } if ( m_FibBase.nFib >= Fib2003 ) { //Read also the fibRgFcLcb2003 m_FibWord2003.fcHplxsdr = reader.ReadUInt32(); m_FibWord2003.lcbHplxsdr = reader.ReadUInt32(); m_FibWord2003.fcSttbfBkmkSdt = reader.ReadUInt32(); m_FibWord2003.lcbSttbfBkmkSdt = reader.ReadUInt32(); m_FibWord2003.fcPlcfBkfSdt = reader.ReadUInt32(); m_FibWord2003.lcbPlcfBkfSdt = reader.ReadUInt32(); m_FibWord2003.fcPlcfBklSdt = reader.ReadUInt32(); m_FibWord2003.lcbPlcfBklSdt = reader.ReadUInt32(); m_FibWord2003.fcCustomXForm = reader.ReadUInt32(); m_FibWord2003.lcbCustomXForm = reader.ReadUInt32(); m_FibWord2003.fcSttbfBkmkProt = reader.ReadUInt32(); m_FibWord2003.lcbSttbfBkmkProt = reader.ReadUInt32(); m_FibWord2003.fcPlcfBkfProt = reader.ReadUInt32(); m_FibWord2003.lcbPlcfBkfProt = reader.ReadUInt32(); m_FibWord2003.fcPlcfBklProt = reader.ReadUInt32(); m_FibWord2003.lcbPlcfBklProt = reader.ReadUInt32(); m_FibWord2003.fcSttbProtUser = reader.ReadUInt32(); m_FibWord2003.lcbSttbProtUser = reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); m_FibWord2003.fcPlcfpmiOld = reader.ReadUInt32(); m_FibWord2003.lcbPlcfpmiOld = reader.ReadUInt32(); m_FibWord2003.fcPlcfpmiOldInline= reader.ReadUInt32(); m_FibWord2003.lcbPlcfpmiOldInline = reader.ReadUInt32(); m_FibWord2003.fcPlcfpmiNew = reader.ReadUInt32(); m_FibWord2003.lcbPlcfpmiNew = reader.ReadUInt32(); m_FibWord2003.fcPlcfpmiNewInline= reader.ReadUInt32(); m_FibWord2003.lcbPlcfpmiNewInline = reader.ReadUInt32(); m_FibWord2003.fcPlcflvcOld = reader.ReadUInt32(); m_FibWord2003.lcbPlcflvcOld = reader.ReadUInt32(); m_FibWord2003.fcPlcflvcOldInline= reader.ReadUInt32(); m_FibWord2003.lcbPlcflvcOldInline = reader.ReadUInt32(); m_FibWord2003.fcPlcflvcNew = reader.ReadUInt32(); m_FibWord2003.lcbPlcflvcNew = reader.ReadUInt32(); m_FibWord2003.fcPlcflvcNewInline= reader.ReadUInt32(); m_FibWord2003.lcbPlcflvcNewInline = reader.ReadUInt32(); m_FibWord2003.fcPgdMother = reader.ReadUInt32(); m_FibWord2003.lcbPgdMother = reader.ReadUInt32(); m_FibWord2003.fcBkdMother = reader.ReadUInt32(); m_FibWord2003.lcbBkdMother = reader.ReadUInt32(); m_FibWord2003.fcAfdMother = reader.ReadUInt32(); m_FibWord2003.lcbAfdMother = reader.ReadUInt32(); m_FibWord2003.fcPgdFtn = reader.ReadUInt32(); m_FibWord2003.lcbPgdFtn = reader.ReadUInt32(); m_FibWord2003.fcBkdFtn = reader.ReadUInt32(); m_FibWord2003.lcbBkdFtn = reader.ReadUInt32(); m_FibWord2003.fcAfdFtn = reader.ReadUInt32(); m_FibWord2003.lcbAfdFtn = reader.ReadUInt32(); m_FibWord2003.fcPgdEdn = reader.ReadUInt32(); m_FibWord2003.lcbPgdEdn = reader.ReadUInt32(); m_FibWord2003.fcBkdEdn = reader.ReadUInt32(); m_FibWord2003.lcbBkdEdn = reader.ReadUInt32(); m_FibWord2003.fcAfdEdn = reader.ReadUInt32(); m_FibWord2003.lcbAfdEdn = reader.ReadUInt32(); m_FibWord2003.fcAfd = reader.ReadUInt32(); m_FibWord2003.lcbAfd = reader.ReadUInt32(); } if ( m_FibBase.nFib >= Fib2007 ) { //Read also the fibRgFcLcb2007 m_FibWord2007.fcPlcfmthd = reader.ReadUInt32(); m_FibWord2007.lcbPlcfmthd = reader.ReadUInt32(); m_FibWord2007.fcSttbfBkmkMoveFrom = reader.ReadUInt32(); m_FibWord2007.lcbSttbfBkmkMoveFrom = reader.ReadUInt32(); m_FibWord2007.fcPlcfBkfMoveFrom = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBkfMoveFrom= reader.ReadUInt32(); m_FibWord2007.fcPlcfBklMoveFrom = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBklMoveFrom= reader.ReadUInt32(); m_FibWord2007.fcSttbfBkmkMoveTo = reader.ReadUInt32(); m_FibWord2007.lcbSttbfBkmkMoveTo= reader.ReadUInt32(); m_FibWord2007.fcPlcfBkfMoveTo = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBkfMoveTo = reader.ReadUInt32(); m_FibWord2007.fcPlcfBklMoveTo = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBklMoveTo = reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); m_FibWord2007.fcSttbfBkmkArto = reader.ReadUInt32(); m_FibWord2007.lcbSttbfBkmkArto = reader.ReadUInt32(); m_FibWord2007.fcPlcfBkfArto = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBkfArto = reader.ReadUInt32(); m_FibWord2007.fcPlcfBklArto = reader.ReadUInt32(); m_FibWord2007.lcbPlcfBklArto = reader.ReadUInt32(); m_FibWord2007.fcArtoData = reader.ReadUInt32(); m_FibWord2007.lcbArtoData = reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); reader.ReadUInt32(); m_FibWord2007.fcOssTheme = reader.ReadUInt32(); m_FibWord2007.lcbOssTheme = reader.ReadUInt32(); m_FibWord2007.fcColorSchemeMapping = reader.ReadUInt32(); m_FibWord2007.lcbColorSchemeMapping = reader.ReadUInt32(); } cswNew = reader.ReadUInt16(); if (cswNew != 0) { //Read the FibRgCswNew m_FibNew.nFibNew = (FibVersion)reader.ReadUInt16(); if (m_FibNew.nFibNew == 0) m_FibNew.nFibNew = Fib1997; m_FibNew.cQuickSavesNew = reader.ReadUInt16(); if (m_FibNew.nFibNew == 0x00D9 || m_FibNew.nFibNew == 0x0101 || m_FibNew.nFibNew == 0x010C ) { } else if (m_FibNew.nFibNew == 0x0112) { m_FibNew.lidThemeOther = reader.ReadUInt16(); m_FibNew.lidThemeFE = reader.ReadUInt16(); m_FibNew.lidThemeCS = reader.ReadUInt16(); } } } FileInformationBlock( VirtualStreamReader reader ) { m_nWordVersion = 0; m_CodePage = 1250; unsigned int flag16 = 0; unsigned char flag8 = 0; //read the FIB base m_FibBase.wIdent = reader.ReadUInt16(); //0 m_FibBase.nFib = (FibVersion)reader.ReadUInt16(); //2 reader.ReadBytes( 2, false ); //4 //nProduct m_FibBase.lid = reader.ReadUInt16(); //6 m_FibBase.pnNext = reader.ReadInt16(); //8 flag16 = reader.ReadUInt16(); //10 m_FibBase.fDot = ((flag16 & 0x0001) >> 2) != 0; m_FibBase.fGlsy = ((flag16 & 0x0002) >> 1) != 0; m_FibBase.fComplex = ((flag16 & 0x0004) >> 2) != 0; m_FibBase.fHasPic = ((flag16 & 0x0008) >> 3) != 0; m_FibBase.cQuickSaves = (WORD)(((int)flag16 & 0x00F0) >> 4); m_FibBase.fEncrypted = FormatUtils::BitmaskToBool((int)flag16, 0x0100); m_FibBase.fWhichTblStm = FormatUtils::BitmaskToBool((int)flag16, 0x0200); m_FibBase.fReadOnlyRecommended = FormatUtils::BitmaskToBool((int)flag16, 0x0400); m_FibBase.fWriteReservation = FormatUtils::BitmaskToBool((int)flag16, 0x0800); m_FibBase.fExtChar = FormatUtils::BitmaskToBool((int)flag16, 0x1000); m_FibBase.fLoadOverwrite = FormatUtils::BitmaskToBool((int)flag16, 0x2000); m_FibBase.fFarEast = FormatUtils::BitmaskToBool((int)flag16, 0x4000); m_FibBase.fObfuscation = FormatUtils::BitmaskToBool((int)flag16, 0x8000); m_FibBase.nFibBack = reader.ReadUInt16(); //12 if (m_FibBase.nFib < Fib1989) { m_FibWord2.Spare = reader.ReadInt32(); m_FibWord2.rgwSpare0[0] = reader.ReadUInt16(); m_FibWord2.rgwSpare0[1] = reader.ReadUInt16(); m_FibWord2.rgwSpare0[2] = reader.ReadUInt16(); } else { m_FibBase.lKey = reader.ReadInt32(); //14 m_FibBase.envr = reader.ReadByte(); //18 flag8 = reader.ReadByte(); //19 m_FibBase.fMac = FormatUtils::BitmaskToBool((int)flag8, 0x01); m_FibBase.fEmptySpecial = FormatUtils::BitmaskToBool((int)flag8, 0x02); m_FibBase.fLoadOverridePage = FormatUtils::BitmaskToBool((int)flag8, 0x04); m_FibBase.fFutureSavedUndo = FormatUtils::BitmaskToBool((int)flag8, 0x08); m_FibBase.fWord97Saved = FormatUtils::BitmaskToBool((int)flag8, 0x10); reader.ReadBytes( 4, false ); //20 } m_FibBase.fcMin = reader.ReadInt32(); //24 m_FibBase.fcMac = reader.ReadInt32(); //28 if (m_FibBase.nFib > Fib1995) csw = reader.ReadUInt16(); //32 if (m_FibBase.nFib > 0 && m_FibBase.nFib <= Fib1995) { m_RgLw97.cbMac = reader.ReadInt32();//32 } else if (m_FibBase.nFib > Fib1995 || m_FibBase.nFib == 0) { //read the RgW97 int reserv1 = reader.ReadUInt16(); int reserv2 = reader.ReadUInt16(); int reserv3 = reader.ReadUInt16(); int reserv4 = reader.ReadUInt16(); int reserv5 = reader.ReadUInt16(); int reserv6 = reader.ReadUInt16(); int reserv7 = reader.ReadUInt16(); int reserv8 = reader.ReadUInt16(); int reserv9 = reader.ReadUInt16(); int reserv10 = reader.ReadUInt16(); int reserv11 = reader.ReadUInt16(); int reserv12 = reader.ReadUInt16(); int reserv13 = reader.ReadUInt16(); m_RgW97.lidFE = reader.ReadUInt16(); //60 cslw = reader.ReadUInt16(); //62 //read the RgLW97 m_RgLw97.cbMac = reader.ReadInt32(); //64 } reset(reader); } }; }