/* * (c) Copyright Ascensio System SIA 2010-2014 * * 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 Lubanas st. 125a-25, Riga, Latvia, * EU, LV-1021. * * 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 * */ var c_oSerFormat = { Version: 4, Signature: "DOCY" }; var g_nCurFileVersion = c_oSerFormat.Version; var c_oSerTableTypes = { Signature: 0, Info: 1, Media: 2, Numbering: 3, HdrFtr: 4, Style: 5, Document: 6, Other: 7, Comments: 8, Settings: 9 }; var c_oSerSigTypes = { Version: 0 }; var c_oSerHdrFtrTypes = { Header: 0, Footer: 1, HdrFtr_First: 2, HdrFtr_Even: 3, HdrFtr_Odd: 4, HdrFtr_Content: 5, HdrFtr_Y2: 6, HdrFtr_Y: 7 }; var c_oSerNumTypes = { AbstractNums: 0, AbstractNum: 1, AbstractNum_Id: 2, AbstractNum_Type: 3, AbstractNum_Lvls: 4, Lvl: 5, lvl_Format: 6, lvl_Jc: 7, lvl_LvlText: 8, lvl_LvlTextItem: 9, lvl_LvlTextItemText: 10, lvl_LvlTextItemNum: 11, lvl_Restart: 12, lvl_Start: 13, lvl_Suff: 14, lvl_ParaPr: 15, lvl_TextPr: 16, Nums: 17, Num: 18, Num_ANumId: 19, Num_NumId: 20, lvl_PStyle: 21, NumStyleLink: 22, StyleLink: 23 }; var c_oSerOtherTableTypes = { ImageMap: 0, ImageMap_Src: 1, EmbeddedFonts: 2, DocxTheme: 3 }; var c_oSerFontsTypes = { Name: 0 }; var c_oSerImageMapTypes = { Src: 0 }; var c_oSerStyleTypes = { Name: 0, BasedOn: 1, Next: 2 }; var c_oSer_st = { DefpPr: 0, DefrPr: 1, Styles: 2 }; var c_oSer_sts = { Style: 0, Style_Id: 1, Style_Name: 2, Style_BasedOn: 3, Style_Next: 4, Style_TextPr: 5, Style_ParaPr: 6, Style_TablePr: 7, Style_Default: 8, Style_Type: 9, Style_qFormat: 10, Style_uiPriority: 11, Style_hidden: 12, Style_semiHidden: 13, Style_unhideWhenUsed: 14, Style_RowPr: 15, Style_CellPr: 16, Style_TblStylePr: 17 }; var c_oSerProp_tblStylePrType = { TblStylePr: 0, Type: 1, RunPr: 2, ParPr: 3, TblPr: 4, TrPr: 5, TcPr: 6 }; var c_oSerProp_tblPrType = { Rows: 0, Cols: 1, Jc: 2, TableInd: 3, TableW: 4, TableCellMar: 5, TableBorders: 6, Shd: 7, tblpPr: 8, Look: 9, Style: 10, tblpPr2: 11, Layout: 12 }; var c_oSer_tblpPrType = { Page: 0, X: 1, Y: 2, Paddings: 3 }; var c_oSer_tblpPrType2 = { HorzAnchor: 0, TblpX: 1, TblpXSpec: 2, VertAnchor: 3, TblpY: 4, TblpYSpec: 5, Paddings: 6 }; var c_oSerProp_pPrType = { contextualSpacing: 0, Ind: 1, Ind_Left: 2, Ind_Right: 3, Ind_FirstLine: 4, Jc: 5, KeepLines: 6, KeepNext: 7, PageBreakBefore: 8, Spacing: 9, Spacing_Line: 10, Spacing_LineRule: 11, Spacing_Before: 12, Spacing_After: 13, Shd: 14, Tab: 17, Tab_Item: 18, Tab_Item_Pos: 19, Tab_Item_Val: 20, ParaStyle: 21, numPr: 22, numPr_lvl: 23, numPr_id: 24, WidowControl: 25, pPr_rPr: 26, pBdr: 27, Spacing_BeforeAuto: 28, Spacing_AfterAuto: 29, FramePr: 30 }; var c_oSerProp_rPrType = { Bold: 0, Italic: 1, Underline: 2, Strikeout: 3, FontAscii: 4, FontHAnsi: 5, FontAE: 6, FontCS: 7, FontSize: 8, Color: 9, VertAlign: 10, HighLight: 11, HighLightTyped: 12, RStyle: 13, Spacing: 14, DStrikeout: 15, Caps: 16, SmallCaps: 17, Position: 18, FontHint: 19, BoldCs: 20, ItalicCs: 21, FontSizeCs: 22, Cs: 23, Rtl: 24, Lang: 25, LangBidi: 26, LangEA: 27 }; var c_oSerProp_rowPrType = { CantSplit: 0, GridAfter: 1, GridBefore: 2, Jc: 3, TableCellSpacing: 4, Height: 5, Height_Rule: 6, Height_Value: 7, WAfter: 8, WBefore: 9, WAfterBefore_W: 10, WAfterBefore_Type: 11, After: 12, Before: 13, TableHeader: 14 }; var c_oSerProp_cellPrType = { GridSpan: 0, Shd: 1, TableCellBorders: 2, TableCellW: 3, VAlign: 4, VMerge: 5, CellMar: 6 }; var c_oSerProp_secPrType = { pgSz: 0, pgMar: 1, setting: 2 }; var c_oSerProp_secPrSettingsType = { titlePg: 0, EvenAndOddHeaders: 1 }; var c_oSerParType = { Par: 0, pPr: 1, Content: 2, Table: 3, sectPr: 4, Run: 5, CommentStart: 6, CommentEnd: 7, OMathPara: 8, OMath: 9 }; var c_oSerDocTableType = { tblPr: 0, tblGrid: 1, tblGrid_Item: 2, Content: 3, Row: 4, Row_Pr: 4, Row_Content: 5, Cell: 6, Cell_Pr: 7, Cell_Content: 8 }; var c_oSerRunType = { run: 0, rPr: 1, tab: 2, pagenum: 3, pagebreak: 4, linebreak: 5, image: 6, table: 7, Content: 8, fldstart: 9, fldend: 10, CommentReference: 11, pptxDrawing: 12, _LastRun: 13 }; var c_oSerImageType = { MediaId: 0, Type: 1, Width: 2, Height: 3, X: 4, Y: 5, Page: 6, Padding: 7 }; var c_oSerImageType2 = { Type: 0, PptxData: 1, AllowOverlap: 2, BehindDoc: 3, DistB: 4, DistL: 5, DistR: 6, DistT: 7, Hidden: 8, LayoutInCell: 9, Locked: 10, RelativeHeight: 11, BSimplePos: 12, EffectExtent: 13, Extent: 14, PositionH: 15, PositionV: 16, SimplePos: 17, WrapNone: 18, WrapSquare: 19, WrapThrough: 20, WrapTight: 21, WrapTopAndBottom: 22, Chart: 23, ChartImg: 24 }; var c_oSerEffectExtent = { Left: 0, Top: 1, Right: 2, Bottom: 3 }; var c_oSerExtent = { Cx: 0, Cy: 1 }; var c_oSerPosHV = { RelativeFrom: 0, Align: 1, PosOffset: 2 }; var c_oSerSimplePos = { X: 0, Y: 1 }; var c_oSerWrapSquare = { DistL: 0, DistT: 1, DistR: 2, DistB: 3, WrapText: 4, EffectExtent: 5 }; var c_oSerWrapThroughTight = { DistL: 0, DistR: 1, WrapText: 2, WrapPolygon: 3 }; var c_oSerWrapTopBottom = { DistT: 0, DistB: 1, EffectExtent: 2 }; var c_oSerWrapPolygon = { Edited: 0, Start: 1, ALineTo: 2, LineTo: 3 }; var c_oSerPoint2D = { X: 0, Y: 1 }; var c_oSerBorderType = { Color: 0, Space: 1, Size: 2, Value: 3 }; var c_oSerShdType = { Value: 0, Color: 1 }; var c_oSerPaddingType = { left: 0, top: 1, right: 2, bottom: 3 }; var c_oSerMarginsType = { left: 0, top: 1, right: 2, bottom: 3 }; var c_oSerBordersType = { left: 0, top: 1, right: 2, bottom: 3, insideV: 4, insideH: 5, start: 6, end: 7, tl2br: 8, tr2bl: 9, bar: 10, between: 11 }; var c_oSerWidthType = { Type: 0, W: 1, WDocx: 2 }; var c_oSer_pgSzType = { W: 0, H: 1, Orientation: 2 }; var c_oSer_pgMarType = { Left: 0, Top: 1, Right: 2, Bottom: 3, Header: 4, Footer: 5 }; var c_oSer_ColorType = { None: 0, Auto: 1 }; var c_oSer_CommentsType = { Comment: 0, Id: 1, Initials: 2, UserName: 3, UserId: 4, Date: 5, Text: 6, QuoteText: 7, Solved: 8, Replies: 9 }; var c_oSer_StyleType = { Character: 1, Numbering: 2, Paragraph: 3, Table: 4 }; var c_oSer_SettingsType = { ClrSchemeMapping: 0, DefaultTabStop: 1, MathPr: 2 }; var c_oSer_MathPrType = { BrkBin: 0, BrkBinSub: 1, DefJc: 2, DispDef: 3, InterSp: 4, IntLim: 5, IntraSp: 6, LMargin: 7, MathFont: 8, NaryLim: 9, PostSp: 10, PreSp: 11, RMargin: 12, SmallFrac: 13, WrapIndent: 14, WrapRight: 15 }; var c_oSer_ClrSchemeMappingType = { Accent1: 0, Accent2: 1, Accent3: 2, Accent4: 3, Accent5: 4, Accent6: 5, Bg1: 6, Bg2: 7, FollowedHyperlink: 8, Hyperlink: 9, T1: 10, T2: 11 }; var c_oSer_FramePrType = { DropCap: 0, H: 1, HAnchor: 2, HRule: 3, HSpace: 4, Lines: 5, VAnchor: 6, VSpace: 7, W: 8, Wrap: 9, X: 10, XAlign: 11, Y: 12, YAlign: 13 }; var c_oSer_OMathBottomNodesType = { Aln: 0, AlnScr: 1, ArgSz: 2, BaseJc: 3, BegChr: 4, CGp: 5, CGpRule: 6, Chr: 7, Count: 8, CSp: 9, DegHide: 10, Diff: 11, EndChr: 12, Grow: 13, HideBot: 14, HideLeft: 15, HideRight: 16, HideTop: 17, MJc: 18, LimLoc: 19, Lit: 20, MaxDist: 21, McJc: 22, NoBreak: 23, Nor: 24, ObjDist: 25, OpEmu: 26, PlcHide: 27, Pos: 28, RSp: 29, RSpRule: 30, Scr: 31, SepChr: 32, Show: 33, Shp: 34, StrikeBLTR: 35, StrikeH: 36, StrikeTLBR: 37, StrikeV: 38, Sty: 39, SubHide: 40, SupHide: 41, Transp: 42, Type: 43, VertJc: 44, ZeroAsc: 45, ZeroDesc: 46, ZeroWid: 47 }; var c_oSer_OMathBottomNodesValType = { Val: 0, AlnAt: 1 }; var c_oSer_OMathContentType = { Acc: 0, AccPr: 1, ArgPr: 2, Bar: 3, BarPr: 4, BorderBox: 5, BorderBoxPr: 6, Box: 7, BoxPr: 8, Brk: 9, CtrlPr: 10, Delimiter: 11, DelimiterPr: 12, EqArr: 13, EqArrPr: 14, Fraction: 15, FPr: 16, Func: 17, FuncPr: 18, GroupChr: 19, GroupChrPr: 20, LimLow: 21, LimLowPr: 22, LimUpp: 23, LimUppPr: 24, Matrix: 25, MathPr: 26, Mc: 27, McPr: 28, Mcs: 29, MPr: 30, Mr: 31, Nary: 32, NaryPr: 33, OMathPara: 34, OMathParaPr: 35, Phant: 36, PhantPr: 37, MRun: 38, Rad: 39, RadPr: 40, MRPr: 41, SPre: 42, SPrePr: 43, SSub: 44, SSubPr: 45, SSubSup: 46, SSubSupPr: 47, SSup: 48, SSupPr: 49, MText: 50, Column: 51, Row: 52 }; var c_oSer_OMathArgNodesType = { Deg: 0, Den: 1, Element: 2, FName: 3, Lim: 4, Num: 5, OMath: 6, Sub: 7, Sup: 8 }; var ETblStyleOverrideType = { tblstyleoverridetypeBand1Horz: 0, tblstyleoverridetypeBand1Vert: 1, tblstyleoverridetypeBand2Horz: 2, tblstyleoverridetypeBand2Vert: 3, tblstyleoverridetypeFirstCol: 4, tblstyleoverridetypeFirstRow: 5, tblstyleoverridetypeLastCol: 6, tblstyleoverridetypeLastRow: 7, tblstyleoverridetypeNeCell: 8, tblstyleoverridetypeNwCell: 9, tblstyleoverridetypeSeCell: 10, tblstyleoverridetypeSwCell: 11, tblstyleoverridetypeWholeTable: 12 }; var EWmlColorSchemeIndex = { wmlcolorschemeindexAccent1: 0, wmlcolorschemeindexAccent2: 1, wmlcolorschemeindexAccent3: 2, wmlcolorschemeindexAccent4: 3, wmlcolorschemeindexAccent5: 4, wmlcolorschemeindexAccent6: 5, wmlcolorschemeindexDark1: 6, wmlcolorschemeindexDark2: 7, wmlcolorschemeindexFollowedHyperlink: 8, wmlcolorschemeindexHyperlink: 9, wmlcolorschemeindexLight1: 10, wmlcolorschemeindexLight2: 11 }; var EHint = { hintCs: 0, hintDefault: 1, hintEastAsia: 2 }; var ETblLayoutType = { tbllayouttypeAutofit: 1, tbllayouttypeFixed: 2 }; var g_nodeAttributeStart = 250; var g_nodeAttributeEnd = 251; var g_sErrorCharCountMessage = "g_sErrorCharCountMessage"; var g_nErrorCharCount = 30000; var g_nErrorParagraphCount = 1000; function BinaryFileWriter(doc) { this.memory = new CMemory(); this.Document = doc; this.nLastFilePos = 0; this.nRealTableCount = 0; this.nStart = 0; this.bs = new BinaryCommonWriter(this.memory); this.copyParams = { bLockCopyElems: null, itemCount: null, bdtw: null, oUsedNumIdMap: null, nNumIdIndex: null, oUsedStyleMap: null }; this.Write = function () { window.global_pptx_content_writer._Start(); this.WriteMainTable(); window.global_pptx_content_writer._End(); return this.GetResult(); }; this.GetResult = function () { return this.WriteFileHeader(this.memory.GetCurPosition()) + this.memory.GetBase64Memory(); }; this.WriteFileHeader = function (nDataSize) { return c_oSerFormat.Signature + ";v" + c_oSerFormat.Version + ";" + nDataSize + ";"; }; this.WriteMainTable = function () { this.WriteMainTableStart(); this.WriteMainTableContent(); this.WriteMainTableEnd(); }; this.WriteMainTableStart = function () { var nTableCount = 128; this.nRealTableCount = 0; this.nStart = this.memory.GetCurPosition(); var nmtItemSize = 5; this.nLastFilePos = this.nStart + nTableCount * nmtItemSize; this.memory.WriteByte(0); }; this.WriteMainTableContent = function () { this.WriteTable(c_oSerTableTypes.Signature, new BinarySigTableWriter(this.memory, this.Document)); this.WriteTable(c_oSerTableTypes.Settings, new BinarySettingsTableWriter(this.memory, this.Document)); var oMapCommentId = new Object(); this.WriteTable(c_oSerTableTypes.Comments, new BinaryCommentsTableWriter(this.memory, this.Document, oMapCommentId)); var oNumIdMap = new Object(); this.WriteTable(c_oSerTableTypes.Numbering, new BinaryNumberingTableWriter(this.memory, this.Document, oNumIdMap)); this.WriteTable(c_oSerTableTypes.Style, new BinaryStyleTableWriter(this.memory, this.Document, oNumIdMap)); this.WriteTable(c_oSerTableTypes.HdrFtr, new BinaryHeaderFooterTableWriter(this.memory, this.Document, oNumIdMap)); this.WriteTable(c_oSerTableTypes.Document, new BinaryDocumentTableWriter(this.memory, this.Document, oMapCommentId, oNumIdMap, null)); var oBinaryOtherTableWriter = new BinaryOtherTableWriter(this.memory, this.Document); this.WriteTable(c_oSerTableTypes.Other, oBinaryOtherTableWriter); }; this.WriteMainTableEnd = function () { this.memory.Seek(this.nStart); this.memory.WriteByte(this.nRealTableCount); this.memory.Seek(this.nLastFilePos); }; this.CopyStart = function () { var api = this.Document.DrawingDocument.m_oWordControl.m_oApi; window.global_pptx_content_writer.Start_UseFullUrl(documentOrigin + api.DocumentUrl); window.global_pptx_content_writer.Start_UseDocumentOrigin(documentOrigin); window.global_pptx_content_writer._Start(); this.copyParams.bLockCopyElems = 0; this.copyParams.itemCount = 0; this.copyParams.oUsedNumIdMap = new Object(); this.copyParams.nNumIdIndex = 1; this.copyParams.oUsedStyleMap = new Object(); this.copyParams.bdtw = new BinaryDocumentTableWriter(this.memory, this.Document, null, this.copyParams.oUsedNumIdMap, this.copyParams); this.copyParams.nDocumentWriterTablePos = 0; this.copyParams.nDocumentWriterPos = 0; this.WriteMainTableStart(); this.copyParams.nDocumentWriterTablePos = this.WriteTableStart(c_oSerTableTypes.Document); this.copyParams.nDocumentWriterPos = this.bs.WriteItemWithLengthStart(); }; this.CopyParagraph = function (Item) { if (this.copyParams.bLockCopyElems > 0) { return; } var oThis = this; this.bs.WriteItem(c_oSerParType.Par, function () { oThis.copyParams.bdtw.WriteParapraph(Item, true); }); this.copyParams.itemCount++; }; this.CopyTable = function (Item, aRowElems, nMinGrid, nMaxGrid) { if (this.copyParams.bLockCopyElems > 0) { return; } var oThis = this; this.bs.WriteItem(c_oSerParType.Table, function () { oThis.copyParams.bdtw.WriteDocTable(Item, aRowElems, nMinGrid, nMaxGrid); }); this.copyParams.itemCount++; }; this.CopyEnd = function () { this.bs.WriteItemWithLengthEnd(this.copyParams.nDocumentWriterPos); this.WriteTableEnd(this.copyParams.nDocumentWriterTablePos); this.WriteTable(c_oSerTableTypes.Numbering, new BinaryNumberingTableWriter(this.memory, this.Document, new Object(), this.copyParams.oUsedNumIdMap)); this.WriteTable(c_oSerTableTypes.Style, new BinaryStyleTableWriter(this.memory, this.Document, this.copyParams.oUsedNumIdMap, this.copyParams.oUsedStyleMap)); this.WriteMainTableEnd(); window.global_pptx_content_writer._End(); window.global_pptx_content_writer.End_UseFullUrl(); }; this.WriteTable = function (type, oTableSer) { var nCurPos = this.WriteTableStart(type); oTableSer.Write(); this.WriteTableEnd(nCurPos); }; this.WriteTableStart = function (type) { this.memory.WriteByte(type); this.memory.WriteLong(this.nLastFilePos); var nCurPos = this.memory.GetCurPosition(); this.memory.Seek(this.nLastFilePos); return nCurPos; }; this.WriteTableEnd = function (nCurPos) { this.nLastFilePos = this.memory.GetCurPosition(); this.memory.Seek(nCurPos); this.nRealTableCount++; }; } function BinarySigTableWriter(memory) { this.memory = memory; this.Write = function () { this.memory.WriteByte(c_oSerSigTypes.Version); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(c_oSerFormat.Version); }; } function BinaryStyleTableWriter(memory, doc, oNumIdMap, oUsedStyleMap) { this.memory = memory; this.Document = doc; this.oUsedStyleMap = oUsedStyleMap; this.bs = new BinaryCommonWriter(this.memory); this.btblPrs = new Binary_tblPrWriter(this.memory, oNumIdMap); this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap); this.brPrs = new Binary_rPrWriter(this.memory); this.Write = function () { var oThis = this; this.bs.WriteItemWithLength(function () { oThis.WriteStylesContent(); }); }; this.WriteStylesContent = function () { var oThis = this; var oStyles = this.Document.Styles; var oDef_pPr = oStyles.Default.ParaPr; var oDef_rPr = oStyles.Default.TextPr; this.bs.WriteItem(c_oSer_st.DefpPr, function () { oThis.bpPrs.Write_pPr(oDef_pPr); }); this.bs.WriteItem(c_oSer_st.DefrPr, function () { oThis.brPrs.Write_rPr(oDef_rPr); }); this.bs.WriteItem(c_oSer_st.Styles, function () { oThis.WriteStyles(oStyles.Style, oStyles.Default); }); }; this.WriteStyles = function (styles, oDefault) { var oThis = this; var oStyleToWrite = styles; if (null != this.oUsedStyleMap) { oStyleToWrite = this.oUsedStyleMap; } for (styleId in oStyleToWrite) { var style = styles[styleId]; var bDefault = false; if (styleId == oDefault.Paragraph) { bDefault = true; } else { if (styleId == oDefault.Numbering) { bDefault = true; } else { if (styleId == oDefault.Table) { bDefault = true; } } } this.bs.WriteItem(c_oSer_sts.Style, function () { oThis.WriteStyle(styleId, style, bDefault); }); } }; this.WriteStyle = function (id, style, bDefault) { var oThis = this; if (null != id) { this.memory.WriteByte(c_oSer_sts.Style_Id); this.memory.WriteString2(id.toString()); } if (null != style.Name) { this.memory.WriteByte(c_oSer_sts.Style_Name); this.memory.WriteString2(style.Name.toString()); } if (null != style.Type) { var nSerStyleType = c_oSer_StyleType.Paragraph; switch (style.Type) { case styletype_Character: nSerStyleType = c_oSer_StyleType.Character; break; case styletype_Numbering: nSerStyleType = c_oSer_StyleType.Numbering; break; case styletype_Paragraph: nSerStyleType = c_oSer_StyleType.Paragraph; break; case styletype_Table: nSerStyleType = c_oSer_StyleType.Table; break; } this.bs.WriteItem(c_oSer_sts.Style_Type, function () { oThis.memory.WriteByte(nSerStyleType); }); } if (true == bDefault) { this.bs.WriteItem(c_oSer_sts.Style_Default, function () { oThis.memory.WriteBool(bDefault); }); } if (null != style.BasedOn) { this.memory.WriteByte(c_oSer_sts.Style_BasedOn); this.memory.WriteString2(style.BasedOn.toString()); } if (null != style.Next) { this.memory.WriteByte(c_oSer_sts.Style_Next); this.memory.WriteString2(style.Next.toString()); } if (null != style.qFormat) { this.bs.WriteItem(c_oSer_sts.Style_qFormat, function () { oThis.memory.WriteBool(style.qFormat); }); } if (null != style.uiPriority) { this.bs.WriteItem(c_oSer_sts.Style_uiPriority, function () { oThis.memory.WriteLong(style.uiPriority); }); } if (null != style.hidden) { this.bs.WriteItem(c_oSer_sts.Style_hidden, function () { oThis.memory.WriteBool(style.hidden); }); } if (null != style.semiHidden) { this.bs.WriteItem(c_oSer_sts.Style_semiHidden, function () { oThis.memory.WriteBool(style.semiHidden); }); } if (null != style.unhideWhenUsed) { this.bs.WriteItem(c_oSer_sts.Style_unhideWhenUsed, function () { oThis.memory.WriteBool(style.unhideWhenUsed); }); } if (null != style.TextPr) { this.bs.WriteItem(c_oSer_sts.Style_TextPr, function () { oThis.brPrs.Write_rPr(style.TextPr); }); } if (null != style.ParaPr) { this.bs.WriteItem(c_oSer_sts.Style_ParaPr, function () { oThis.bpPrs.Write_pPr(style.ParaPr); }); } if (null != style.TablePr) { this.bs.WriteItem(c_oSer_sts.Style_TablePr, function () { oThis.btblPrs.WriteTblPr(style.TablePr, null); }); } if (null != style.TableRowPr) { this.bs.WriteItem(c_oSer_sts.Style_RowPr, function () { oThis.btblPrs.WriteRowPr(style.TableRowPr); }); } if (null != style.TableCellPr) { this.bs.WriteItem(c_oSer_sts.Style_CellPr, function () { oThis.btblPrs.WriteCellPr(style.TableCellPr); }); } var aTblStylePr = new Array(); if (null != style.TableBand1Horz) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeBand1Horz, val: style.TableBand1Horz }); } if (null != style.TableBand1Vert) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeBand1Vert, val: style.TableBand1Vert }); } if (null != style.TableBand2Horz) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeBand2Horz, val: style.TableBand2Horz }); } if (null != style.TableBand2Vert) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeBand2Vert, val: style.TableBand2Vert }); } if (null != style.TableFirstCol) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeFirstCol, val: style.TableFirstCol }); } if (null != style.TableFirstRow) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeFirstRow, val: style.TableFirstRow }); } if (null != style.TableLastCol) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeLastCol, val: style.TableLastCol }); } if (null != style.TableLastRow) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeLastRow, val: style.TableLastRow }); } if (null != style.TableTLCell) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeNeCell, val: style.TableTLCell }); } if (null != style.TableTRCell) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeNwCell, val: style.TableTRCell }); } if (null != style.TableBLCell) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeSeCell, val: style.TableBLCell }); } if (null != style.TableBRCell) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeSwCell, val: style.TableBRCell }); } if (null != style.TableWholeTable) { aTblStylePr.push({ type: ETblStyleOverrideType.tblstyleoverridetypeWholeTable, val: style.TableWholeTable }); } if (aTblStylePr.length > 0) { this.bs.WriteItem(c_oSer_sts.Style_TblStylePr, function () { oThis.WriteTblStylePr(aTblStylePr); }); } }; this.WriteTblStylePr = function (aTblStylePr) { var oThis = this; for (var i = 0, length = aTblStylePr.length; i < length; ++i) { this.bs.WriteItem(c_oSerProp_tblStylePrType.TblStylePr, function () { oThis.WriteTblStyleProperty(aTblStylePr[i]); }); } }; this.WriteTblStyleProperty = function (oProp) { var oThis = this; var type = oProp.type; var val = oProp.val; this.bs.WriteItem(c_oSerProp_tblStylePrType.Type, function () { oThis.memory.WriteByte(type); }); if (null != val.TextPr) { this.bs.WriteItem(c_oSerProp_tblStylePrType.RunPr, function () { oThis.brPrs.Write_rPr(val.TextPr); }); } if (null != val.ParaPr) { this.bs.WriteItem(c_oSerProp_tblStylePrType.ParPr, function () { oThis.bpPrs.Write_pPr(val.ParaPr); }); } if (null != val.TablePr) { this.bs.WriteItem(c_oSerProp_tblStylePrType.TblPr, function () { oThis.btblPrs.WriteTblPr(val.TablePr, null); }); } if (null != val.TableRowPr) { this.bs.WriteItem(c_oSerProp_tblStylePrType.TrPr, function () { oThis.btblPrs.WriteRowPr(val.TableRowPr); }); } if (null != val.TableCellPr) { this.bs.WriteItem(c_oSerProp_tblStylePrType.TcPr, function () { oThis.btblPrs.WriteCellPr(val.TableCellPr); }); } }; } function Binary_pPrWriter(memory, oNumIdMap) { this.memory = memory; this.oNumIdMap = oNumIdMap; this.bs = new BinaryCommonWriter(this.memory); this.brPrs = new Binary_rPrWriter(this.memory); this.Write_pPr = function (pPr, pPr_rPr) { var oThis = this; if (null != pPr.PStyle) { this.memory.WriteByte(c_oSerProp_pPrType.ParaStyle); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(pPr.PStyle); } if (null != pPr.NumPr) { var numPr = pPr.NumPr; var id = null; if (null != this.oNumIdMap && null != numPr.NumId) { id = this.oNumIdMap[numPr.NumId]; if (null == id) { id = 0; } } if (null != numPr.Lvl || null != id) { this.memory.WriteByte(c_oSerProp_pPrType.numPr); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteNumPr(id, numPr.Lvl); }); } } if (null != pPr.ContextualSpacing) { this.memory.WriteByte(c_oSerProp_pPrType.contextualSpacing); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(pPr.ContextualSpacing); } if (null != pPr.Ind) { this.memory.WriteByte(c_oSerProp_pPrType.Ind); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteInd(pPr.Ind); }); } if (null != pPr.Jc) { this.memory.WriteByte(c_oSerProp_pPrType.Jc); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(pPr.Jc); } if (null != pPr.KeepLines) { this.memory.WriteByte(c_oSerProp_pPrType.KeepLines); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(pPr.KeepLines); } if (null != pPr.KeepNext) { this.memory.WriteByte(c_oSerProp_pPrType.KeepNext); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(pPr.KeepNext); } if (null != pPr.PageBreakBefore) { this.memory.WriteByte(c_oSerProp_pPrType.PageBreakBefore); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(pPr.PageBreakBefore); } if (null != pPr.Spacing) { this.memory.WriteByte(c_oSerProp_pPrType.Spacing); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteSpacing(pPr.Spacing); }); } if (null != pPr.Shd) { this.memory.WriteByte(c_oSerProp_pPrType.Shd); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.bs.WriteShd(pPr.Shd); }); } if (null != pPr.WidowControl) { this.memory.WriteByte(c_oSerProp_pPrType.WidowControl); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(pPr.WidowControl); } if (null != pPr.Tabs && pPr.Tabs.Get_Count() > 0) { this.memory.WriteByte(c_oSerProp_pPrType.Tab); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteTabs(pPr.Tabs.Tabs); }); } if (null != pPr_rPr) { this.memory.WriteByte(c_oSerProp_pPrType.pPr_rPr); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.brPrs.Write_rPr(pPr_rPr); }); } if (null != pPr.Brd) { this.memory.WriteByte(c_oSerProp_pPrType.pBdr); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.bs.WriteBorders(pPr.Brd); }); } if (null != pPr.FramePr) { this.memory.WriteByte(c_oSerProp_pPrType.FramePr); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteFramePr(pPr.FramePr); }); } }; this.WriteInd = function (Ind) { if (null != Ind.Left) { this.memory.WriteByte(c_oSerProp_pPrType.Ind_Left); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Ind.Left); } if (null != Ind.Right) { this.memory.WriteByte(c_oSerProp_pPrType.Ind_Right); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Ind.Right); } if (null != Ind.FirstLine) { this.memory.WriteByte(c_oSerProp_pPrType.Ind_FirstLine); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Ind.FirstLine); } }; this.WriteSpacing = function (Spacing) { if (null != Spacing.Line) { this.memory.WriteByte(c_oSerProp_pPrType.Spacing_Line); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Spacing.Line); } if (null != Spacing.LineRule) { this.memory.WriteByte(c_oSerProp_pPrType.Spacing_LineRule); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(Spacing.LineRule); } if (null != Spacing.BeforeAutoSpacing) { this.memory.WriteByte(c_oSerProp_pPrType.Spacing_BeforeAuto); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Spacing.BeforeAutoSpacing); } if (null != Spacing.Before) { this.memory.WriteByte(c_oSerProp_pPrType.Spacing_Before); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Spacing.Before); } if (null != Spacing.AfterAutoSpacing) { this.memory.WriteByte(c_oSerProp_pPrType.Spacing_AfterAuto); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Spacing.AfterAutoSpacing); } if (null != Spacing.After) { this.memory.WriteByte(c_oSerProp_pPrType.Spacing_After); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Spacing.After); } }; this.WriteTabs = function (Tab) { var oThis = this; var nLen = Tab.length; for (var i = 0; i < nLen; ++i) { var tab = Tab[i]; this.memory.WriteByte(c_oSerProp_pPrType.Tab_Item); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteTabItem(tab); }); } }; this.WriteTabItem = function (TabItem) { this.memory.WriteByte(c_oSerProp_pPrType.Tab_Item_Val); this.memory.WriteByte(c_oSerPropLenType.Byte); switch (TabItem.Value) { case tab_Right: this.memory.WriteByte(g_tabtype_right); break; case tab_Center: this.memory.WriteByte(g_tabtype_center); break; case tab_Clear: this.memory.WriteByte(g_tabtype_clear); break; default: this.memory.WriteByte(g_tabtype_left); } this.memory.WriteByte(c_oSerProp_pPrType.Tab_Item_Pos); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(TabItem.Pos); }; this.WriteNumPr = function (id, lvl) { if (null != lvl) { this.memory.WriteByte(c_oSerProp_pPrType.numPr_lvl); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(lvl); } if (null != id) { this.memory.WriteByte(c_oSerProp_pPrType.numPr_id); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(id); } }; this.WriteFramePr = function (oFramePr) { if (null != oFramePr.DropCap) { this.memory.WriteByte(c_oSer_FramePrType.DropCap); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(oFramePr.DropCap); } if (null != oFramePr.H) { this.memory.WriteByte(c_oSer_FramePrType.H); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(g_dKoef_mm_to_twips * oFramePr.H); } if (null != oFramePr.HAnchor) { this.memory.WriteByte(c_oSer_FramePrType.HAnchor); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(oFramePr.HAnchor); } if (null != oFramePr.HRule) { this.memory.WriteByte(c_oSer_FramePrType.HRule); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(oFramePr.HRule); } if (null != oFramePr.HSpace) { this.memory.WriteByte(c_oSer_FramePrType.HSpace); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(g_dKoef_mm_to_twips * oFramePr.HSpace); } if (null != oFramePr.Lines) { this.memory.WriteByte(c_oSer_FramePrType.Lines); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(oFramePr.Lines); } if (null != oFramePr.VAnchor) { this.memory.WriteByte(c_oSer_FramePrType.VAnchor); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(oFramePr.VAnchor); } if (null != oFramePr.VSpace) { this.memory.WriteByte(c_oSer_FramePrType.VSpace); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(g_dKoef_mm_to_twips * oFramePr.VSpace); } if (null != oFramePr.W) { this.memory.WriteByte(c_oSer_FramePrType.W); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(g_dKoef_mm_to_twips * oFramePr.W); } if (null != oFramePr.Wrap) { this.memory.WriteByte(c_oSer_FramePrType.Wrap); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(oFramePr.Wrap); } if (null != oFramePr.X) { this.memory.WriteByte(c_oSer_FramePrType.X); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(g_dKoef_mm_to_twips * oFramePr.X); } if (null != oFramePr.XAlign) { this.memory.WriteByte(c_oSer_FramePrType.XAlign); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(oFramePr.XAlign); } if (null != oFramePr.Y) { this.memory.WriteByte(c_oSer_FramePrType.Y); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(g_dKoef_mm_to_twips * oFramePr.Y); } if (null != oFramePr.YAlign) { this.memory.WriteByte(c_oSer_FramePrType.YAlign); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(oFramePr.YAlign); } }; } function Binary_rPrWriter(memory) { this.memory = memory; this.bs = new BinaryCommonWriter(this.memory); this.Write_rPr = function (rPr) { if (null != rPr.Bold) { var bold = rPr.Bold; this.memory.WriteByte(c_oSerProp_rPrType.Bold); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(bold); } if (null != rPr.Italic) { var italic = rPr.Italic; this.memory.WriteByte(c_oSerProp_rPrType.Italic); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(italic); } if (null != rPr.Underline) { this.memory.WriteByte(c_oSerProp_rPrType.Underline); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.Underline); } if (null != rPr.Strikeout) { this.memory.WriteByte(c_oSerProp_rPrType.Strikeout); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.Strikeout); } if (null != rPr.RFonts) { var font = rPr.RFonts; if (null != font.Ascii) { this.memory.WriteByte(c_oSerProp_rPrType.FontAscii); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(font.Ascii.Name); } if (null != font.HAnsi) { this.memory.WriteByte(c_oSerProp_rPrType.FontHAnsi); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(font.HAnsi.Name); } if (null != font.CS) { this.memory.WriteByte(c_oSerProp_rPrType.FontCS); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(font.CS.Name); } if (null != font.EastAsia) { this.memory.WriteByte(c_oSerProp_rPrType.FontAE); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(font.EastAsia.Name); } if (null != font.Hint) { var nHint; switch (font.Hint) { case fonthint_CS: nHint = EHint.hintCs; break; case fonthint_EastAsia: nHint = EHint.hintEastAsia; break; default: nHint = EHint.hintDefault; break; } this.memory.WriteByte(c_oSerProp_rPrType.FontHint); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(nHint); } } if (null != rPr.FontSize) { this.memory.WriteByte(c_oSerProp_rPrType.FontSize); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(rPr.FontSize * 2); } if (null != rPr.Color) { this.bs.WriteColor(c_oSerProp_rPrType.Color, rPr.Color); } if (null != rPr.VertAlign) { this.memory.WriteByte(c_oSerProp_rPrType.VertAlign); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(rPr.VertAlign); } if (null != rPr.HighLight) { if (highlight_None == rPr.HighLight) { this.memory.WriteByte(c_oSerProp_rPrType.HighLightTyped); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(c_oSer_ColorType.None); } else { this.bs.WriteColor(c_oSerProp_rPrType.HighLight, rPr.HighLight); } } if (null != rPr.RStyle) { this.memory.WriteByte(c_oSerProp_rPrType.RStyle); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(rPr.RStyle); } if (null != rPr.Spacing) { this.memory.WriteByte(c_oSerProp_rPrType.Spacing); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(rPr.Spacing); } if (null != rPr.DStrikeout) { this.memory.WriteByte(c_oSerProp_rPrType.DStrikeout); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.DStrikeout); } if (null != rPr.Caps) { this.memory.WriteByte(c_oSerProp_rPrType.Caps); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.Caps); } if (null != rPr.SmallCaps) { this.memory.WriteByte(c_oSerProp_rPrType.SmallCaps); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.SmallCaps); } if (null != rPr.Position) { this.memory.WriteByte(c_oSerProp_rPrType.Position); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(rPr.Position); } if (null != rPr.BoldCS) { this.memory.WriteByte(c_oSerProp_rPrType.BoldCs); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.BoldCS); } if (null != rPr.ItalicCS) { this.memory.WriteByte(c_oSerProp_rPrType.ItalicCs); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.ItalicCS); } if (null != rPr.FontSizeCS) { this.memory.WriteByte(c_oSerProp_rPrType.FontSizeCs); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(rPr.FontSizeCS * 2); } if (null != rPr.CS) { this.memory.WriteByte(c_oSerProp_rPrType.Cs); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.CS); } if (null != rPr.RTL) { this.memory.WriteByte(c_oSerProp_rPrType.Rtl); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rPr.RTL); } if (null != rPr.Lang) { if (null != rPr.Lang.Val) { this.memory.WriteByte(c_oSerProp_rPrType.Lang); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(g_oLcidIdToNameMap[rPr.Lang.Val]); } if (null != rPr.Lang.Bidi) { this.memory.WriteByte(c_oSerProp_rPrType.LangBidi); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(g_oLcidIdToNameMap[rPr.Lang.Bidi]); } if (null != rPr.Lang.EastAsia) { this.memory.WriteByte(c_oSerProp_rPrType.LangEA); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(g_oLcidIdToNameMap[rPr.Lang.EastAsia]); } } }; } function Binary_tblPrWriter(memory, oNumIdMap) { this.memory = memory; this.bs = new BinaryCommonWriter(this.memory); this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap); } Binary_tblPrWriter.prototype = { WriteTbl: function (table) { var oThis = this; this.WriteTblPr(table.Pr, table); var oLook = table.Get_TableLook(); if (null != oLook) { var nLook = 0; if (oLook.Is_FirstCol()) { nLook |= 128; } if (oLook.Is_FirstRow()) { nLook |= 32; } if (oLook.Is_LastCol()) { nLook |= 256; } if (oLook.Is_LastRow()) { nLook |= 64; } if (!oLook.Is_BandHor()) { nLook |= 512; } if (!oLook.Is_BandVer()) { nLook |= 1024; } this.bs.WriteItem(c_oSerProp_tblPrType.Look, function () { oThis.memory.WriteLong(nLook); }); } var sStyle = table.Get_TableStyle(); if (null != sStyle && "" != sStyle) { this.memory.WriteByte(c_oSerProp_tblPrType.Style); this.memory.WriteString2(sStyle); } }, WriteTblPr: function (tblPr, table) { var oThis = this; if (null != tblPr.Jc) { this.bs.WriteItem(c_oSerProp_tblPrType.Jc, function () { oThis.memory.WriteByte(tblPr.Jc); }); } if (null != tblPr.TableInd) { this.bs.WriteItem(c_oSerProp_tblPrType.TableInd, function () { oThis.memory.WriteDouble(tblPr.TableInd); }); } if (null != tblPr.TableW) { this.bs.WriteItem(c_oSerProp_tblPrType.TableW, function () { oThis.WriteW(tblPr.TableW); }); } if (null != tblPr.TableCellMar) { this.bs.WriteItem(c_oSerProp_tblPrType.TableCellMar, function () { oThis.WriteCellMar(tblPr.TableCellMar); }); } if (null != tblPr.TableBorders) { this.bs.WriteItem(c_oSerProp_tblPrType.TableBorders, function () { oThis.bs.WriteBorders(tblPr.TableBorders); }); } if (null != tblPr.Shd && shd_Nil != tblPr.Shd.Value) { this.bs.WriteItem(c_oSerProp_tblPrType.Shd, function () { oThis.bs.WriteShd(tblPr.Shd); }); } if (null != tblPr.TableLayout) { var nLayout = ETblLayoutType.tbllayouttypeAutofit; switch (tblPr.TableLayout) { case tbllayout_AutoFit: nLayout = ETblLayoutType.tbllayouttypeAutofit; break; case tbllayout_Fixed: nLayout = ETblLayoutType.tbllayouttypeFixed; break; } this.bs.WriteItem(c_oSerProp_tblPrType.Layout, function () { oThis.memory.WriteByte(nLayout); }); } if (null != table && false == table.Inline) { this.bs.WriteItem(c_oSerProp_tblPrType.tblpPr2, function () { oThis.Write_tblpPr2(table); }); } }, WriteCellMar: function (cellMar) { var oThis = this; if (null != cellMar.Left) { this.bs.WriteItem(c_oSerMarginsType.left, function () { oThis.WriteW(cellMar.Left); }); } if (null != cellMar.Top) { this.bs.WriteItem(c_oSerMarginsType.top, function () { oThis.WriteW(cellMar.Top); }); } if (null != cellMar.Right) { this.bs.WriteItem(c_oSerMarginsType.right, function () { oThis.WriteW(cellMar.Right); }); } if (null != cellMar.Bottom) { this.bs.WriteItem(c_oSerMarginsType.bottom, function () { oThis.WriteW(cellMar.Bottom); }); } }, Write_tblpPr2: function (table) { var oThis = this; if (null != table.PositionH) { var PositionH = table.PositionH; if (null != PositionH.RelativeFrom) { this.memory.WriteByte(c_oSer_tblpPrType2.HorzAnchor); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(PositionH.RelativeFrom); } if (true == PositionH.Align) { this.memory.WriteByte(c_oSer_tblpPrType2.TblpXSpec); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(PositionH.Value); } else { this.memory.WriteByte(c_oSer_tblpPrType2.TblpX); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(PositionH.Value); } } if (null != table.PositionV) { var PositionV = table.PositionV; if (null != PositionV.RelativeFrom) { this.memory.WriteByte(c_oSer_tblpPrType2.VertAnchor); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(PositionV.RelativeFrom); } if (true == PositionV.Align) { this.memory.WriteByte(c_oSer_tblpPrType2.TblpYSpec); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(PositionV.Value); } else { this.memory.WriteByte(c_oSer_tblpPrType2.TblpY); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(PositionV.Value); } } if (null != table.Distance) { this.memory.WriteByte(c_oSer_tblpPrType2.Paddings); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.bs.WritePaddings(table.Distance); }); } }, WriteRowPr: function (rowPr) { var oThis = this; if (null != rowPr.CantSplit) { this.memory.WriteByte(c_oSerProp_rowPrType.CantSplit); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rowPr.CantSplit); } if (null != rowPr.GridAfter || null != rowPr.WAfter) { this.memory.WriteByte(c_oSerProp_rowPrType.After); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteAfter(rowPr); }); } if (null != rowPr.GridBefore || null != rowPr.WBefore) { this.memory.WriteByte(c_oSerProp_rowPrType.Before); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteBefore(rowPr); }); } if (null != rowPr.Jc) { this.memory.WriteByte(c_oSerProp_rowPrType.Jc); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(rowPr.Jc); } if (null != rowPr.TableCellSpacing) { this.memory.WriteByte(c_oSerProp_rowPrType.TableCellSpacing); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(rowPr.TableCellSpacing); } if (null != rowPr.Height && heightrule_Auto != rowPr.Height.HRule) { this.memory.WriteByte(c_oSerProp_rowPrType.Height); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteRowHeight(rowPr.Height); }); } if (true == rowPr.TableHeader) { this.memory.WriteByte(c_oSerProp_rowPrType.TableHeader); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(rowPr.TableHeader); } }, WriteAfter: function (After) { var oThis = this; if (null != After.GridAfter) { this.memory.WriteByte(c_oSerProp_rowPrType.GridAfter); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(After.GridAfter); } if (null != After.WAfter) { this.memory.WriteByte(c_oSerProp_rowPrType.WAfter); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteW(After.WAfter); }); } }, WriteBefore: function (Before) { var oThis = this; if (null != Before.GridBefore) { this.memory.WriteByte(c_oSerProp_rowPrType.GridBefore); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(Before.GridBefore); } if (null != Before.WBefore) { this.memory.WriteByte(c_oSerProp_rowPrType.WBefore); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteW(Before.WBefore); }); } }, WriteRowHeight: function (rowHeight) { if (null != rowHeight.HRule) { this.memory.WriteByte(c_oSerProp_rowPrType.Height_Rule); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(rowHeight.HRule); } if (null != rowHeight.Value) { this.memory.WriteByte(c_oSerProp_rowPrType.Height_Value); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(rowHeight.Value); } }, WriteW: function (WAfter) { if (tblwidth_Pct != WAfter.Type) { if (null != WAfter.Type) { this.memory.WriteByte(c_oSerWidthType.Type); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(WAfter.Type); } if (null != WAfter.W) { var nVal = WAfter.W; if (tblwidth_Mm == WAfter.Type) { nVal = Math.round(g_dKoef_mm_to_twips * WAfter.W); } this.memory.WriteByte(c_oSerWidthType.WDocx); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(nVal); } } }, WriteCellPr: function (cellPr, vMerge) { var oThis = this; if (null != cellPr.GridSpan) { this.memory.WriteByte(c_oSerProp_cellPrType.GridSpan); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(cellPr.GridSpan); } if (null != cellPr.Shd && shd_Nil != cellPr.Shd.Value) { this.memory.WriteByte(c_oSerProp_cellPrType.Shd); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.bs.WriteShd(cellPr.Shd); }); } if (null != cellPr.TableCellBorders) { this.memory.WriteByte(c_oSerProp_cellPrType.TableCellBorders); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.bs.WriteBorders(cellPr.TableCellBorders); }); } if (null != cellPr.TableCellMar) { this.memory.WriteByte(c_oSerProp_cellPrType.CellMar); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteCellMar(cellPr.TableCellMar); }); } if (null != cellPr.TableCellW) { this.memory.WriteByte(c_oSerProp_cellPrType.TableCellW); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteW(cellPr.TableCellW); }); } if (null != cellPr.VAlign) { this.memory.WriteByte(c_oSerProp_cellPrType.VAlign); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(cellPr.VAlign); } var nVMerge = null; if (null != cellPr.VMerge) { nVMerge = cellPr.VMerge; } else { if (null != vMerge) { nVMerge = vMerge; } } if (null != nVMerge) { this.memory.WriteByte(c_oSerProp_cellPrType.VMerge); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(nVMerge); } } }; function BinaryHeaderFooterTableWriter(memory, doc, oNumIdMap) { this.memory = memory; this.Document = doc; this.oNumIdMap = oNumIdMap; this.bs = new BinaryCommonWriter(this.memory); this.Write = function () { var oThis = this; this.bs.WriteItemWithLength(function () { oThis.WriteHeaderFooterContent(); }); }; this.WriteHeaderFooterContent = function () { var oThis = this; var oHeader = null; var oFooter = null; if (this.Document.HdrFtr && this.Document.HdrFtr.Content && this.Document.HdrFtr.Content.length > 0 && this.Document.HdrFtr.Content[0].Header) { oHeader = this.Document.HdrFtr.Content[0].Header; } if (this.Document.HdrFtr && this.Document.HdrFtr.Content && this.Document.HdrFtr.Content.length > 0 && this.Document.HdrFtr.Content[0].Footer) { oFooter = this.Document.HdrFtr.Content[0].Footer; } if (null != oHeader) { this.bs.WriteItem(c_oSerHdrFtrTypes.Header, function () { oThis.WriteHdrFtrContent(oHeader); }); } if (null != oFooter) { this.bs.WriteItem(c_oSerHdrFtrTypes.Footer, function () { oThis.WriteHdrFtrContent(oFooter); }); } }; this.WriteHdrFtrContent = function (oHdrFtr) { var oThis = this; if (null != oHdrFtr.Odd) { this.bs.WriteItem(c_oSerHdrFtrTypes.HdrFtr_Odd, function () { oThis.WriteHdrFtrItem(oHdrFtr.Odd); }); } if (null != oHdrFtr.Even && oHdrFtr.Odd !== oHdrFtr.Even) { this.bs.WriteItem(c_oSerHdrFtrTypes.HdrFtr_Even, function () { oThis.WriteHdrFtrItem(oHdrFtr.Even); }); } if (null != oHdrFtr.First && oHdrFtr.Odd != oHdrFtr.First && oHdrFtr.Even != oHdrFtr.First) { this.bs.WriteItem(c_oSerHdrFtrTypes.HdrFtr_First, function () { oThis.WriteHdrFtrItem(oHdrFtr.First); }); } }; this.WriteHdrFtrItem = function (item) { var oThis = this; this.bs.WriteItem(c_oSerHdrFtrTypes.HdrFtr_Y, function () { oThis.memory.WriteDouble(item.BoundY); }); this.bs.WriteItem(c_oSerHdrFtrTypes.HdrFtr_Y2, function () { oThis.memory.WriteDouble(item.BoundY2); }); var dtw = new BinaryDocumentTableWriter(this.memory, this.Document, null, this.oNumIdMap, null); this.bs.WriteItem(c_oSerHdrFtrTypes.HdrFtr_Content, function () { dtw.WriteDocumentContent(item.Content); }); }; } function BinaryNumberingTableWriter(memory, doc, oNumIdMap, oUsedNumIdMap) { this.memory = memory; this.Document = doc; this.oNumIdMap = oNumIdMap; this.oUsedNumIdMap = oUsedNumIdMap; this.bs = new BinaryCommonWriter(this.memory); this.bpPrs = new Binary_pPrWriter(this.memory, null != this.oUsedNumIdMap ? this.oUsedNumIdMap : this.oNumIdMap); this.brPrs = new Binary_rPrWriter(this.memory); this.Write = function () { var oThis = this; this.bs.WriteItemWithLength(function () { oThis.WriteNumberingContent(); }); }; this.WriteNumberingContent = function () { var oThis = this; if (null != this.Document.Numbering && this.Document.Numbering.AbstractNum) { var ANums = this.Document.Numbering.AbstractNum; this.bs.WriteItem(c_oSerNumTypes.AbstractNums, function () { oThis.WriteAbstractNums(ANums); }); this.bs.WriteItem(c_oSerNumTypes.Nums, function () { oThis.WriteNums(ANums); }); } }; this.WriteNums = function (nums) { var oThis = this; var index = 0; if (null != this.oUsedNumIdMap) { for (i in this.oUsedNumIdMap) { this.bs.WriteItem(c_oSerNumTypes.Num, function () { oThis.WriteNum(i, oThis.oUsedNumIdMap[i] - 1); }); } } else { for (i in nums) { this.bs.WriteItem(c_oSerNumTypes.Num, function () { oThis.WriteNum(i, index); }); index++; } } }; this.WriteNum = function (id, index) { var oThis = this; this.memory.WriteByte(c_oSerNumTypes.Num_ANumId); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(index); this.memory.WriteByte(c_oSerNumTypes.Num_NumId); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(index + 1); this.oNumIdMap[id] = index + 1; }; this.WriteAbstractNums = function (nums) { var oThis = this; var index = 0; var aNumsToWrite = nums; if (null != this.oUsedNumIdMap) { for (i in this.oUsedNumIdMap) { var num = nums[i]; if (null != num) { this.bs.WriteItem(c_oSerNumTypes.AbstractNum, function () { oThis.WriteAbstractNum(num, oThis.oUsedNumIdMap[i] - 1); }); } } } else { for (i in nums) { var num = nums[i]; this.bs.WriteItem(c_oSerNumTypes.AbstractNum, function () { oThis.WriteAbstractNum(num, index); }); index++; } } }; this.WriteAbstractNum = function (num, index) { var oThis = this; if (null != num.Id) { this.bs.WriteItem(c_oSerNumTypes.AbstractNum_Id, function () { oThis.memory.WriteLong(index); }); } if (null != num.NumStyleLink) { this.memory.WriteByte(c_oSerNumTypes.NumStyleLink); this.memory.WriteString2(num.NumStyleLink); } if (null != num.StyleLink) { this.memory.WriteByte(c_oSerNumTypes.StyleLink); this.memory.WriteString2(num.StyleLink); } if (null != num.Lvl) { this.bs.WriteItem(c_oSerNumTypes.AbstractNum_Lvls, function () { oThis.WriteLevels(num.Lvl); }); } }; this.WriteLevels = function (lvls) { var oThis = this; for (var i = 0, length = lvls.length; i < length; i++) { var lvl = lvls[i]; this.bs.WriteItem(c_oSerNumTypes.Lvl, function () { oThis.WriteLevel(lvl); }); } }; this.WriteLevel = function (lvl) { var oThis = this; if (null != lvl.Format) { this.memory.WriteByte(c_oSerNumTypes.lvl_Format); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(lvl.Format); } if (null != lvl.Jc) { this.memory.WriteByte(c_oSerNumTypes.lvl_Jc); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(lvl.Jc); } if (null != lvl.LvlText) { this.memory.WriteByte(c_oSerNumTypes.lvl_LvlText); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteLevelText(lvl.LvlText); }); } if (null != lvl.Restart) { this.memory.WriteByte(c_oSerNumTypes.lvl_Restart); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(lvl.Restart); } if (null != lvl.Start) { this.memory.WriteByte(c_oSerNumTypes.lvl_Start); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(lvl.Start); } if (null != lvl.Suff) { this.memory.WriteByte(c_oSerNumTypes.lvl_Suff); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(lvl.Suff); } if (null != lvl.PStyle) { this.memory.WriteByte(c_oSerNumTypes.lvl_PStyle); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(lvl.PStyle); } if (null != lvl.ParaPr) { this.memory.WriteByte(c_oSerNumTypes.lvl_ParaPr); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.bpPrs.Write_pPr(lvl.ParaPr); }); } if (null != lvl.TextPr) { this.memory.WriteByte(c_oSerNumTypes.lvl_TextPr); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.brPrs.Write_rPr(lvl.TextPr); }); } }; this.WriteLevelText = function (aText) { var oThis = this; for (var i = 0, length = aText.length; i < length; i++) { var item = aText[i]; this.bs.WriteItem(c_oSerNumTypes.lvl_LvlTextItem, function () { oThis.WriteLevelTextItem(item); }); } }; this.WriteLevelTextItem = function (oTextItem) { var oThis = this; if (numbering_lvltext_Text == oTextItem.Type) { this.memory.WriteByte(c_oSerNumTypes.lvl_LvlTextItemText); oThis.memory.WriteString2(oTextItem.Value.toString()); } else { if (numbering_lvltext_Num == oTextItem.Type) { this.memory.WriteByte(c_oSerNumTypes.lvl_LvlTextItemNum); this.bs.WriteItemWithLength(function () { oThis.memory.WriteByte(oTextItem.Value); }); } } }; } function BinaryDocumentTableWriter(memory, doc, oMapCommentId, oNumIdMap, copyParams) { this.memory = memory; this.Document = doc; this.oNumIdMap = oNumIdMap; this.bs = new BinaryCommonWriter(this.memory); this.btblPrs = new Binary_tblPrWriter(this.memory, oNumIdMap); this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap); this.brPrs = new Binary_rPrWriter(this.memory); this.sCurText = ""; this.oCur_rPr = null; this.oMapCommentId = oMapCommentId; this.copyParams = copyParams; this.Write = function () { var oThis = this; this.bs.WriteItemWithLength(function () { oThis.WriteDocumentContent(oThis.Document, true); }); }; this.WriteDocumentContent = function (oDocument, bSectPr) { var Content = oDocument.Content; var oThis = this; for (var i = 0, length = Content.length; i < length; ++i) { var item = Content[i]; if (type_Paragraph === item.GetType()) { this.memory.WriteByte(c_oSerParType.Par); this.bs.WriteItemWithLength(function () { oThis.WriteParapraph(item); }); } else { if (type_Table === item.GetType()) { this.memory.WriteByte(c_oSerParType.Table); this.bs.WriteItemWithLength(function () { oThis.WriteDocTable(item); }); } } } if (true == bSectPr) { this.bs.WriteItem(c_oSerParType.sectPr, function () { oThis.WriteSectPr(); }); } }; this.WriteParapraph = function (par, bUseSelection) { var oThis = this; var ParaStart = 0; var ParaEnd = par.Content.length - 1; if (null != this.copyParams) { var sParaStyle = par.Style_Get(); if (null != sParaStyle) { this.copyParams.oUsedStyleMap[sParaStyle] = 1; } var oNumPr = par.Numbering_Get(); if (null != oNumPr && null != oNumPr.NumId && 0 != oNumPr.NumId) { if (null == this.copyParams.oUsedNumIdMap[oNumPr.NumId]) { this.copyParams.oUsedNumIdMap[oNumPr.NumId] = this.copyParams.nNumIdIndex; this.copyParams.nNumIdIndex++; var Numbering = par.Parent.Get_Numbering(); var aNum = null; if (null != Numbering) { aNum = Numbering.Get_AbstractNum(oNumPr.NumId); } if (null != aNum) { for (var i = 0, length = aNum.Lvl.length; i < length; ++i) { var oLvl = aNum.Lvl[i]; if (null != oLvl.PStyle) { this.copyParams.oUsedStyleMap[oLvl.PStyle] = 1; } } } } } } if (true == bUseSelection) { ParaStart = par.Selection.StartPos; ParaEnd = par.Selection.EndPos; if (ParaStart > ParaEnd) { var Temp2 = ParaEnd; ParaEnd = ParaStart; ParaStart = Temp2; } } var ParaStyle = par.Style_Get(); var pPr = par.Pr; if (null != pPr || null != ParaStyle || pPr_rPr) { if (null == pPr) { pPr = new Object(); } var pPr_rPr = null; var propCount = 0; for (prop in par.TextPr.Value) { if (par.TextPr.Value.hasOwnProperty(prop)) { pPr_rPr = par.TextPr.Value; break; } } this.memory.WriteByte(c_oSerParType.pPr); this.bs.WriteItemWithLength(function () { oThis.bpPrs.Write_pPr(pPr, pPr_rPr); }); } if (null != par.Content) { this.memory.WriteByte(c_oSerParType.Content); this.bs.WriteItemWithLength(function () { oThis.WriteParagraphContent(par, ParaStart, ParaEnd, bUseSelection); }); } }; this.WriteParagraphContent = function (par, ParaStart, ParaEnd, bUseSelection) { var Content = par.Content; this.oCur_rPr = null; this.sCurText = ""; var oThis = this; var bExistHyperlink = false; if (bUseSelection && ParaStart > 0) { for (var i = ParaStart - 1; i >= 0; --i) { var item = Content[i]; if (para_HyperlinkStart == item.Type) { this.WriteText(); var sField = 'HYPERLINK "' + item.Value.replace(/"/g, '\\"') + '"'; if (null != item.ToolTip) { sField += ' \\o "' + item.ToolTip.replace(/"/g, '\\"') + '"'; } this.WriteRun(function () { oThis.memory.WriteByte(c_oSerRunType.fldstart); oThis.memory.WriteString2(sField); }); bExistHyperlink = true; break; } else { if (para_HyperlinkEnd == item.Type) { break; } } } } for (var i = ParaStart; i < ParaEnd; ++i) { var item = Content[i]; if (bUseSelection && ParaStart == i && para_TextPr != item.Type) { var oFindObj = par.Internal_FindBackward(ParaStart, [para_TextPr]); if (true === oFindObj.Found && para_TextPr === oFindObj.Type) { this.oCur_rPr = par.Content[oFindObj.LetterPos].Value; } } switch (item.Type) { case para_Text: this.sCurText += item.Value; break; case para_Space: this.sCurText += " "; break; case para_Tab: this.WriteText(); this.WriteRun(function () { oThis.memory.WriteByte(c_oSerRunType.tab); oThis.memory.WriteLong(c_oSerPropLenType.Null); }); break; case para_PageNum: this.WriteText(); this.WriteRun(function () { oThis.memory.WriteByte(c_oSerRunType.pagenum); oThis.memory.WriteLong(c_oSerPropLenType.Null); }); break; case para_NewLine: this.WriteText(); this.WriteRun(function () { if (break_Page == item.BreakType) { oThis.memory.WriteByte(c_oSerRunType.pagebreak); } else { oThis.memory.WriteByte(c_oSerRunType.linebreak); } oThis.memory.WriteLong(c_oSerPropLenType.Null); }); break; case para_TextPr: this.WriteText(); this.oCur_rPr = item.Value; break; case para_Drawing: this.WriteText(); this.WriteRun(function () { if (item.Extent && item.GraphicObj && item.GraphicObj.spPr && item.GraphicObj.spPr.xfrm) { item.Extent.W = item.GraphicObj.spPr.xfrm.extX; item.Extent.H = item.GraphicObj.spPr.xfrm.extY; } oThis.bs.WriteItem(c_oSerRunType.pptxDrawing, function () { oThis.WriteImage(item); }); }); break; case para_HyperlinkStart: this.WriteText(); var sField = 'HYPERLINK "' + item.Value.replace(/"/g, '\\"') + '"'; if (null != item.ToolTip) { sField += ' \\o "' + item.ToolTip.replace(/"/g, '\\"') + '"'; } this.WriteRun(function () { oThis.memory.WriteByte(c_oSerRunType.fldstart); oThis.memory.WriteString2(sField); }); bExistHyperlink = true; break; case para_HyperlinkEnd: this.WriteText(); this.WriteRun(function () { oThis.memory.WriteByte(c_oSerRunType.fldend); oThis.memory.WriteLong(c_oSerPropLenType.Null); }); bExistHyperlink = false; break; case para_CommentStart: if (null != this.oMapCommentId) { var commentId = this.oMapCommentId[item.Id]; if (null != commentId) { this.WriteText(); this.bs.WriteItem(c_oSerParType.CommentStart, function () { oThis.bs.WriteItem(c_oSer_CommentsType.Id, function () { oThis.memory.WriteLong(commentId); }); }); } } break; case para_CommentEnd: if (null != this.oMapCommentId) { var commentId = this.oMapCommentId[item.Id]; if (null != commentId) { this.WriteText(); this.bs.WriteItem(c_oSerParType.CommentEnd, function () { oThis.bs.WriteItem(c_oSer_CommentsType.Id, function () { oThis.memory.WriteLong(commentId); }); }); this.WriteRun(function () { oThis.bs.WriteItem(c_oSerRunType.CommentReference, function () { oThis.bs.WriteItem(c_oSer_CommentsType.Id, function () { oThis.memory.WriteLong(commentId); }); }); }); } } break; } } this.WriteText(); if (bExistHyperlink) { this.WriteRun(function () { oThis.memory.WriteByte(c_oSerRunType.fldend); oThis.memory.WriteLong(c_oSerPropLenType.Null); }); } if (bUseSelection && ParaEnd < Content.length - 1) { this.oCur_rPr = null; this.WriteRun(function () { oThis.memory.WriteByte(c_oSerRunType._LastRun); oThis.memory.WriteLong(c_oSerPropLenType.Null); }); } }; this.WriteMathArg = function (oOMath) { var oThis = this; var nStart = 0; var nEnd = oOMath.content.length - 1; for (var i = nStart; i <= nEnd; i++) { var item = oOMath.content[i]; switch (item.value) { case "CAccent": this.bs.WriteItem(c_oSer_OMathContentType.Acc, function () { oThis.WriteMathAcc(item); }); break; case "ArgPr": this.bs.WriteItem(c_oSer_OMathContentType.ArgPr, function () { oThis.WriteMathArgPr(item); }); break; case "CBar": this.bs.WriteItem(c_oSer_OMathContentType.Bar, function () { oThis.WriteMathBar(item); }); break; case "CBorderBox": this.bs.WriteItem(c_oSer_OMathContentType.BorderBox, function () { oThis.WriteMathBorderBox(item); }); break; case "CBox": this.bs.WriteItem(c_oSer_OMathContentType.Box, function () { oThis.WriteMathBox(item); }); break; case "CCtrlPr": this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(item); }); break; case "CDelimiter": this.bs.WriteItem(c_oSer_OMathContentType.Delimiter, function () { oThis.WriteMathDelimiter(item); }); break; case "CEqArr": this.bs.WriteItem(c_oSer_OMathContentType.EqArr, function () { oThis.WriteMathEqArr(item); }); break; case "CFraction": this.bs.WriteItem(c_oSer_OMathContentType.Fraction, function () { oThis.WriteMathFraction(item); }); break; case "CMathFunc": this.bs.WriteItem(c_oSer_OMathContentType.Func, function () { oThis.WriteMathFunc(item); }); break; case "CGroupCharacter": this.bs.WriteItem(c_oSer_OMathContentType.GroupChr, function () { oThis.WriteMathGroupChr(item); }); break; case "CLimit": if (LIMIT_LOW == item.type) { this.bs.WriteItem(c_oSer_OMathContentType.LimLow, function () { oThis.WriteMathLimLow(item); }); } else { if (LIMIT_UP == item.type) { this.bs.WriteItem(c_oSer_OMathContentType.LimUpp, function () { oThis.WriteMathLimUpp(item); }); } } break; case "CMatrix": this.bs.WriteItem(c_oSer_OMathContentType.Matrix, function () { oThis.WriteMathMatrix(item); }); break; case "CNary": this.bs.WriteItem(c_oSer_OMathContentType.Nary, function () { oThis.WriteMathNary(item); }); break; case "OMath": this.bs.WriteItem(c_oSer_OMathArgNodesType.OMath, function () { oThis.WriteMathArg(item); }); break; case "OMathPara": this.bs.WriteItem(c_oSer_OMathContentType.OMathPara, function () { oThis.WriteMathOMathPara(item); }); break; case "CPhant": this.bs.WriteItem(c_oSer_OMathContentType.Phant, function () { oThis.WriteMathPhant(item); }); break; case "MRun": this.bs.WriteItem(c_oSer_OMathContentType.MRun, function () { oThis.WriteMathMRun(item); }); break; case "CRadical": this.bs.WriteItem(c_oSer_OMathContentType.Rad, function () { oThis.WriteMathRad(item); }); break; case "CDegreeSubSup": if (DEGREE_PreSubSup == item.type) { this.bs.WriteItem(c_oSer_OMathContentType.SPre, function () { oThis.WriteMathSPre(item); }); } else { if (DEGREE_SubSup == item.type) { this.bs.WriteItem(c_oSer_OMathContentType.SSubSup, function () { oThis.WriteMathSSubSup(item); }); } } break; case "CDegree": if (DEGREE_SUBSCRIPT == item.type) { this.bs.WriteItem(c_oSer_OMathContentType.SSub, function () { oThis.WriteMathSSub(item); }); } else { if (DEGREE_SUPERSCRIPT == item.type) { this.bs.WriteItem(c_oSer_OMathContentType.SSup, function () { oThis.WriteMathSSup(item); }); } } break; default: break; } } }; this.WriteMathAcc = function (oAcc) { var oThis = this; var oElem = oAcc.getBase(); if (null != oAcc.props) { this.bs.WriteItem(c_oSer_OMathContentType.AccPr, function () { oThis.WriteMathAccPr(oAcc.props, oAcc); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathAccPr = function (props, oAcc) { if (null != props.chr) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Chr, function () { oThis.WriteMathChr(props.chr); }); } if (null != oAcc.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oAcc); }); } }; this.WriteMathAln = function (Aln) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Aln); }; this.WriteMathAlnScr = function (AlnScr) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(AlnScr); }; this.WriteMathArgPr = function (oArgPr) { if (null != oArgPr.argSz) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.ArgSz, function () { oThis.WriteMathArgSz(oArgPr.argSz); }); } }; this.WriteMathArgSz = function (ArgSz) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(ArgSz); }; this.WriteMathBar = function (oBar) { var oThis = this; var oElem = oBar.getBase(); if (null != oBar.props) { this.bs.WriteItem(c_oSer_OMathContentType.BarPr, function () { oThis.WriteMathBarPr(oBar.props, oBar); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathBarPr = function (props, oBar) { if (null != props.pos) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Pos, function () { oThis.WriteMathPos(props.pos); }); } if (null != oBar.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oBar); }); } }; this.WriteMathBaseJc = function (BaseJc) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(BaseJc); }; this.WriteMathBegChr = function (BegChr) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(BegChr); }; this.WriteMathBorderBox = function (oBorderBox) { var oThis = this; var oElem = oBorderBox.getBase(); if (null != oBorderBox.props) { this.bs.WriteItem(c_oSer_OMathContentType.BorderBoxPr, function () { oThis.WriteMathBorderBoxPr(oBorderBox.props, oBorderBox); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathBorderBoxPr = function (props, oBorderBox) { if (null != props.hideBot) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.HideBot, function () { oThis.WriteMathHideBot(props.hideBot); }); } if (null != props.hideLeft) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.HideLeft, function () { oThis.WriteMathHideLeft(props.hideLeft); }); } if (null != props.hideRight) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.HideRight, function () { oThis.WriteMathHideRight(props.hideRight); }); } if (null != props.hideTop) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.HideTop, function () { oThis.WriteMathHideTop(props.hideTop); }); } if (null != props.strikeBLTR) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.StrikeBLTR, function () { oThis.WriteMathStrikeBLTR(props.strikeBLTR); }); } if (null != props.strikeH) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.StrikeH, function () { oThis.WriteMathStrikeH(props.strikeH); }); } if (null != props.strikeTLBR) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.StrikeTLBR, function () { oThis.WriteMathStrikeTLBR(props.strikeTLBR); }); } if (null != props.strikeV) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.StrikeV, function () { oThis.WriteMathStrikeV(props.strikeV); }); } if (null != oBorderBox.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oBorderBox); }); } }; this.WriteMathBox = function (oBox) { var oThis = this; var oElem = oBox.getBase(); if (null != oBox.props) { this.bs.WriteItem(c_oSer_OMathContentType.BorderBoxPr, function () { oThis.WriteMathBoxPr(oBox.props, oBox); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathBoxPr = function (props, oBox) { if (null != props.aln) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Aln, function () { oThis.WriteMathAln(props.aln); }); } if (null != props.brk) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Brk, function () { oThis.WriteMathBrk(props.brk); }); } if (null != props.diff) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Diff, function () { oThis.WriteMathDiff(props.diff); }); } if (null != props.noBreak) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.NoBreak, function () { oThis.WriteMathNoBreak(props.noBreak); }); } if (null != props.opEmu) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.OpEmu, function () { oThis.WriteMathOpEmu(props.opEmu); }); } if (null != oBox.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oBox); }); } }; this.WriteMathBrk = function (Brk) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.AlnAt); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(Brk); }; this.WriteMathCGp = function (CGp) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(CGp); }; this.WriteMathCGpRule = function (CGpRule) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(CGpRule); }; this.WriteMathChr = function (Chr) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(Chr); }; this.WriteMathCSp = function (CSp) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(CSp); }; this.WriteMathCtrlPr = function (oElem) { if (null != oElem.TxtPrp) { this.bs.WriteItem(c_oSerRunType.rPr, function () { oThis.brPrs.Write_rPr(oElem.TxtPrp); }); } }; this.WriteMathDegHide = function (DegHide) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(DegHide); }; this.WriteMathDiff = function (Diff) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Diff); }; this.WriteMathDelimiter = function (oDelimiter) { var oThis = this; var nStart = 0; var nEnd = oDelimiter.elements.length; if (null != oDelimiter.props) { this.bs.WriteItem(c_oSer_OMathContentType.DelimiterPr, function () { oThis.WriteMathDelimiterPr(oDelimiter.props, oDelimiter); }); } for (var i = nStart; i < nEnd; i++) { var oElem = oDelimiter.getBase(i); this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathDelimiterPr = function (props, oDelimiter) { if (null != props.begChr) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.BegChr, function () { oThis.WriteMathBegChr(props.begChr); }); } if (null != props.endChr) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.EndChr, function () { oThis.WriteMathEndChr(props.endChr); }); } if (null != props.grow) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Grow, function () { oThis.WriteMathGrow(props.grow); }); } if (null != props.sepChr) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.SepChr, function () { oThis.WriteMathSepChr(props.sepChr); }); } if (null != props.shp) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Shp, function () { oThis.WriteMathShp(props.shp); }); } if (null != oDelimiter.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oDelimiter); }); } }; this.WriteMathEndChr = function (EndChr) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(EndChr); }; this.WriteMathEqArr = function (oEqArr) { var oThis = this; var nStart = 0; var nEnd = oEqArr.elements.length; if (null != oEqArr.props) { this.bs.WriteItem(c_oSer_OMathContentType.EqArrPr, function () { oThis.WriteMathEqArrPr(oEqArr.props, oEqArr); }); } for (var i = nStart; i < nEnd; i++) { var oElem = oEqArr.getBase(i); this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathEqArrPr = function (props, oEqArr) { if (null != props.baseJc) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.BaseJc, function () { oThis.WriteMathBaseJc(props.baseJc); }); } if (null != props.maxDist) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.MaxDist, function () { oThis.WriteMathMaxDist(props.maxDist); }); } if (null != props.objDist) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.ObjDist, function () { oThis.WriteMathObjDist(props.objDist); }); } if (null != props.rSp) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.RSp, function () { oThis.WriteMathRSp(props.rSp); }); } if (null != props.rSpRule) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.RSpRule, function () { oThis.WriteMathRSpRule(props.rSpRule); }); } if (null != oEqArr.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oEqArr); }); } }; this.WriteMathFraction = function (oFraction) { var oThis = this; var oDen = oFraction.getDenominator(); var oNum = oFraction.getNumerator(); if (null != oFraction.props) { this.bs.WriteItem(c_oSer_OMathContentType.FPr, function () { oThis.WriteMathFPr(oFraction.props, oFraction); }); } if (null != oDen) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Den, function () { oThis.WriteMathArgNodes(oDen); }); } if (null != oNum) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Num, function () { oThis.WriteMathArgNodes(oNum); }); } }; this.WriteMathFPr = function (props, oFraction) { if (null != props.type) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Type, function () { oThis.WriteMathType(props.type); }); } if (null != oEqArr.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oEqArr); }); } }; this.WriteMathFunc = function (oFunc) { var oThis = this; var oFName = oFunc.getFName(); var oElem = oFunc.getArgument(); if (null != oFunc.props) { this.bs.WriteItem(c_oSer_OMathContentType.FPr, function () { oThis.WriteMathFuncPr(oFunc.props, oFunc); }); } if (null != oFName) { this.bs.WriteItem(c_oSer_OMathArgNodesType.FName, function () { oThis.WriteMathArgNodes(oFName); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathFuncPr = function (props, oFunc) { if (null != oFunc.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oFunc); }); } }; this.WriteMathGroupChr = function (oGroupChr) { var oThis = this; var oElem = oGroupChr.getArgument(); if (null != oGroupChr.props) { this.bs.WriteItem(c_oSer_OMathContentType.GroupChrPr, function () { oThis.WriteMathGroupChrPr(oBox.props, oGroupChr); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathGroupChrPr = function (props, oGroupChr) { if (null != props.chr) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Chr, function () { oThis.WriteMathChr(props.chr); }); } if (null != props.pos) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Pos, function () { oThis.WriteMathPos(props.pos); }); } if (null != props.vertJc) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.VertJc, function () { oThis.WriteMathVertJc(props.vertJc); }); } if (null != oEqArr.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oEqArr); }); } }; this.WriteMathGrow = function (Grow) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Grow); }; this.WriteMathHideBot = function (HideBot) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(HideBot); }; this.WriteMathHideLeft = function (HideLeft) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(HideLeft); }; this.WriteMathHideRight = function (HideRight) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(HideRight); }; this.WriteMathHideTop = function (HideTop) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(HideTop); }; this.WriteMathMJc = function (MJc) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(MJc); }; this.WriteMathLimLoc = function (LimLoc) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(LimLoc); }; this.WriteMathLimLow = function (oLimLow) { var oThis = this; var oElem = oLimLow.getFName(); var oLim = oLimLow.getIterator(); if (null != oLimLow.props) { this.bs.WriteItem(c_oSer_OMathContentType.LimLowPr, function () { oThis.WriteMathLimLowPr(oLimLow.props, oLimLow); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } if (null != oLim) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Lim, function () { oThis.WriteMathArgNodes(oLim); }); } }; this.WriteMathLimLowPr = function (props, oLimLow) { if (null != oLimLow.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oLimLow); }); } }; this.WriteMathLimUpp = function (oLimUpp) { var oThis = this; var oElem = oLimUpp.getFName(); var oLim = oLimUpp.getIterator(); if (null != oLimUpp.props) { this.bs.WriteItem(c_oSer_OMathContentType.LimUppPr, function () { oThis.WriteMathLimUppPr(oLimUpp.props, oLimUpp); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } if (null != oLim) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Lim, function () { oThis.WriteMathArgNodes(oLim); }); } }; this.WriteMathLimUppPr = function (props, oLimUpp) { if (null != oLimUpp.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oLimUpp); }); } }; this.WriteMathLit = function (Lit) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Lit); }; this.WriteMathMaxDist = function (MaxDist) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(MaxDist); }; this.WriteMathMatrix = function (oMatrix) { var oThis = this; var nStart = 0; var nEnd = oMatrix.props.row; if (null != oMatrix.props) { this.bs.WriteItem(c_oSer_OMathContentType.EqArrPr, function () { oThis.WriteMathMPr(oMatrix.props, oMatrix); }); } for (var i = nStart; i < nEnd; i++) { this.bs.WriteItem(c_oSer_OMathContentType.Mr, function () { oThis.WriteMathMr(oMatrix, i); }); } }; this.WriteMathMc = function (props) { this.bs.WriteItem(c_oSer_OMathContentType.McPr, function () { oThis.WriteMathMcPr(props); }); }; this.WriteMathMcPr = function (props) { if (null != props.mcJc) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.McJc, function () { oThis.WriteMathMcJc(props.mcJc); }); } if (null != props.column) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Count, function () { oThis.WriteMathCount(props.column); }); } }; this.WriteMathMcs = function (props) { this.bs.WriteItem(c_oSer_OMathContentType.Mc, function () { oThis.WriteMathMc(props); }); }; this.WriteMathMPr = function (props, oMatrix) { if (null != props.baseJc) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.BaseJc, function () { oThis.WriteMathBaseJc(props.baseJc); }); } if (null != props.cGp) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.CGp, function () { oThis.WriteMathCGp(props.cGp); }); } if (null != props.cGpRule) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.CGpRule, function () { oThis.WriteMathCGpRule(props.cGpRule); }); } if (null != props.cSp) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.CSp, function () { oThis.WriteMathCSp(props.cSp); }); } if (null != props.column || null != props.mcJc) { this.bs.WriteItem(c_oSer_OMathContentType.Mcs, function () { oThis.WriteMathMcs(props); }); } if (null != props.plcHide) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.PlcHide, function () { oThis.WriteMathPlcHide(props.plcHide); }); } if (null != props.rSp) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.RSp, function () { oThis.WriteMathRSp(props.rSp); }); } if (null != props.rSpRule) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.RSpRule, function () { oThis.WriteMathRSpRule(props.rSpRule); }); } if (null != oNary.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oMatrix); }); } }; this.WriteMathMr = function (oMatrix, nRow) { var oThis = this; var nStart = 0; var nEnd = oMatrix.props.column; for (var i = nStart; i < nEnd; i++) { var oElem = oEqArr.getBase(nRow, i); this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathNary = function (oNary) { var oThis = this; var oElem = oNary.getBase(); var oSub = oNary.getLowerIterator(); var oSup = oNary.getUpperIterator(); if (null != oNary.props) { this.bs.WriteItem(c_oSer_OMathContentType.NaryPr, function () { oThis.WriteMathNaryPr(oNary.props, oNary); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } if (null != oSub) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oSub); }); } if (null != oSup) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oSup); }); } }; this.WriteMathNaryPr = function (props, oNary) { if (null != props.chr) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Chr, function () { oThis.WriteMathChr(props.chr); }); } if (null != props.grow) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Grow, function () { oThis.WriteMathGrow(props.grow); }); } if (null != props.limLoc) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.LimLoc, function () { oThis.WriteMathLimLoc(props.limLoc); }); } if (null != props.subHide) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.SubHide, function () { oThis.WriteMathSubHide(props.subHide); }); } if (null != props.supHide) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.SupHide, function () { oThis.WriteMathSupHide(props.supHide); }); } if (null != oNary.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oNary); }); } }; this.WriteMathNoBreak = function (NoBreak) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(NoBreak); }; this.WriteMathNor = function (Nor) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Nor); }; this.WriteMathObjDist = function (ObjDist) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(ObjDist); }; this.WriteMathOMathPara = function (oOMathPara) { var oThis = this; if (null != oOMathPara.Root) { oThis.bs.WriteItem(c_oSer_OMathArgNodesType.OMath, function () { oThis.WriteMathArg(oOMathPara.Root); }); } if (null != oOMathPara.props) { oThis.bs.WriteItem(c_oSer_OMathContentType.OMathParaPr, function () { oThis.WriteMathOMathParaPr(oOMathPara.props); }); } }; this.WriteMathOMathParaPr = function (props) { if (null != props.mJc) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.MJc, function () { oThis.WriteMathMJc(props.mJc); }); } }; this.WriteMathOpEmu = function (OpEmu) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(OpEmu); }; this.WriteMathPhant = function (oPhant) { var oThis = this; var oElem = oPhant.getBase(); if (null != oPhant.props) { this.bs.WriteItem(c_oSer_OMathContentType.PhantPr, function () { oThis.WriteMathPhantPr(oPhant.props, oPhant); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathPhantPr = function (props, oPhant) { if (null != props.show) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Show, function () { oThis.WriteMathShow(props.show); }); } if (null != props.transp) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Transp, function () { oThis.WriteMathTransp(props.transp); }); } if (null != props.zeroAsc) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.ZeroAsc, function () { oThis.WriteMathZeroAsc(props.zeroAsc); }); } if (null != props.zeroDesc) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.ZeroDesc, function () { oThis.WriteMathZeroDesc(props.zeroDesc); }); } if (null != props.zeroWid) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.ZeroWid, function () { oThis.WriteMathZeroWid(props.zeroWid); }); } if (null != oPhant.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oPhant); }); } }; this.WriteMathPlcHide = function (PlcHide) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(PlcHide); }; this.WriteMathPos = function (Pos) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(Pos); }; this.WriteMathMRun = function (oMRun) { var oThis = this; var oText = oMRun.GetText(); if (null != oMRun.props) { this.bs.WriteItem(c_oSer_OMathContentType.MRPr, function () { oThis.WriteMathMRPr(oMRun.props); }); } if (null != oMRun.TxtPrp) { this.bs.WriteItem(c_oSerRunType.rPr, function () { oThis.brPrs.Write_rPr(oMRun.TxtPrp); }); } if (null != oText) { this.bs.WriteItem(c_oSer_OMathContentType.MText, function () { oThis.memory.WriteString2(oText.toString()); }); } }; this.WriteMathMRPr = function (props) { if (null != props.aln) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Aln, function () { oThis.WriteMathAln(props.aln); }); } if (null != props.brk) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Brk, function () { oThis.WriteMathBrk(props.brk); }); } if (null != props.lit) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Lit, function () { oThis.WriteMathLit(props.lit); }); } if (null != props.nor) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Nor, function () { oThis.WriteMathNor(props.nor); }); } if (null != props.scr) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Scr, function () { oThis.WriteMathScr(props.scr); }); } if (null != props.sty) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.Sty, function () { oThis.WriteMathSty(props.sty); }); } }; this.WriteMathRad = function (oRad) { var oThis = this; var oElem = oRad.getBase(); var oDeg = oRad.getDegree(); if (null != oRad.props) { this.bs.WriteItem(c_oSer_OMathContentType.RadPr, function () { oThis.WriteMathRadPr(oRad.props, oRad); }); } if (null != oDeg) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Deg, function () { oThis.WriteMathArgNodes(oDeg); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathRadPr = function (props, oRad) { if (null != props.degHide) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.DegHide, function () { oThis.WriteMathDegHide(props.degHide); }); } if (null != oRad.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oRad); }); } }; this.WriteMathRSp = function (RSp) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(RSp); }; this.WriteMathRSpRule = function (RSpRule) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(RSpRule); }; this.WriteMathScr = function (Scr) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(Scr); }; this.WriteMathSepChr = function (SepChr) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(SepChr); }; this.WriteMathShow = function (Show) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Show); }; this.WriteMathShp = function (Show) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(Show); }; this.WriteMathSPre = function (oSPre) { var oThis = this; var oSub = oSPre.getLowerIterator(); var oSup = oSPre.getUpperIterator(); var oElem = oSPre.getBase(); if (null != oSPre) { this.bs.WriteItem(c_oSer_OMathContentType.SPrePr, function () { oThis.WriteMathSPrePr(oSPre); }); } if (null != oSub) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Sub, function () { oThis.WriteMathArgNodes(oSub); }); } if (null != oSup) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Sup, function () { oThis.WriteMathArgNodes(oSup); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathSPrePr = function (oSPre) { if (null != oSPre.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oSPre); }); } }; this.WriteMathSSub = function (oSSub) { var oThis = this; var oSub = oSSub.getLowerIterator(); var oElem = oSSub.getBase(); if (null != oSSub) { this.bs.WriteItem(c_oSer_OMathContentType.SSubPr, function () { oThis.WriteMathSSubPr(oSSub); }); } if (null != oSub) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Sub, function () { oThis.WriteMathArgNodes(oSub); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathSSubPr = function (oSSub) { if (null != oSSub.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oSSub); }); } }; this.WriteMathSubSup = function (oSSubSup) { var oThis = this; var oSub = oSSubSup.getLowerIterator(); var oSup = oSSubSup.getUpperIterator(); var oElem = oSSubSup.getBase(); if (null != oSSubSup) { this.bs.WriteItem(c_oSer_OMathContentType.SSubPr, function () { oThis.WriteMathSSubSupPr(oSSubSup); }); } if (null != oSub) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Sub, function () { oThis.WriteMathArgNodes(oSub); }); } if (null != oSup) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Sup, function () { oThis.WriteMathArgNodes(oSup); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathSSubSupPr = function (oSSubSup) { if (null != props.alnScr) { this.bs.WriteItem(c_oSer_OMathBottomNodesType.AlnScr, function () { oThis.WriteMathAlnScr(props.alnScr); }); } if (null != oSSubSup.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oSSubSup); }); } }; this.WriteMathSSup = function (oSSup) { var oThis = this; var oSup = oSSup.getUpperIterator()(); var oElem = oSSup.getBase(); if (null != oSSup) { this.bs.WriteItem(c_oSer_OMathContentType.SSupPr, function () { oThis.WriteMathSSupPr(oSSup); }); } if (null != oSup) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Sup, function () { oThis.WriteMathArgNodes(oSup); }); } if (null != oElem) { this.bs.WriteItem(c_oSer_OMathArgNodesType.Element, function () { oThis.WriteMathArgNodes(oElem); }); } }; this.WriteMathSSupPr = function (oSSup) { if (null != oSSup.TxtPrp) { this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () { oThis.WriteMathCtrlPr(oSSup); }); } }; this.WriteMathStrikeBLTR = function (StrikeBLTR) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(StrikeBLTR); }; this.WriteMathStrikeH = function (StrikeH) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(StrikeH); }; this.WriteMathStrikeTLBR = function (StrikeTLBR) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(StrikeTLBR); }; this.WriteMathStrikeV = function (StrikeV) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(StrikeV); }; this.WriteMathSty = function (Sty) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(Sty); }; this.WriteMathSubHide = function (SubHide) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(SubHide); }; this.WriteMathSupHide = function (SupHide) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(SupHide); }; this.WriteMathTransp = function (Transp) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(Transp); }; this.WriteMathType = function (Type) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(Type); }; this.WriteMathVertJc = function (VertJc) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(VertJc); }; this.WriteMathZeroAsc = function (ZeroAsc) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(ZeroAsc); }; this.WriteMathZeroDesc = function (ZeroDesc) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(ZeroDesc); }; this.WriteMathZeroWid = function (ZeroWid) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(ZeroWid); }; this.WriteText = function () { if ("" != this.sCurText) { var oThis = this; this.WriteRun(function () { oThis.memory.WriteByte(c_oSerRunType.run); oThis.memory.WriteString2(oThis.sCurText.toString()); }); this.sCurText = ""; } }; this.WriteRun = function (writer) { var oThis = this; this.bs.WriteItem(c_oSerParType.Run, function () { if (null != oThis.oCur_rPr) { oThis.bs.WriteItem(c_oSerRunType.rPr, function () { oThis.brPrs.Write_rPr(oThis.oCur_rPr); }); } oThis.bs.WriteItem(c_oSerRunType.Content, function () { writer(); }); }); }; this.WriteImage = function (img) { var oThis = this; if (drawing_Inline == img.DrawingType) { this.memory.WriteByte(c_oSerImageType2.Type); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(c_oAscWrapStyle.Inline); this.memory.WriteByte(c_oSerImageType2.Extent); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteExtent(img.Extent); }); if (null != img.GraphicObj.chart) { this.memory.WriteByte(c_oSerImageType2.Chart); this.memory.WriteByte(c_oSerPropLenType.Variable); var oBinaryChartWriter = new BinaryChartWriter(this.memory); this.bs.WriteItemWithLength(function () { oBinaryChartWriter.WriteChartContent(img.GraphicObj); }); var chartSrc = img.GraphicObj.chart.img; if (null != chartSrc && "" != chartSrc) { this.memory.WriteByte(c_oSerImageType2.ChartImg); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { window.global_pptx_content_writer.WriteImageBySrc(oThis.memory, chartSrc, img.Extent.W, img.Extent.H); }); } } else { this.memory.WriteByte(c_oSerImageType2.PptxData); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { window.global_pptx_content_writer.WriteDrawing(oThis.memory, img.GraphicObj, oThis.Document, oThis.oMapCommentId, oThis.oNumIdMap, oThis.copyParams); }); } } else { this.memory.WriteByte(c_oSerImageType2.Type); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(c_oAscWrapStyle.Flow); if (null != img.behindDoc) { this.memory.WriteByte(c_oSerImageType2.BehindDoc); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(img.behindDoc); } if (null != img.Distance.L) { this.memory.WriteByte(c_oSerImageType2.DistL); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(img.Distance.L); } if (null != img.Distance.T) { this.memory.WriteByte(c_oSerImageType2.DistT); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(img.Distance.T); } if (null != img.Distance.R) { this.memory.WriteByte(c_oSerImageType2.DistR); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(img.Distance.R); } if (null != img.Distance.B) { this.memory.WriteByte(c_oSerImageType2.DistB); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(img.Distance.B); } if (null != img.RelativeHeight) { this.memory.WriteByte(c_oSerImageType2.RelativeHeight); this.memory.WriteByte(c_oSerPropLenType.Long); this.memory.WriteLong(img.RelativeHeight); } if (null != img.SimplePos.Use) { this.memory.WriteByte(c_oSerImageType2.BSimplePos); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(img.SimplePos.Use); } if (false) { var EffectExtent = null; this.memory.WriteByte(c_oSerImageType2.EffectExtent); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteEffectExtent(EffectExtent); }); } if (null != img.Extent) { this.memory.WriteByte(c_oSerImageType2.Extent); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteExtent(img.Extent); }); } if (null != img.PositionH) { this.memory.WriteByte(c_oSerImageType2.PositionH); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WritePositionHV(img.PositionH); }); } if (null != img.PositionV) { this.memory.WriteByte(c_oSerImageType2.PositionV); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WritePositionHV(img.PositionV); }); } if (null != img.SimplePos) { this.memory.WriteByte(c_oSerImageType2.SimplePos); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteSimplePos(img.SimplePos); }); } switch (img.wrappingType) { case WRAPPING_TYPE_NONE: this.memory.WriteByte(c_oSerImageType2.WrapNone); this.memory.WriteByte(c_oSerPropLenType.Null); break; case WRAPPING_TYPE_SQUARE: this.memory.WriteByte(c_oSerImageType2.WrapSquare); this.memory.WriteByte(c_oSerPropLenType.Null); break; case WRAPPING_TYPE_THROUGH: this.memory.WriteByte(c_oSerImageType2.WrapThrough); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteWrapThroughTight(img.wrappingPolygon, img.getWrapContour()); }); break; case WRAPPING_TYPE_TIGHT: this.memory.WriteByte(c_oSerImageType2.WrapTight); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteWrapThroughTight(img.wrappingPolygon, img.getWrapContour()); }); break; case WRAPPING_TYPE_TOP_AND_BOTTOM: this.memory.WriteByte(c_oSerImageType2.WrapTopAndBottom); this.memory.WriteByte(c_oSerPropLenType.Null); break; } if (null != img.GraphicObj.chart) { this.memory.WriteByte(c_oSerImageType2.Chart); this.memory.WriteByte(c_oSerPropLenType.Variable); var oBinaryChartWriter = new BinaryChartWriter(this.memory); this.bs.WriteItemWithLength(function () { oBinaryChartWriter.WriteChartContent(img.GraphicObj); }); var chartSrc = img.GraphicObj.chart.img; if (null != chartSrc && "" != chartSrc) { this.memory.WriteByte(c_oSerImageType2.ChartImg); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { window.global_pptx_content_writer.WriteImageBySrc(oThis.memory, chartSrc, img.Extent.W, img.Extent.H); }); } } else { this.memory.WriteByte(c_oSerImageType2.PptxData); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { window.global_pptx_content_writer.WriteDrawing(oThis.memory, img.GraphicObj, oThis.Document, oThis.oMapCommentId, oThis.oNumIdMap, oThis.copyParams); }); } } }; this.WriteEffectExtent = function (EffectExtent) { if (null != EffectExtent.Left) { this.memory.WriteByte(c_oSerEffectExtent.Left); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(EffectExtent.Left); } if (null != EffectExtent.Top) { this.memory.WriteByte(c_oSerEffectExtent.Top); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(EffectExtent.Top); } if (null != EffectExtent.Right) { this.memory.WriteByte(c_oSerEffectExtent.Right); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(EffectExtent.Right); } if (null != EffectExtent.Bottom) { this.memory.WriteByte(c_oSerEffectExtent.Bottom); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(EffectExtent.Bottom); } }; this.WriteExtent = function (Extent) { if (null != Extent.W) { this.memory.WriteByte(c_oSerExtent.Cx); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Extent.W); } if (null != Extent.H) { this.memory.WriteByte(c_oSerExtent.Cy); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Extent.H); } }; this.WritePositionHV = function (PositionH) { if (null != PositionH.RelativeFrom) { this.memory.WriteByte(c_oSerPosHV.RelativeFrom); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(PositionH.RelativeFrom); } if (true == PositionH.Align) { this.memory.WriteByte(c_oSerPosHV.Align); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(PositionH.Value); } else { this.memory.WriteByte(c_oSerPosHV.PosOffset); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(PositionH.Value); } }; this.WriteSimplePos = function (oSimplePos) { if (null != oSimplePos.X) { this.memory.WriteByte(c_oSerSimplePos.X); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(oSimplePos.X); } if (null != oSimplePos.Y) { this.memory.WriteByte(c_oSerSimplePos.Y); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(oSimplePos.Y); } }; this.WriteWrapThroughTight = function (wrappingPolygon, Contour) { var oThis = this; this.memory.WriteByte(c_oSerWrapThroughTight.WrapPolygon); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteWrapPolygon(wrappingPolygon, Contour); }); }; this.WriteWrapPolygon = function (wrappingPolygon, Contour) { var oThis = this; this.memory.WriteByte(c_oSerWrapPolygon.Edited); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(true); if (Contour.length > 0) { this.memory.WriteByte(c_oSerWrapPolygon.Start); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WritePolygonPoint(Contour[0]); }); if (Contour.length > 1) { this.memory.WriteByte(c_oSerWrapPolygon.ALineTo); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WriteLineTo(Contour); }); } } }; this.WriteLineTo = function (Contour) { var oThis = this; for (var i = 1, length = Contour.length; i < length; ++i) { this.memory.WriteByte(c_oSerWrapPolygon.LineTo); this.memory.WriteByte(c_oSerPropLenType.Variable); this.bs.WriteItemWithLength(function () { oThis.WritePolygonPoint(Contour[i]); }); } }; this.WritePolygonPoint = function (oPoint) { if (null != oPoint.x) { this.memory.WriteByte(c_oSerPoint2D.X); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(oPoint.x); } if (null != oPoint.y) { this.memory.WriteByte(c_oSerPoint2D.Y); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(oPoint.y); } }; this.WriteDocTable = function (table, aRowElems, nMinGrid, nMaxGrid) { var oThis = this; if (null != this.copyParams) { var sTableStyle = table.Get_TableStyle(); if (null != sTableStyle) { this.copyParams.oUsedStyleMap[sTableStyle] = 1; } } if (null != table.Pr) { this.bs.WriteItem(c_oSerDocTableType.tblPr, function () { oThis.btblPrs.WriteTbl(table); }); } if (null != table.TableGrid) { var aGrid = table.TableGrid; if (null != nMinGrid && null != nMaxGrid && 0 != nMinGrid && aGrid.length - 1 != nMaxGrid) { aGrid = aGrid.slice(nMinGrid, nMaxGrid + 1); } this.bs.WriteItem(c_oSerDocTableType.tblGrid, function () { oThis.WriteTblGrid(aGrid); }); } if (null != table.Content && table.Content.length > 0) { this.bs.WriteItem(c_oSerDocTableType.Content, function () { oThis.WriteTableContent(table.Content, aRowElems); }); } }; this.WriteTblGrid = function (grid) { var oThis = this; for (var i = 0, length = grid.length; i < length; i++) { this.memory.WriteByte(c_oSerDocTableType.tblGrid_Item); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(grid[i]); } }; this.WriteTableContent = function (Content, aRowElems) { var oThis = this; var nStart = 0; var nEnd = Content.length - 1; if (null != aRowElems && aRowElems.length > 0) { nStart = aRowElems[0].row; nEnd = aRowElems[aRowElems.length - 1].row; } for (var i = nStart; i <= nEnd; ++i) { var oRowElem = null; if (null != aRowElems) { oRowElem = aRowElems[i - nStart]; } this.bs.WriteItem(c_oSerDocTableType.Row, function () { oThis.WriteRow(Content[i], i, oRowElem); }); } }; this.WriteRow = function (Row, nRowIndex, oRowElem) { var oThis = this; if (null != Row.Pr) { var oRowPr = Row.Pr; if (null != oRowElem) { oRowPr = oRowPr.Copy(); oRowPr.WAfter = null; oRowPr.WBefore = null; if (null != oRowElem.after) { oRowPr.GridAfter = oRowElem.after; } else { oRowPr.GridAfter = null; } if (null != oRowElem.before) { oRowPr.GridBefore = oRowElem.before; } else { oRowPr.GridBefore = null; } } this.bs.WriteItem(c_oSerDocTableType.Row_Pr, function () { oThis.btblPrs.WriteRowPr(oRowPr); }); } if (null != Row.Content) { this.bs.WriteItem(c_oSerDocTableType.Row_Content, function () { oThis.WriteRowContent(Row.Content, nRowIndex, oRowElem); }); } }; this.WriteRowContent = function (Content, nRowIndex, oRowElem) { var oThis = this; var nStart = 0; var nEnd = Content.length - 1; if (null != oRowElem) { nStart = oRowElem.indexStart; nEnd = oRowElem.indexEnd; } for (var i = nStart; i <= nEnd; i++) { this.bs.WriteItem(c_oSerDocTableType.Cell, function () { oThis.WriteCell(Content[i], nRowIndex, i); }); } }; this.WriteCell = function (cell, nRowIndex, nColIndex) { var oThis = this; if (null != cell.Pr) { var vMerge = null; if (vmerge_Continue != cell.Pr.VMerge) { var row = cell.Row; var table = row.Table; var oCellInfo = row.Get_CellInfo(nColIndex); var StartGridCol = 0; if (null != oCellInfo) { StartGridCol = oCellInfo.StartGridCol; } else { var BeforeInfo = row.Get_Before(); StartGridCol = BeforeInfo.GridBefore; for (var i = 0; i < nColIndex; ++i) { var cellTemp = row.Get_Cell(i); StartGridCol += cellTemp.Get_GridSpan(); } } if (table.Internal_GetVertMergeCount(nRowIndex, StartGridCol, cell.Get_GridSpan()) > 1) { vMerge = vmerge_Restart; } } this.bs.WriteItem(c_oSerDocTableType.Cell_Pr, function () { oThis.btblPrs.WriteCellPr(cell.Pr, vMerge); }); } if (null != cell.Content) { var oInnerDocument = new BinaryDocumentTableWriter(this.memory, this.Document, this.oMapCommentId, this.oNumIdMap, this.copyParams); this.bs.WriteItem(c_oSerDocTableType.Cell_Content, function () { oInnerDocument.WriteDocumentContent(cell.Content); }); } }; this.WriteSectPr = function (cellPr) { var oThis = this; this.bs.WriteItem(c_oSerProp_secPrType.pgSz, function () { oThis.WritePageSize(); }); this.bs.WriteItem(c_oSerProp_secPrType.pgMar, function () { oThis.WritePageMargin(); }); }; this.WritePageSize = function () { var oThis = this; this.memory.WriteByte(c_oSer_pgSzType.W); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Page_Width); this.memory.WriteByte(c_oSer_pgSzType.H); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Page_Height); this.memory.WriteByte(c_oSer_pgSzType.Orientation); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(this.Document.Orientation); }; this.WritePageMargin = function () { this.memory.WriteByte(c_oSer_pgMarType.Left); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(X_Left_Margin); this.memory.WriteByte(c_oSer_pgMarType.Top); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Y_Top_Margin); this.memory.WriteByte(c_oSer_pgMarType.Right); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(X_Right_Margin); this.memory.WriteByte(c_oSer_pgMarType.Bottom); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Y_Bottom_Margin); var header = this.Document.HdrFtr.Content[0].Header; var footer = this.Document.HdrFtr.Content[0].Footer; if (header) { var item = null; if (null != header.Odd) { item = header.Odd; } else { if (null != header.Even) { item = header.Even; } else { if (null != header.First) { item = header.First; } } } if (null != item) { this.memory.WriteByte(c_oSer_pgMarType.Header); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(item.BoundY2); } } if (footer) { var item = null; if (null != footer.Odd) { item = footer.Odd; } else { if (null != footer.Even) { item = footer.Even; } else { if (null != footer.First) { item = footer.First; } } } if (null != item) { this.memory.WriteByte(c_oSer_pgMarType.Footer); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble(Page_Height - item.BoundY2); } } }; } function BinaryOtherTableWriter(memory, doc) { this.memory = memory; this.Document = doc; this.bs = new BinaryCommonWriter(this.memory); this.Write = function () { var oThis = this; this.bs.WriteItemWithLength(function () { oThis.WriteOtherContent(); }); }; this.WriteOtherContent = function () { var oThis = this; this.bs.WriteItem(c_oSerOtherTableTypes.DocxTheme, function () { window.global_pptx_content_writer.WriteTheme(oThis.memory, oThis.Document.theme); }); }; } function BinaryCommentsTableWriter(memory, doc, oMapCommentId) { this.memory = memory; this.Document = doc; this.oMapCommentId = oMapCommentId; this.bs = new BinaryCommonWriter(this.memory); this.Write = function () { var oThis = this; this.bs.WriteItemWithLength(function () { oThis.WriteComments(); }); }; this.WriteComments = function () { var oThis = this; var nIndex = 0; for (var i in this.Document.Comments.m_aComments) { var oComment = this.Document.Comments.m_aComments[i]; this.bs.WriteItem(c_oSer_CommentsType.Comment, function () { oThis.WriteComment(oComment.Data, oComment.Id, nIndex++); }); } }; this.WriteComment = function (comment, sCommentId, nFileId) { var oThis = this; if (null != sCommentId && null != nFileId) { this.oMapCommentId[sCommentId] = nFileId; this.bs.WriteItem(c_oSer_CommentsType.Id, function () { oThis.memory.WriteLong(nFileId); }); } if (null != comment.m_sUserName && "" != comment.m_sUserName) { this.memory.WriteByte(c_oSer_CommentsType.UserName); this.memory.WriteString2(comment.m_sUserName); } if (null != comment.m_sUserId && "" != comment.m_sUserId) { this.memory.WriteByte(c_oSer_CommentsType.UserId); this.memory.WriteString2(comment.m_sUserId); } if (null != comment.m_sTime && "" != comment.m_sTime) { var oDate = new Date(comment.m_sTime - 0); this.memory.WriteByte(c_oSer_CommentsType.Date); this.memory.WriteString2(this.DateToISO8601(oDate)); } if (null != comment.m_bSolved) { this.bs.WriteItem(c_oSer_CommentsType.Solved, function () { oThis.memory.WriteBool(comment.m_bSolved); }); } if (null != comment.m_sText && "" != comment.m_sText) { this.memory.WriteByte(c_oSer_CommentsType.Text); this.memory.WriteString2(comment.m_sText); } if (null != comment.m_aReplies && comment.m_aReplies.length > 0) { this.bs.WriteItem(c_oSer_CommentsType.Replies, function () { oThis.WriteReplies(comment.m_aReplies); }); } }; this.DateToISO8601 = function (d) { function pad(n) { return n < 10 ? "0" + n : n; } return d.getUTCFullYear() + "-" + pad(d.getUTCMonth() + 1) + "-" + pad(d.getUTCDate()) + "T" + pad(d.getUTCHours()) + ":" + pad(d.getUTCMinutes()) + ":" + pad(d.getUTCSeconds()) + "Z"; }; this.WriteReplies = function (aComments) { var oThis = this; var nIndex = 0; for (var i = 0, length = aComments.length; i < length; ++i) { this.bs.WriteItem(c_oSer_CommentsType.Comment, function () { oThis.WriteComment(aComments[i]); }); } }; } function BinarySettingsTableWriter(memory, doc) { this.memory = memory; this.Document = doc; this.bs = new BinaryCommonWriter(this.memory); this.Write = function () { var oThis = this; this.bs.WriteItemWithLength(function () { oThis.WriteSettings(); }); }; this.WriteSettings = function () { var oThis = this; this.bs.WriteItem(c_oSer_SettingsType.ClrSchemeMapping, function () { oThis.WriteColorSchemeMapping(); }); this.bs.WriteItem(c_oSer_SettingsType.DefaultTabStop, function () { oThis.memory.WriteDouble(Default_Tab_Stop); }); }; this.WriteMathPr = function () { var oThis = this; var oMathPr = this.Document.MathPr; if (null != oMathPr.brkBin) { this.bs.WriteItem(c_oSer_MathPrType.BrkBin, function () { oThis.WriteMathBrkBin(oMathPr.brkBin); }); } if (null != oMathPr.brkBinSub) { this.bs.WriteItem(c_oSer_MathPrType.BrkBinSub, function () { oThis.WriteMathBrkBinSub(oMathPr.brkBinSub); }); } if (null != oMathPr.defJc) { this.bs.WriteItem(c_oSer_MathPrType.DefJc, function () { oThis.WriteMathDefJc(oMathPr.defJc); }); } if (null != oMathPr.dispDef) { this.bs.WriteItem(c_oSer_MathPrType.DispDef, function () { oThis.WriteMathDispDef(oMathPr.dispDef); }); } if (null != oMathPr.interSp) { this.bs.WriteItem(c_oSer_MathPrType.InterSp, function () { oThis.WriteMathInterSp(oMathPr.interSp); }); } if (null != oMathPr.intLim) { this.bs.WriteItem(c_oSer_MathPrType.IntLim, function () { oThis.WriteMathIntLim(oMathPr.intLim); }); } if (null != oMathPr.intraSp) { this.bs.WriteItem(c_oSer_MathPrType.IntraSp, function () { oThis.WriteMathIntraSp(oMathPr.intraSp); }); } if (null != oMathPr.lMargin) { this.bs.WriteItem(c_oSer_MathPrType.LMargin, function () { oThis.WriteMathLMargin(oMathPr.lMargin); }); } if (null != oMathPr.mathFont) { this.bs.WriteItem(c_oSer_MathPrType.MathFont, function () { oThis.WriteMathMathFont(oMathPr.mathFont); }); } if (null != oMathPr.naryLim) { this.bs.WriteItem(c_oSer_MathPrType.NaryLim, function () { oThis.WriteMathNaryLim(oMathPr.naryLim); }); } if (null != oMathPr.postSp) { this.bs.WriteItem(c_oSer_MathPrType.PostSp, function () { oThis.WriteMathPostSp(oMathPr.postSp); }); } if (null != oMathPr.preSp) { this.bs.WriteItem(c_oSer_MathPrType.PreSp, function () { oThis.WriteMathPreSp(oMathPr.preSp); }); } if (null != oMathPr.rMargin) { this.bs.WriteItem(c_oSer_MathPrType.RMargin, function () { oThis.WriteMathRMargin(oMathPr.rMargin); }); } if (null != oMathPr.smallFrac) { this.bs.WriteItem(c_oSer_MathPrType.SmallFrac, function () { oThis.WriteMathSmallFrac(oMathPr.smallFrac); }); } if (null != oMathPr.wrapIndent) { this.bs.WriteItem(c_oSer_MathPrType.WrapIndent, function () { oThis.WriteMathWrapIndent(oMathPr.wrapIndent); }); } if (null != oMathPr.wrapRight) { this.bs.WriteItem(c_oSer_MathPrType.WrapRight, function () { oThis.WriteMathWrapRight(oMathPr.wrapRight); }); } }; this.WriteMathBrkBin = function (BrkBin) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(BrkBin); }; this.WriteMathBrkBinSub = function (BrkBinSub) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(BrkBinSub); }; this.WriteMathDefJc = function (DefJc) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(DefJc); }; this.WriteMathDispDef = function (DispDef) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(DispDef); }; this.WriteMathInterSp = function (InterSp) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble2(InterSp); }; this.WriteMathIntLim = function (IntLim) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(IntLim); }; this.WriteMathIntraSp = function (IntraSp) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble2(IntraSp); }; this.WriteMathLMargin = function (LMargin) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble2(LMargin); }; this.WriteMathMathFont = function (MathFont) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Variable); this.memory.WriteString2(MathFont); }; this.WriteMathNaryLim = function (NaryLim) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(NaryLim); }; this.WriteMathPostSp = function (PostSp) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble2(PostSp); }; this.WriteMathPreSp = function (PreSp) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble2(PreSp); }; this.WriteMathRMargin = function (RMargin) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble2(RMargin); }; this.WriteMathSmallFrac = function (SmallFrac) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteBool(SmallFrac); }; this.WriteMathWrapIndent = function (WrapIndent) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble2(WrapIndent); }; this.WriteMathWrapRight = function (WrapRight) { this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val); this.memory.WriteByte(c_oSerPropLenType.Double); this.memory.WriteDouble2(WrapRight); }; this.WriteColorSchemeMapping = function () { var oThis = this; for (var i in this.Document.clrSchemeMap.color_map) { var nScriptType = i - 0; var nScriptVal = this.Document.clrSchemeMap.color_map[i]; var nFileType = c_oSer_ClrSchemeMappingType.Accent1; var nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexAccent1; switch (nScriptType) { case 0: nFileType = c_oSer_ClrSchemeMappingType.Accent1; break; case 1: nFileType = c_oSer_ClrSchemeMappingType.Accent2; break; case 2: nFileType = c_oSer_ClrSchemeMappingType.Accent3; break; case 3: nFileType = c_oSer_ClrSchemeMappingType.Accent4; break; case 4: nFileType = c_oSer_ClrSchemeMappingType.Accent5; break; case 5: nFileType = c_oSer_ClrSchemeMappingType.Accent6; break; case 6: nFileType = c_oSer_ClrSchemeMappingType.Bg1; break; case 7: nFileType = c_oSer_ClrSchemeMappingType.Bg2; break; case 10: nFileType = c_oSer_ClrSchemeMappingType.FollowedHyperlink; break; case 11: nFileType = c_oSer_ClrSchemeMappingType.Hyperlink; break; case 15: nFileType = c_oSer_ClrSchemeMappingType.T1; break; case 16: nFileType = c_oSer_ClrSchemeMappingType.T2; break; } switch (nScriptVal) { case 0: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexAccent1; break; case 1: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexAccent2; break; case 2: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexAccent3; break; case 3: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexAccent4; break; case 4: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexAccent5; break; case 5: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexAccent6; break; case 8: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexDark1; break; case 9: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexDark2; break; case 10: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexFollowedHyperlink; break; case 11: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexHyperlink; break; case 12: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexLight1; break; case 13: nFileVal = EWmlColorSchemeIndex.wmlcolorschemeindexLight2; break; } this.memory.WriteByte(nFileType); this.memory.WriteByte(c_oSerPropLenType.Byte); this.memory.WriteByte(nFileVal); } }; } function BinaryFileReader(doc, openParams) { this.Document = doc; this.openParams = openParams; this.stream; this.oReadResult = { ImageMap: null, oComments: null, oCommentsPlaces: null, setting: null, numToNumClass: null, paraNumPrs: null, styles: null, paraStyles: null, tableStyles: null, lvlStyles: null, DefpPr: null, DefrPr: null, DocumentContent: null, bLastRun: null, aPostOpenStyleNumCallbacks: null }; this.getbase64DecodedData = function (szSrc) { var srcLen = szSrc.length; var nWritten = 0; var nType = 0; var index = c_oSerFormat.Signature.length; var version = ""; var dst_len = ""; while (true) { index++; var _c = szSrc.charCodeAt(index); if (_c == ";".charCodeAt(0)) { if (0 == nType) { nType = 1; continue; } else { index++; break; } } if (0 == nType) { version += String.fromCharCode(_c); } else { dst_len += String.fromCharCode(_c); } } var dstLen = parseInt(dst_len); var pointer = g_memory.Alloc(dstLen); var stream = new FT_Stream2(pointer.data, dstLen); stream.obj = pointer.obj; var dstPx = stream.data; if (window.chrome) { while (index < srcLen) { var dwCurr = 0; var i; var nBits = 0; for (i = 0; i < 4; i++) { if (index >= srcLen) { break; } var nCh = DecodeBase64Char(szSrc.charCodeAt(index++)); if (nCh == -1) { i--; continue; } dwCurr <<= 6; dwCurr |= nCh; nBits += 6; } dwCurr <<= 24 - nBits; for (i = 0; i < nBits / 8; i++) { dstPx[nWritten++] = ((dwCurr & 16711680) >>> 16); dwCurr <<= 8; } } } else { var p = b64_decode; while (index < srcLen) { var dwCurr = 0; var i; var nBits = 0; for (i = 0; i < 4; i++) { if (index >= srcLen) { break; } var nCh = p[szSrc.charCodeAt(index++)]; if (nCh == undefined) { i--; continue; } dwCurr <<= 6; dwCurr |= nCh; nBits += 6; } dwCurr <<= 24 - nBits; for (i = 0; i < nBits / 8; i++) { dstPx[nWritten++] = ((dwCurr & 16711680) >>> 16); dwCurr <<= 8; } } } if (version.length > 1) { var nTempVersion = version.substring(1) - 0; if (nTempVersion) { g_nCurFileVersion = nTempVersion; } } return stream; }; this.Read = function (data) { try { this.stream = this.getbase64DecodedData(data); this.PreLoadPrepare(); this.ReadMainTable(); this.PostLoadPrepare(); } catch(e) { if (e.message == g_sErrorCharCountMessage) { return false; } else { throw e; } } return true; }; this.PreLoadPrepare = function () { var styles = this.Document.Styles.Style; var stDefault = this.Document.Styles.Default; stDefault.Numbering = null; stDefault.Paragraph = null; stDefault.Table = null; if (null != stDefault.TableGrid) { delete styles[stDefault.TableGrid]; stDefault.TableGrid = null; } }; this.ReadMainTable = function () { this.oReadResult.ImageMap = {}; this.oReadResult.oComments = {}; this.oReadResult.oCommentsPlaces = {}; this.oReadResult.setting = { titlePg: false, EvenAndOddHeaders: false }; this.oReadResult.numToNumClass = {}; this.oReadResult.paraNumPrs = []; this.oReadResult.styles = []; this.oReadResult.paraStyles = []; this.oReadResult.tableStyles = []; this.oReadResult.lvlStyles = []; this.oReadResult.DocumentContent = []; this.oReadResult.bLastRun = null; this.oReadResult.aPostOpenStyleNumCallbacks = []; var res = c_oSerConstants.ReadOk; res = this.stream.EnterFrame(1); if (c_oSerConstants.ReadOk != res) { return res; } var mtLen = this.stream.GetUChar(); var aSeekTable = new Array(); var nOtherTableSeek = -1; var nNumberingTableSeek = -1; var nCommentTableSeek = -1; var nSettingTableSeek = -1; for (var i = 0; i < mtLen; ++i) { res = this.stream.EnterFrame(5); if (c_oSerConstants.ReadOk != res) { return res; } var mtiType = this.stream.GetUChar(); var mtiOffBits = this.stream.GetULongLE(); if (c_oSerTableTypes.Other == mtiType) { nOtherTableSeek = mtiOffBits; } else { if (c_oSerTableTypes.Numbering == mtiType) { nNumberingTableSeek = mtiOffBits; } else { if (c_oSerTableTypes.Comments == mtiType) { nCommentTableSeek = mtiOffBits; } else { if (c_oSerTableTypes.Settings == mtiType) { nSettingTableSeek = mtiOffBits; } else { aSeekTable.push({ type: mtiType, offset: mtiOffBits }); } } } } } if (-1 != nOtherTableSeek) { res = this.stream.Seek(nOtherTableSeek); if (c_oSerConstants.ReadOk != res) { return res; } res = (new Binary_OtherTableReader(this.Document, this.oReadResult, this.stream)).Read(); if (c_oSerConstants.ReadOk != res) { return res; } } if (-1 != nCommentTableSeek) { res = this.stream.Seek(nCommentTableSeek); if (c_oSerConstants.ReadOk != res) { return res; } res = (new Binary_CommentsTableReader(this.Document, this.oReadResult, this.stream, this.oReadResult.oComments)).Read(); if (c_oSerConstants.ReadOk != res) { return res; } } if (-1 != nSettingTableSeek) { res = this.stream.Seek(nSettingTableSeek); if (c_oSerConstants.ReadOk != res) { return res; } res = (new Binary_SettingsTableReader(this.Document, this.oReadResult, this.stream)).Read(); if (c_oSerConstants.ReadOk != res) { return res; } } if (-1 != nNumberingTableSeek) { res = this.stream.Seek(nNumberingTableSeek); if (c_oSerConstants.ReadOk != res) { return res; } res = (new Binary_NumberingTableReader(this.Document, this.oReadResult, this.stream)).Read(); if (c_oSerConstants.ReadOk != res) { return res; } } var oBinary_DocumentTableReader = new Binary_DocumentTableReader(this.Document, this.oReadResult, this.openParams, this.stream, true, this.oReadResult.oCommentsPlaces); for (var i = 0, length = aSeekTable.length; i < length; ++i) { var item = aSeekTable[i]; var mtiType = item.type; var mtiOffBits = item.offset; res = this.stream.Seek(mtiOffBits); if (c_oSerConstants.ReadOk != res) { return res; } switch (mtiType) { case c_oSerTableTypes.Signature: break; case c_oSerTableTypes.Info: break; case c_oSerTableTypes.Style: res = (new BinaryStyleTableReader(this.Document, this.oReadResult, this.stream)).Read(); break; case c_oSerTableTypes.Document: res = oBinary_DocumentTableReader.ReadAsTable(this.oReadResult.DocumentContent); break; case c_oSerTableTypes.HdrFtr: res = (new Binary_HdrFtrTableReader(this.Document, this.oReadResult, this.openParams, this.stream)).Read(); break; } if (c_oSerConstants.ReadOk != res) { return res; } } return res; }; this.PostLoadPrepare = function (setting) { for (var i in this.oReadResult.numToNumClass) { var oNumClass = this.oReadResult.numToNumClass[i]; this.Document.Numbering.Add_AbstractNum(oNumClass); } for (var i = 0, length = this.oReadResult.paraNumPrs.length; i < length; ++i) { var numPr = this.oReadResult.paraNumPrs[i]; var oNumClass = this.oReadResult.numToNumClass[numPr.NumId]; if (null != oNumClass) { numPr.NumId = oNumClass.Get_Id(); } else { numPr.NumId = 0; } } var styles = this.Document.Styles.Style; var stDefault = this.Document.Styles.Default; var aStartDocStylesNames = {}; for (var stId in styles) { var style = styles[stId]; if (style && style.Name) { aStartDocStylesNames[style.Name.toLowerCase().replace(/\s/g, "")] = style; } } var oIdRenameMap = {}; for (var i in this.oReadResult.styles) { var elem = this.oReadResult.styles[i]; var oNewStyle = elem.style; var oNewId = elem.param; if (g_nCurFileVersion < 2) { oNewStyle.qFormat = true; } var sNewStyleName = oNewStyle.Name.toLowerCase().replace(/\s/g, ""); var oStartDocStyle = aStartDocStylesNames[sNewStyleName]; if (oStartDocStyle) { var stId = oStartDocStyle.Get_Id(); oNewStyle.Name = oStartDocStyle.Name; oIdRenameMap[stId] = { id: oNewId.id, def: oNewId.def, type: oNewStyle.Type, newName: sNewStyleName }; delete styles[stId]; } var oCollisionStyle = styles[oNewId.id]; if (oCollisionStyle) { var sOldId = oCollisionStyle.Get_Id(); var nCounter = 1; var sNewId = sOldId + "_" + nCounter; while (null != styles[sNewId] || null != this.oReadResult.styles[sNewId]) { nCounter++; sNewId = sOldId + "_" + nCounter; } var oNewId = { id: sNewId, def: false, type: oCollisionStyle.Type, newName: sNewStyleName }; oIdRenameMap[sOldId] = oNewId; if (stDefault.Numbering == sOldId || stDefault.Paragraph == sOldId || stDefault.Table == sOldId) { oNewId.def = true; } oCollisionStyle.Set_Id(sNewId); delete styles[sOldId]; styles[sNewId] = oCollisionStyle; } } for (var sOldId in oIdRenameMap) { var oNewId = oIdRenameMap[sOldId]; var sNewStyleName = oNewId.newName; var stId = sOldId; for (var stId2 in styles) { var stObj2 = styles[stId2]; if (stObj2.BasedOn == stId) { stObj2.BasedOn = oNewId.id; } if (stObj2.Next == stId) { stObj2.Next = oNewId.id; } } if (stDefault.Paragraph == stId) { stDefault.Paragraph = oNewId.id; } if (stDefault.Numbering == stId) { stDefault.Numbering = oNewId.id; } if (stDefault.Table == stId) { stDefault.Table = oNewId.id; } for (var j = 0, length2 = stDefault.Headings.length; j < length2; ++j) { var sHeading = stDefault.Headings[j]; if (sHeading == stId) { stDefault.Headings[j] = oNewId.id; } } if (stDefault.ParaList == stId) { stDefault.ParaList = oNewId.id; } if (stDefault.Header == stId || "header" == sNewStyleName) { stDefault.Header = oNewId.id; } if (stDefault.Footer == stId || "footer" == sNewStyleName) { stDefault.Footer = oNewId.id; } if (stDefault.Hyperlink == stId || "hyperlink" == sNewStyleName) { stDefault.Hyperlink = oNewId.id; } if (true == oNewId.def) { switch (oNewId.type) { case styletype_Character: break; case styletype_Numbering: stDefault.Numbering = oNewId.id; break; case styletype_Paragraph: stDefault.Paragraph = oNewId.id; break; case styletype_Table: stDefault.Table = oNewId.id; break; } } } for (var i in this.oReadResult.styles) { var elem = this.oReadResult.styles[i]; var oNewStyle = elem.style; var oNewId = elem.param; styles[oNewId.id] = oNewStyle; } var oStyleTypes = { par: 1, table: 2, lvl: 3 }; var fParseStyle = function (aStyles, oDocumentStyles, nStyleType) { for (var i = 0, length = aStyles.length; i < length; ++i) { var elem = aStyles[i]; if (null != oDocumentStyles[elem.style]) { if (oStyleTypes.par == nStyleType) { elem.pPr.PStyle = elem.style; } else { if (oStyleTypes.table == nStyleType) { elem.pPr.TableStyle = elem.style; } else { elem.pPr.PStyle = elem.style; } } } } }; fParseStyle(this.oReadResult.paraStyles, styles, oStyleTypes.par); fParseStyle(this.oReadResult.tableStyles, styles, oStyleTypes.table); fParseStyle(this.oReadResult.lvlStyles, styles, oStyleTypes.lvl); var nStId = styles.length; if (null == stDefault.Numbering) { var oNewStyle = new CStyle("GenStyleDefNum", null, null, styletype_Numbering); stDefault.Numbering = nStId.toString(); styles[nStId] = oNewStyle; nStId++; } if (null == stDefault.Paragraph) { var oNewStyle = new CStyle("GenStyleDefPar", null, null, styletype_Paragraph); stDefault.Paragraph = nStId.toString(); styles[nStId] = oNewStyle; nStId++; } if (null == stDefault.Table) { var oNewStyle = new CStyle("GenStyleDefTable", null, null, styletype_Table); stDefault.Table = nStId.toString(); styles[nStId] = oNewStyle; nStId++; } if (null == stDefault.TableGrid) { var oNewStyle = new CStyle("GenStyleDefTableGrid", null, null, styletype_Table); oNewStyle.Create_TableGrid(); oNewStyle.BasedOn = stDefault.Table; stDefault.TableGrid = nStId.toString(); styles[nStId] = oNewStyle; nStId++; } this.Document.Styles.Id = nStId; if (null != this.oReadResult.DefpPr) { this.Document.Styles.Default.ParaPr.Merge(this.oReadResult.DefpPr); } if (null != this.oReadResult.DefrPr) { this.Document.Styles.Default.TextPr.Merge(this.oReadResult.DefrPr); } var setting = this.oReadResult.setting; var oHdrFtr = this.Document.HdrFtr.Content[0]; if (null != oHdrFtr.Header) { var Header = oHdrFtr.Header; if (null != Header.Odd) { if (false == setting.titlePg && null == Header.First) { Header.First = Header.Odd; } if (false == setting.EvenAndOddHeaders && null == Header.Even) { Header.Even = Header.Odd; } } } if (null != oHdrFtr.Footer) { var Footer = oHdrFtr.Footer; if (null != Footer.Odd) { if (false == setting.titlePg && null == Footer.First) { Footer.First = Footer.Odd; } if (false == setting.EvenAndOddHeaders && null == Footer.Even) { Footer.Even = Footer.Odd; } } } var fInitCommentData = function (comment) { var oCommentObj = new CCommentData(); if (null != comment.UserName) { oCommentObj.m_sUserName = comment.UserName; } if (null != comment.UserId) { oCommentObj.m_sUserId = comment.UserId; } if (null != comment.Date) { oCommentObj.m_sTime = comment.Date; } if (null != comment.Text) { oCommentObj.m_sText = comment.Text; } if (null != comment.Solved) { oCommentObj.m_bSolved = comment.Solved; } if (null != comment.Replies) { for (var i = 0, length = comment.Replies.length; i < length; ++i) { oCommentObj.Add_Reply(fInitCommentData(comment.Replies[i])); } } return oCommentObj; }; var oCommentsNewId = new Object(); for (var i in this.oReadResult.oComments) { var oOldComment = this.oReadResult.oComments[i]; var oNewComment = new CComment(this.Document.Comments, fInitCommentData(oOldComment)); this.Document.Comments.Add(oNewComment); oCommentsNewId[oOldComment.Id] = oNewComment; } for (var i in this.oReadResult.oCommentsPlaces) { var item = this.oReadResult.oCommentsPlaces[i]; if ((null != item.Start && null != item.End) || (null != item.Ref && null == item.Start && null == item.End)) { var oStart = null; var oEnd = null; var bRef = false; if (null != item.Start && null != item.End) { oStart = item.Start; oEnd = item.End; } else { if (null != item.Ref) { bRef = true; oStart = oEnd = item.Ref; } } if (null != oStart || null != oEnd) { var nId = oStart.Id; var oCommentObj = oCommentsNewId[nId]; if (oCommentObj) { if (null != item.QuoteText) { oCommentObj.Data.m_sQuoteText = item.QuoteText; } var fInsert = function (bStart, bRef, oCommentPosition) { var index = 0; var oParent = oCommentPosition.oParent; if (null != oParent) { if (bRef) { if (bStart) { index = 0; } else { index = oParent.Content.length - 1; } } else { if (oCommentPosition.oAfter) { for (var j = 0, length2 = oParent.Content.length; j < length2; ++j) { if (oParent.Content[j] == oCommentPosition.oAfter) { index = j + 1; break; } } } } var oParaCommentElem; if (bStart) { oParaCommentElem = new ParaCommentStart(oCommentObj.Get_Id()); } else { oParaCommentElem = new ParaCommentEnd(oCommentObj.Get_Id()); } if (index < oParent.Content.length - 1) { oParent.Content.splice(index, 0, oParaCommentElem); } else { oParent.Content.push(oParaCommentElem); } } }; fInsert(false, bRef, oEnd); fInsert(true, bRef, oStart); } } } } for (var i in oCommentsNewId) { var oNewComment = oCommentsNewId[i]; this.Document.DrawingDocument.m_oWordControl.m_oApi.sync_AddComment(oNewComment.Id, oNewComment.Data); } this.Document.Content = this.oReadResult.DocumentContent; if (this.Document.Content.length == 0) { var oNewParagraph = new Paragraph(this.Document.DrawingDocument, this.Document, 0, 50, 50, X_Right_Field, Y_Bottom_Field); this.Document.Content.push(oNewParagraph); } }; } function BinaryStyleTableReader(doc, oReadResult, stream) { this.Document = doc; this.oReadResult = oReadResult; this.stream = stream; this.bcr = new Binary_CommonReader(this.stream); this.brPrr = new Binary_rPrReader(this.Document, this.stream); this.bpPrr = new Binary_pPrReader(this.Document, this.oReadResult, this.stream); this.btblPrr = new Binary_tblPrReader(this.Document, this.oReadResult, this.stream); this.Read = function () { var oThis = this; return this.bcr.ReadTable(function (t, l) { return oThis.ReadStyleTableContent(t, l); }); }; this.ReadStyleTableContent = function (type, length) { var res = c_oSerConstants.ReadOk; if (c_oSer_st.Styles == type) { var oThis = this; res = this.bcr.Read1(length, function (t, l) { return oThis.ReadStyle(t, l); }); } else { if (c_oSer_st.DefpPr == type) { var ParaPr = new CParaPr(); res = this.bpPrr.Read(length, ParaPr); this.oReadResult.DefpPr = ParaPr; } else { if (c_oSer_st.DefrPr == type) { var TextPr = new CTextPr(); res = this.brPrr.Read(length, TextPr); this.oReadResult.DefrPr = TextPr; } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadStyle = function (type, length) { var res = c_oSerConstants.ReadOk; if (c_oSer_sts.Style == type) { var oThis = this; var oNewStyle = new CStyle(null, null, null, null); var oNewId = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadStyleContent(t, l, oNewStyle, oNewId); }); if (c_oSerConstants.ReadOk != res) { return res; } if (null != oNewId.id) { this.oReadResult.styles[oNewId.id] = { style: oNewStyle, param: oNewId }; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadStyleContent = function (type, length, style, oId) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_sts.Style_Name == type) { style.Set_Name(this.stream.GetString2LE(length)); } else { if (c_oSer_sts.Style_Id == type) { oId.id = this.stream.GetString2LE(length); } else { if (c_oSer_sts.Style_Type == type) { var nStyleType = styletype_Paragraph; switch (this.stream.GetUChar()) { case c_oSer_StyleType.Character: nStyleType = styletype_Character; break; case c_oSer_StyleType.Numbering: nStyleType = styletype_Numbering; break; case c_oSer_StyleType.Paragraph: nStyleType = styletype_Paragraph; break; case c_oSer_StyleType.Table: nStyleType = styletype_Table; break; } style.Set_Type(nStyleType); } else { if (c_oSer_sts.Style_Default == type) { oId.def = this.stream.GetBool(); } else { if (c_oSer_sts.Style_BasedOn == type) { style.Set_BasedOn(this.stream.GetString2LE(length)); } else { if (c_oSer_sts.Style_Next == type) { style.Set_Next(this.stream.GetString2LE(length)); } else { if (c_oSer_sts.Style_qFormat == type) { style.Set_QFormat(this.stream.GetBool()); } else { if (c_oSer_sts.Style_uiPriority == type) { style.Set_UiPriority(this.stream.GetULongLE()); } else { if (c_oSer_sts.Style_hidden == type) { style.Set_Hidden(this.stream.GetBool()); } else { if (c_oSer_sts.Style_semiHidden == type) { style.Set_SemiHidden(this.stream.GetBool()); } else { if (c_oSer_sts.Style_unhideWhenUsed == type) { style.Set_UnhideWhenUsed(this.stream.GetBool()); } else { if (c_oSer_sts.Style_TextPr == type) { var oNewTextPr = new CTextPr(); res = this.brPrr.Read(length, oNewTextPr); style.Set_TextPr(oNewTextPr); } else { if (c_oSer_sts.Style_ParaPr == type) { var oNewParaPr = new CParaPr(); res = this.bpPrr.Read(length, oNewParaPr, null); style.ParaPr = oNewParaPr; this.oReadResult.aPostOpenStyleNumCallbacks.push(function () { style.Set_ParaPr(oNewParaPr); }); } else { if (c_oSer_sts.Style_TablePr == type) { var oNewTablePr = new CTablePr(); res = this.bcr.Read1(length, function (t, l) { return oThis.btblPrr.Read_tblPr(t, l, oNewTablePr); }); style.Set_TablePr(oNewTablePr); } else { if (c_oSer_sts.Style_RowPr == type) { var oNewTableRowPr = new CTableRowPr(); res = this.bcr.Read2(length, function (t, l) { return oThis.btblPrr.Read_RowPr(t, l, oNewTableRowPr); }); style.Set_TableRowPr(oNewTableRowPr); } else { if (c_oSer_sts.Style_CellPr == type) { var oNewTableCellPr = new CTableCellPr(); res = this.bcr.Read2(length, function (t, l) { return oThis.btblPrr.Read_CellPr(t, l, oNewTableCellPr); }); style.Set_TableRowPr(oNewTableCellPr); } else { if (c_oSer_sts.Style_TblStylePr == type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadTblStylePr(t, l, style); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } } } } } } } } } } return res; }; this.ReadTblStylePr = function (type, length, style) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_tblStylePrType.TblStylePr == type) { var oRes = { nType: null }; var oNewTableStylePr = new CTableStylePr(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadTblStyleProperty(t, l, oNewTableStylePr, oRes); }); if (null != oRes.nType) { switch (oRes.nType) { case ETblStyleOverrideType.tblstyleoverridetypeBand1Horz: style.TableBand1Horz = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeBand1Vert: style.TableBand1Vert = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeBand2Horz: style.TableBand2Horz = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeBand2Vert: style.TableBand2Vert = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeFirstCol: style.TableFirstCol = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeFirstRow: style.TableFirstRow = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeLastCol: style.TableLastCol = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeLastRow: style.TableLastRow = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeNeCell: style.TableTLCell = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeNwCell: style.TableTRCell = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeSeCell: style.TableBLCell = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeSwCell: style.TableBRCell = oNewTableStylePr; break; case ETblStyleOverrideType.tblstyleoverridetypeWholeTable: style.TableWholeTable = oNewTableStylePr; break; } } this.oReadResult.aPostOpenStyleNumCallbacks.push(function () { if (null != oRes.nType) { switch (oRes.nType) { case ETblStyleOverrideType.tblstyleoverridetypeBand1Horz: style.Set_TableBand1Horz(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeBand1Vert: style.Set_TableBand1Vert(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeBand2Horz: style.Set_TableBand2Horz(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeBand2Vert: style.Set_TableBand2Vert(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeFirstCol: style.Set_TableFirstCol(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeFirstRow: style.Set_TableFirstRow(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeLastCol: style.Set_TableLastCol(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeLastRow: style.Set_TableLastRow(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeNeCell: style.Set_TableTLCell(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeNwCell: style.Set_TableTRCell(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeSeCell: style.Set_TableBLCell(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeSwCell: style.Set_TableBRCell(oNewTableStylePr); break; case ETblStyleOverrideType.tblstyleoverridetypeWholeTable: style.Set_TableWholeTable(oNewTableStylePr); break; } } }); if (c_oSerConstants.ReadOk != res) { return res; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadTblStyleProperty = function (type, length, oNewTableStylePr, oRes) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_tblStylePrType.Type == type) { oRes.nType = this.stream.GetUChar(); } else { if (c_oSerProp_tblStylePrType.RunPr == type) { res = this.brPrr.Read(length, oNewTableStylePr.TextPr); } else { if (c_oSerProp_tblStylePrType.ParPr == type) { res = this.bpPrr.Read(length, oNewTableStylePr.ParaPr, null); } else { if (c_oSerProp_tblStylePrType.TblPr == type) { res = this.bcr.Read1(length, function (t, l) { return oThis.btblPrr.Read_tblPr(t, l, oNewTableStylePr.TablePr); }); } else { if (c_oSerProp_tblStylePrType.TrPr == type) { res = this.bcr.Read2(length, function (t, l) { return oThis.btblPrr.Read_RowPr(t, l, oNewTableStylePr.TableRowPr); }); } else { if (c_oSerProp_tblStylePrType.TcPr == type) { res = this.bcr.Read2(length, function (t, l) { return oThis.btblPrr.Read_CellPr(t, l, oNewTableStylePr.TableCellPr); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } return res; }; } function Binary_pPrReader(doc, oReadResult, stream) { this.Document = doc; this.oReadResult = oReadResult; this.stream = stream; this.pPr; this.paragraph; this.bcr = new Binary_CommonReader(this.stream); this.brPrr = new Binary_rPrReader(this.Document, this.stream); this.Read = function (stLen, pPr, par) { this.pPr = pPr; this.paragraph = par; var oThis = this; return this.bcr.Read2(stLen, function (type, length) { return oThis.ReadContent(type, length); }); }; this.ReadContent = function (type, length) { var res = c_oSerConstants.ReadOk; var oThis = this; var pPr = this.pPr; switch (type) { case c_oSerProp_pPrType.contextualSpacing: pPr.ContextualSpacing = this.stream.GetBool(); break; case c_oSerProp_pPrType.Ind: res = this.bcr.Read2(length, function (t, l) { return oThis.ReadInd(t, l, pPr.Ind); }); break; case c_oSerProp_pPrType.Jc: pPr.Jc = this.stream.GetUChar(); break; case c_oSerProp_pPrType.KeepLines: pPr.KeepLines = this.stream.GetBool(); break; case c_oSerProp_pPrType.KeepNext: pPr.KeepNext = this.stream.GetBool(); break; case c_oSerProp_pPrType.PageBreakBefore: pPr.PageBreakBefore = this.stream.GetBool(); break; case c_oSerProp_pPrType.Spacing: res = this.bcr.Read2(length, function (t, l) { return oThis.ReadSpacing(t, l, pPr.Spacing); }); break; case c_oSerProp_pPrType.Shd: pPr.Shd = new CDocumentShd(); res = this.bcr.Read2(length, function (t, l) { return oThis.bcr.ReadShd(t, l, pPr.Shd); }); break; case c_oSerProp_pPrType.WidowControl: pPr.WidowControl = this.stream.GetBool(); break; case c_oSerProp_pPrType.Tab: pPr.Tabs = new CParaTabs(); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadTabs(t, l, pPr.Tabs); }); break; case c_oSerProp_pPrType.ParaStyle: var ParaStyle = this.stream.GetString2LE(length); this.oReadResult.paraStyles.push({ pPr: pPr, style: ParaStyle }); break; case c_oSerProp_pPrType.numPr: var numPr = new CNumPr(); numPr.NumId = undefined; numPr.Lvl = undefined; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadNumPr(t, l, numPr); }); if (null != numPr.NumId || null != numPr.Lvl) { if (null != numPr.NumId) { this.oReadResult.paraNumPrs.push(numPr); } pPr.NumPr = numPr; } break; case c_oSerProp_pPrType.pBdr: res = this.bcr.Read1(length, function (t, l) { return oThis.ReadBorders(t, l, pPr.Brd); }); break; case c_oSerProp_pPrType.pPr_rPr: if (null != this.paragraph) { var oNewParaTextPr = new CTextPr(); res = this.brPrr.Read(length, oNewParaTextPr); this.paragraph.TextPr.Apply_TextPr(oNewParaTextPr); } else { res = c_oSerConstants.ReadUnknown; } break; case c_oSerProp_pPrType.FramePr: pPr.FramePr = new CFramePr(); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadFramePr(t, l, pPr.FramePr); }); break; default: res = c_oSerConstants.ReadUnknown; break; } return res; }; this.ReadBorder = function (type, length, Border) { var res = c_oSerConstants.ReadOk; if (c_oSerBorderType.Color === type) { Border.Color = this.bcr.ReadColor(); } else { if (c_oSerBorderType.Space === type) { Border.Space = this.bcr.ReadDouble(); } else { if (c_oSerBorderType.Size === type) { Border.Size = this.bcr.ReadDouble(); } else { if (c_oSerBorderType.Value === type) { Border.Value = this.stream.GetUChar(); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.NormalizeBorder = function (border) { if (null == border.Color) { border.Color = new CDocumentColor(0, 0, 0); } else { border.Color = new CDocumentColor(border.Color.r, border.Color.g, border.Color.b); } if (null == border.Space) { border.Space = 0; } if (null == border.Size) { border.Size = 0.5 * g_dKoef_pt_to_mm; } if (null == border.Value) { border.Value = border_None; } return border; }; this.ReadBorders = function (type, length, Borders) { var res = c_oSerConstants.ReadOk; var oThis = this; var oNewBorber = new CDocumentBorder(); if (c_oSerBordersType.left === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadBorder(t, l, oNewBorber); }); if (null != oNewBorber.Value) { Borders.Left = this.NormalizeBorder(oNewBorber); } } else { if (c_oSerBordersType.top === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadBorder(t, l, oNewBorber); }); if (null != oNewBorber.Value) { Borders.Top = this.NormalizeBorder(oNewBorber); } } else { if (c_oSerBordersType.right === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadBorder(t, l, oNewBorber); }); if (null != oNewBorber.Value) { Borders.Right = this.NormalizeBorder(oNewBorber); } } else { if (c_oSerBordersType.bottom === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadBorder(t, l, oNewBorber); }); if (null != oNewBorber.Value) { Borders.Bottom = this.NormalizeBorder(oNewBorber); } } else { if (c_oSerBordersType.insideV === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadBorder(t, l, oNewBorber); }); if (null != oNewBorber.Value) { Borders.InsideV = this.NormalizeBorder(oNewBorber); } } else { if (c_oSerBordersType.insideH === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadBorder(t, l, oNewBorber); }); if (null != oNewBorber.Value) { Borders.InsideH = this.NormalizeBorder(oNewBorber); } } else { if (c_oSerBordersType.between === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadBorder(t, l, oNewBorber); }); if (null != oNewBorber.Value) { Borders.Between = this.NormalizeBorder(oNewBorber); } } else { res = c_oSerConstants.ReadUnknown; } } } } } } } return res; }; this.ReadInd = function (type, length, Ind) { var res = c_oSerConstants.ReadOk; switch (type) { case c_oSerProp_pPrType.Ind_Left: Ind.Left = this.bcr.ReadDouble(); break; case c_oSerProp_pPrType.Ind_Right: Ind.Right = this.bcr.ReadDouble(); break; case c_oSerProp_pPrType.Ind_FirstLine: Ind.FirstLine = this.bcr.ReadDouble(); break; default: res = c_oSerConstants.ReadUnknown; break; } return res; }; this.ReadSpacing = function (type, length, Spacing) { var res = c_oSerConstants.ReadOk; switch (type) { case c_oSerProp_pPrType.Spacing_Line: Spacing.Line = this.bcr.ReadDouble(); break; case c_oSerProp_pPrType.Spacing_LineRule: Spacing.LineRule = this.stream.GetUChar(); break; case c_oSerProp_pPrType.Spacing_Before: Spacing.Before = this.bcr.ReadDouble(); break; case c_oSerProp_pPrType.Spacing_After: Spacing.After = this.bcr.ReadDouble(); break; case c_oSerProp_pPrType.Spacing_BeforeAuto: Spacing.BeforeAutoSpacing = (this.stream.GetUChar() != 0); break; case c_oSerProp_pPrType.Spacing_AfterAuto: Spacing.AfterAutoSpacing = (this.stream.GetUChar() != 0); break; default: res = c_oSerConstants.ReadUnknown; break; } return res; }; this.ReadTabs = function (type, length, Tabs) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_pPrType.Tab_Item == type) { var oNewTab = new CParaTab(); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadTabItem(t, l, oNewTab); }); if (null != oNewTab.Pos && null != oNewTab.Value) { Tabs.Add(oNewTab); } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadTabItem = function (type, length, tab) { var res = c_oSerConstants.ReadOk; if (c_oSerProp_pPrType.Tab_Item_Val == type) { switch (this.stream.GetUChar()) { case g_tabtype_right: tab.Value = tab_Right; break; case g_tabtype_center: tab.Value = tab_Center; break; case g_tabtype_clear: tab.Value = tab_Clear; break; default: tab.Value = tab_Left; } } else { if (c_oSerProp_pPrType.Tab_Item_Pos == type) { tab.Pos = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadNumPr = function (type, length, numPr) { var res = c_oSerConstants.ReadOk; if (c_oSerProp_pPrType.numPr_lvl == type) { numPr.Lvl = this.stream.GetULongLE(); } else { if (c_oSerProp_pPrType.numPr_id == type) { numPr.NumId = this.stream.GetULongLE(); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadFramePr = function (type, length, oFramePr) { var res = c_oSerConstants.ReadOk; if (c_oSer_FramePrType.DropCap == type) { oFramePr.DropCap = this.stream.GetUChar(); } else { if (c_oSer_FramePrType.H == type) { oFramePr.H = g_dKoef_twips_to_mm * this.stream.GetULongLE(); } else { if (c_oSer_FramePrType.HAnchor == type) { oFramePr.HAnchor = this.stream.GetUChar(); } else { if (c_oSer_FramePrType.HRule == type) { oFramePr.HRule = this.stream.GetUChar(); } else { if (c_oSer_FramePrType.HSpace == type) { oFramePr.HSpace = g_dKoef_twips_to_mm * this.stream.GetULongLE(); } else { if (c_oSer_FramePrType.Lines == type) { oFramePr.Lines = this.stream.GetULongLE(); } else { if (c_oSer_FramePrType.VAnchor == type) { oFramePr.VAnchor = this.stream.GetUChar(); } else { if (c_oSer_FramePrType.VSpace == type) { oFramePr.VSpace = g_dKoef_twips_to_mm * this.stream.GetULongLE(); } else { if (c_oSer_FramePrType.W == type) { oFramePr.W = g_dKoef_twips_to_mm * this.stream.GetULongLE(); } else { if (c_oSer_FramePrType.Wrap == type) { oFramePr.Wrap = this.stream.GetUChar(); } else { if (c_oSer_FramePrType.X == type) { oFramePr.X = g_dKoef_twips_to_mm * this.stream.GetULongLE(); } else { if (c_oSer_FramePrType.XAlign == type) { oFramePr.XAlign = this.stream.GetUChar(); } else { if (c_oSer_FramePrType.Y == type) { oFramePr.Y = g_dKoef_twips_to_mm * this.stream.GetULongLE(); } else { if (c_oSer_FramePrType.YAlign == type) { oFramePr.YAlign = this.stream.GetUChar(); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } } } } } } } return res; }; } function Binary_rPrReader(doc, stream) { this.Document = doc; this.stream = stream; this.rPr; this.bcr = new Binary_CommonReader(this.stream); this.Read = function (stLen, rPr) { this.rPr = rPr; var oThis = this; var res = c_oSerConstants.ReadOk; res = this.bcr.Read2(stLen, function (type, length) { return oThis.ReadContent(type, length); }); return res; }; this.ReadContent = function (type, length) { var res = c_oSerConstants.ReadOk; var rPr = this.rPr; switch (type) { case c_oSerProp_rPrType.Bold: rPr.Bold = (this.stream.GetUChar() != 0); break; case c_oSerProp_rPrType.Italic: rPr.Italic = (this.stream.GetUChar() != 0); break; case c_oSerProp_rPrType.Underline: rPr.Underline = (this.stream.GetUChar() != 0); break; case c_oSerProp_rPrType.Strikeout: rPr.Strikeout = (this.stream.GetUChar() != 0); break; case c_oSerProp_rPrType.FontAscii: if (undefined === rPr.RFonts) { rPr.RFonts = new Object(); } rPr.RFonts.Ascii = { Name: this.stream.GetString2LE(length), Index: -1 }; break; case c_oSerProp_rPrType.FontHAnsi: if (undefined === rPr.RFonts) { rPr.RFonts = new Object(); } rPr.RFonts.HAnsi = { Name: this.stream.GetString2LE(length), Index: -1 }; break; case c_oSerProp_rPrType.FontAE: if (undefined === rPr.RFonts) { rPr.RFonts = new Object(); } rPr.RFonts.EastAsia = { Name: this.stream.GetString2LE(length), Index: -1 }; break; case c_oSerProp_rPrType.FontCS: if (undefined === rPr.RFonts) { rPr.RFonts = new Object(); } rPr.RFonts.CS = { Name: this.stream.GetString2LE(length), Index: -1 }; break; case c_oSerProp_rPrType.FontSize: rPr.FontSize = this.stream.GetULongLE() / 2; break; case c_oSerProp_rPrType.Color: rPr.Color = this.bcr.ReadColor(); break; case c_oSerProp_rPrType.VertAlign: rPr.VertAlign = this.stream.GetUChar(); break; case c_oSerProp_rPrType.HighLight: rPr.HighLight = this.bcr.ReadColor(); break; case c_oSerProp_rPrType.HighLightTyped: var nHighLightTyped = this.stream.GetUChar(); if (nHighLightTyped == c_oSer_ColorType.None) { rPr.HighLight = highlight_None; } break; case c_oSerProp_rPrType.RStyle: rPr.RStyle = this.stream.GetString2LE(length); break; case c_oSerProp_rPrType.Spacing: rPr.Spacing = this.bcr.ReadDouble(); break; case c_oSerProp_rPrType.DStrikeout: rPr.DStrikeout = (this.stream.GetUChar() != 0); break; case c_oSerProp_rPrType.Caps: rPr.Caps = (this.stream.GetUChar() != 0); break; case c_oSerProp_rPrType.SmallCaps: rPr.SmallCaps = (this.stream.GetUChar() != 0); break; case c_oSerProp_rPrType.Position: rPr.Position = this.bcr.ReadDouble(); break; case c_oSerProp_rPrType.FontHint: var nHint; switch (this.stream.GetUChar()) { case EHint.hintCs: nHint = fonthint_CS; break; case EHint.hintEastAsia: nHint = fonthint_EastAsia; break; default: nHint = fonthint_Default; break; } rPr.RFonts.Hint = nHint; break; case c_oSerProp_rPrType.BoldCs: rPr.BoldCS = this.stream.GetBool(); break; case c_oSerProp_rPrType.ItalicCs: rPr.ItalicCS = this.stream.GetBool(); break; case c_oSerProp_rPrType.FontSizeCs: rPr.FontSizeCS = this.stream.GetULongLE() / 2; break; case c_oSerProp_rPrType.Cs: rPr.CS = this.stream.GetBool(); break; case c_oSerProp_rPrType.Rtl: rPr.RTL = this.stream.GetBool(); break; case c_oSerProp_rPrType.Lang: if (null == rPr.Lang) { rPr.Lang = new CLang(); } var sLang = this.stream.GetString2LE(length); var nLcid = g_oLcidNameToIdMap[sLang]; if (null != nLcid) { rPr.Lang.Val = nLcid; } break; case c_oSerProp_rPrType.LangBidi: if (null == rPr.Lang) { rPr.Lang = new CLang(); } var sLang = this.stream.GetString2LE(length); var nLcid = g_oLcidNameToIdMap[sLang]; if (null != nLcid) { rPr.Lang.Bidi = nLcid; } break; case c_oSerProp_rPrType.LangEA: if (null == rPr.Lang) { rPr.Lang = new CLang(); } var sLang = this.stream.GetString2LE(length); var nLcid = g_oLcidNameToIdMap[sLang]; if (null != nLcid) { rPr.Lang.EastAsia = nLcid; } break; default: res = c_oSerConstants.ReadUnknown; break; } return res; }; } function Binary_tblPrReader(doc, oReadResult, stream) { this.Document = doc; this.oReadResult = oReadResult; this.stream = stream; this.bcr = new Binary_CommonReader(this.stream); this.bpPrr = new Binary_pPrReader(this.Document, this.oReadResult, this.stream); } Binary_tblPrReader.prototype = { Read_tblPr: function (type, length, Pr, table) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_tblPrType.Jc === type) { Pr.Jc = this.stream.GetUChar(); } else { if (c_oSerProp_tblPrType.TableInd === type) { Pr.TableInd = this.bcr.ReadDouble(); } else { if (c_oSerProp_tblPrType.TableW === type) { var oW = { Type: null, W: null, WDocx: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadW(t, l, oW); }); if (null == Pr.TableW) { Pr.TableW = new CTableMeasurement(tblwidth_Auto, 0); } this.ParseW(oW, Pr.TableW); } else { if (c_oSerProp_tblPrType.TableCellMar === type) { if (null == Pr.TableCellMar) { Pr.TableCellMar = this.GetNewMargin(); } res = this.bcr.Read1(length, function (t, l) { return oThis.ReadCellMargins(t, l, Pr.TableCellMar); }); } else { if (c_oSerProp_tblPrType.TableBorders === type) { if (null == Pr.TableBorders) { Pr.TableBorders = { Bottom: undefined, Left: undefined, Right: undefined, Top: undefined, InsideH: undefined, InsideV: undefined }; } res = this.bcr.Read1(length, function (t, l) { return oThis.bpPrr.ReadBorders(t, l, Pr.TableBorders); }); } else { if (c_oSerProp_tblPrType.Shd === type) { if (null == Pr.Shd) { Pr.Shd = new CDocumentShd(); } res = this.bcr.Read2(length, function (t, l) { return oThis.bcr.ReadShd(t, l, Pr.Shd); }); } else { if (c_oSerProp_tblPrType.Layout === type) { var nLayout = this.stream.GetUChar(); switch (nLayout) { case ETblLayoutType.tbllayouttypeAutofit: Pr.TableLayout = tbllayout_AutoFit; break; case ETblLayoutType.tbllayouttypeFixed: Pr.TableLayout = tbllayout_Fixed; break; } } else { if (null != table) { if (c_oSerProp_tblPrType.tblpPr === type) { table.Set_Inline(false); var oAdditionalPr = { PageNum: null, X: null, Y: null, Paddings: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.Read_tblpPr(t, l, oAdditionalPr); }); if (null != oAdditionalPr.X) { table.Set_PositionH(c_oAscHAnchor.Page, false, oAdditionalPr.X); } if (null != oAdditionalPr.Y) { table.Set_PositionV(c_oAscVAnchor.Page, false, oAdditionalPr.Y); } if (null != oAdditionalPr.Paddings) { var Paddings = oAdditionalPr.Paddings; table.Set_Distance(Paddings.L, Paddings.T, Paddings.R, Paddings.B); } } else { if (c_oSerProp_tblPrType.tblpPr2 === type) { table.Set_Inline(false); var oAdditionalPr = { HRelativeFrom: null, HAlign: null, HValue: null, VRelativeFrom: null, VAlign: null, VValue: null, Distance: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.Read_tblpPr2(t, l, oAdditionalPr); }); if (null != oAdditionalPr.HRelativeFrom && null != oAdditionalPr.HAlign && null != oAdditionalPr.HValue) { table.Set_PositionH(oAdditionalPr.HRelativeFrom, oAdditionalPr.HAlign, oAdditionalPr.HValue); } if (null != oAdditionalPr.VRelativeFrom && null != oAdditionalPr.VAlign && null != oAdditionalPr.VValue) { table.Set_PositionV(oAdditionalPr.VRelativeFrom, oAdditionalPr.VAlign, oAdditionalPr.VValue); } if (null != oAdditionalPr.Distance) { var Distance = oAdditionalPr.Distance; table.Set_Distance(Distance.L, Distance.T, Distance.R, Distance.B); } } else { if (c_oSerProp_tblPrType.Look === type) { var nLook = this.stream.GetULongLE(); var bFC = 0 != (nLook & 128); var bFR = 0 != (nLook & 32); var bLC = 0 != (nLook & 256); var bLR = 0 != (nLook & 64); var bBH = 0 != (nLook & 512); var bBV = 0 != (nLook & 1024); table.Set_TableLook(new CTableLook(bFC, bFR, bLC, bLR, !bBH, !bBV)); } else { if (c_oSerProp_tblPrType.Style === type) { this.oReadResult.tableStyles.push({ pPr: table, style: this.stream.GetString2LE(length) }); } else { res = c_oSerConstants.ReadUnknown; } } } } } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } return res; }, BordersNull: function (Borders) { Borders.Left = new CDocumentBorder(); Borders.Top = new CDocumentBorder(); Borders.Right = new CDocumentBorder(); Borders.Bottom = new CDocumentBorder(); Borders.InsideV = new CDocumentBorder(); Borders.InsideH = new CDocumentBorder(); }, ReadW: function (type, length, Width) { var res = c_oSerConstants.ReadOk; if (c_oSerWidthType.Type === type) { Width.Type = this.stream.GetUChar(); } else { if (c_oSerWidthType.W === type) { Width.W = this.bcr.ReadDouble(); } else { if (c_oSerWidthType.WDocx === type) { Width.WDocx = this.stream.GetULongLE(); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }, ParseW: function (input, output) { if (input.Type) { output.Type = input.Type; } if (input.W) { output.W = input.W; } if (input.WDocx) { if (tblwidth_Mm == input.Type) { output.W = g_dKoef_twips_to_mm * input.WDocx; } else { output.W = input.WDocx; } } }, ReadCellMargins: function (type, length, Margins) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerMarginsType.left === type) { var oW = { Type: null, W: null, WDocx: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadW(t, l, oW); }); if (null == Margins.Left) { Margins.Left = new CTableMeasurement(tblwidth_Auto, 0); } this.ParseW(oW, Margins.Left); } else { if (c_oSerMarginsType.top === type) { var oW = { Type: null, W: null, WDocx: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadW(t, l, oW); }); if (null == Margins.Top) { Margins.Top = new CTableMeasurement(tblwidth_Auto, 0); } this.ParseW(oW, Margins.Top); } else { if (c_oSerMarginsType.right === type) { var oW = { Type: null, W: null, WDocx: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadW(t, l, oW); }); if (null == Margins.Right) { Margins.Right = new CTableMeasurement(tblwidth_Auto, 0); } this.ParseW(oW, Margins.Right); } else { if (c_oSerMarginsType.bottom === type) { var oW = { Type: null, W: null, WDocx: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadW(t, l, oW); }); if (null == Margins.Bottom) { Margins.Bottom = new CTableMeasurement(tblwidth_Auto, 0); } this.ParseW(oW, Margins.Bottom); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }, Read_tblpPr: function (type, length, oAdditionalPr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_tblpPrType.Page === type) { oAdditionalPr.PageNum = this.stream.GetULongLE(); } else { if (c_oSer_tblpPrType.X === type) { oAdditionalPr.X = this.bcr.ReadDouble(); } else { if (c_oSer_tblpPrType.Y === type) { oAdditionalPr.Y = this.bcr.ReadDouble(); } else { if (c_oSer_tblpPrType.Paddings === type) { if (null == oAdditionalPr.Paddings) { oAdditionalPr.Paddings = { L: 0, T: 0, R: 0, B: 0 }; } res = this.bcr.Read2(length, function (t, l) { return oThis.ReadPaddings2(t, l, oAdditionalPr.Paddings); }); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }, Read_tblpPr2: function (type, length, oAdditionalPr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_tblpPrType2.HorzAnchor === type) { oAdditionalPr.HRelativeFrom = this.stream.GetUChar(); } else { if (c_oSer_tblpPrType2.TblpX === type) { oAdditionalPr.HAlign = false; oAdditionalPr.HValue = this.bcr.ReadDouble(); } else { if (c_oSer_tblpPrType2.TblpXSpec === type) { oAdditionalPr.HAlign = true; oAdditionalPr.HValue = this.stream.GetUChar(); } else { if (c_oSer_tblpPrType2.VertAnchor === type) { oAdditionalPr.VRelativeFrom = this.stream.GetUChar(); } else { if (c_oSer_tblpPrType2.TblpY === type) { oAdditionalPr.VAlign = false; oAdditionalPr.VValue = this.bcr.ReadDouble(); } else { if (c_oSer_tblpPrType2.TblpYSpec === type) { oAdditionalPr.VAlign = true; oAdditionalPr.VValue = this.stream.GetUChar(); } else { if (c_oSer_tblpPrType2.Paddings === type) { oAdditionalPr.Distance = { L: 0, T: 0, R: 0, B: 0 }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadPaddings2(t, l, oAdditionalPr.Distance); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } return res; }, Read_RowPr: function (type, length, Pr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_rowPrType.CantSplit === type) { Pr.CantSplit = (this.stream.GetUChar() != 0); } else { if (c_oSerProp_rowPrType.After === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadAfter(t, l, Pr); }); } else { if (c_oSerProp_rowPrType.Before === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadBefore(t, l, Pr); }); } else { if (c_oSerProp_rowPrType.Jc === type) { Pr.Jc = this.stream.GetUChar(); } else { if (c_oSerProp_rowPrType.TableCellSpacing === type) { Pr.TableCellSpacing = this.bcr.ReadDouble(); } else { if (c_oSerProp_rowPrType.Height === type) { if (null == Pr.Height) { Pr.Height = new CTableRowHeight(0, heightrule_Auto); } res = this.bcr.Read2(length, function (t, l) { return oThis.ReadHeight(t, l, Pr.Height); }); } else { if (c_oSerProp_rowPrType.TableHeader === type) { Pr.TableHeader = (this.stream.GetUChar() != 0); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } return res; }, ReadAfter: function (type, length, After) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_rowPrType.GridAfter === type) { After.GridAfter = this.stream.GetULongLE(); } else { if (c_oSerProp_rowPrType.WAfter === type) { var oW = { Type: null, W: null, WDocx: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadW(t, l, oW); }); if (null == After.WAfter) { After.WAfter = new CTableMeasurement(tblwidth_Auto, 0); } this.ParseW(oW, After.WAfter); } else { res = c_oSerConstants.ReadUnknown; } } return res; }, ReadBefore: function (type, length, Before) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_rowPrType.GridBefore === type) { Before.GridBefore = this.stream.GetULongLE(); } else { if (c_oSerProp_rowPrType.WBefore === type) { var oW = { Type: null, W: null, WDocx: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadW(t, l, oW); }); if (null == Before.WBefore) { Before.WBefore = new CTableMeasurement(tblwidth_Auto, 0); } this.ParseW(oW, Before.WBefore); } else { res = c_oSerConstants.ReadUnknown; } } return res; }, ReadHeight: function (type, length, Height) { var res = c_oSerConstants.ReadOk; if (c_oSerProp_rowPrType.Height_Rule === type) { Height.HRule = this.stream.GetUChar(); } else { if (c_oSerProp_rowPrType.Height_Value === type) { Height.Value = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } return res; }, Read_CellPr: function (type, length, Pr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_cellPrType.GridSpan === type) { Pr.GridSpan = this.stream.GetULongLE(); } else { if (c_oSerProp_cellPrType.Shd === type) { if (null == Pr.Shd) { Pr.Shd = new CDocumentShd(); } res = this.bcr.Read2(length, function (t, l) { return oThis.bcr.ReadShd(t, l, Pr.Shd); }); } else { if (c_oSerProp_cellPrType.TableCellBorders === type) { if (null == Pr.TableCellBorders) { Pr.TableCellBorders = { Bottom: undefined, Left: undefined, Right: undefined, Top: undefined }; } res = this.bcr.Read1(length, function (t, l) { return oThis.bpPrr.ReadBorders(t, l, Pr.TableCellBorders); }); } else { if (c_oSerProp_cellPrType.CellMar === type) { if (null == Pr.TableCellMar) { Pr.TableCellMar = this.GetNewMargin(); } res = this.bcr.Read1(length, function (t, l) { return oThis.ReadCellMargins(t, l, Pr.TableCellMar); }); } else { if (c_oSerProp_cellPrType.TableCellW === type) { var oW = { Type: null, W: null, WDocx: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadW(t, l, oW); }); if (null == Pr.TableCellW) { Pr.TableCellW = new CTableMeasurement(tblwidth_Auto, 0); } this.ParseW(oW, Pr.TableCellW); } else { if (c_oSerProp_cellPrType.VAlign === type) { Pr.VAlign = this.stream.GetUChar(); } else { if (c_oSerProp_cellPrType.VMerge === type) { Pr.VMerge = this.stream.GetUChar(); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } return res; }, GetNewMargin: function () { return { Left: new CTableMeasurement(tblwidth_Auto, 0), Top: new CTableMeasurement(tblwidth_Auto, 0), Right: new CTableMeasurement(tblwidth_Auto, 0), Bottom: new CTableMeasurement(tblwidth_Auto, 0) }; }, ReadPaddings: function (type, length, paddings) { var res = c_oSerConstants.ReadOk; if (c_oSerPaddingType.left === type) { paddings.Left = this.bcr.ReadDouble(); } else { if (c_oSerPaddingType.top === type) { paddings.Top = this.bcr.ReadDouble(); } else { if (c_oSerPaddingType.right === type) { paddings.Right = this.bcr.ReadDouble(); } else { if (c_oSerPaddingType.bottom === type) { paddings.Bottom = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }, ReadPaddings2: function (type, length, paddings) { var res = c_oSerConstants.ReadOk; if (c_oSerPaddingType.left === type) { paddings.L = this.bcr.ReadDouble(); } else { if (c_oSerPaddingType.top === type) { paddings.T = this.bcr.ReadDouble(); } else { if (c_oSerPaddingType.right === type) { paddings.R = this.bcr.ReadDouble(); } else { if (c_oSerPaddingType.bottom === type) { paddings.B = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; } }; function Binary_NumberingTableReader(doc, oReadResult, stream) { this.Document = doc; this.oReadResult = oReadResult; this.stream = stream; this.m_oNumToANum = new Object(); this.m_oANumToNumClass = new Object(); this.bcr = new Binary_CommonReader(this.stream); this.brPrr = new Binary_rPrReader(this.Document, this.stream); this.bpPrr = new Binary_pPrReader(this.Document, this.oReadResult, this.stream); this.Read = function () { var oThis = this; var res = this.bcr.ReadTable(function (t, l) { return oThis.ReadNumberingContent(t, l); }); for (var i in this.m_oNumToANum) { var anum = this.m_oNumToANum[i]; if (null != anum) { var numClass = this.m_oANumToNumClass[anum]; if (null != numClass) { this.oReadResult.numToNumClass[i] = numClass; } } } return res; }; this.ReadNumberingContent = function (type, length) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.AbstractNums === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadAbstractNums(t, l); }); } else { if (c_oSerNumTypes.Nums === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadNums(t, l); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }, this.ReadNums = function (type, length, Num) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.Num === type) { var oNewItem = new Object(); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadNum(t, l, oNewItem); }); if (null != oNewItem.ANum && null != oNewItem.Num) { this.m_oNumToANum[oNewItem.Num] = oNewItem.ANum; } } else { res = c_oSerConstants.ReadUnknown; } return res; }, this.ReadNum = function (type, length, Num) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.Num_ANumId === type) { Num.ANum = this.stream.GetULongLE(); } else { if (c_oSerNumTypes.Num_NumId === type) { Num.Num = this.stream.GetULongLE(); } else { res = c_oSerConstants.ReadUnknown; } } return res; }, this.ReadAbstractNums = function (type, length) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.AbstractNum === type) { var oNewAbstractNum = new CAbstractNum(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadAbstractNum(t, l, oNewAbstractNum); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }, this.ReadAbstractNum = function (type, length, oNewNum) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.AbstractNum_Lvls === type) { var nLevelNum = 0; res = this.bcr.Read1(length, function (t, l) { return oThis.ReadLevels(t, l, nLevelNum++, oNewNum); }); } else { if (c_oSerNumTypes.NumStyleLink === type) { oNewNum.NumStyleLink = this.stream.GetString2LE(length); } else { if (c_oSerNumTypes.StyleLink === type) { oNewNum.StyleLink = this.stream.GetString2LE(length); } else { if (c_oSerNumTypes.AbstractNum_Id === type) { this.m_oANumToNumClass[this.stream.GetULongLE()] = oNewNum; } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.ReadLevels = function (type, length, nLevelNum, oNewNum) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.Lvl === type) { if (nLevelNum < oNewNum.Lvl.length) { var oOldLvl = oNewNum.Lvl[nLevelNum]; var oNewLvl = oNewNum.Internal_CopyLvl(oOldLvl); oNewLvl.ParaPr = new CParaPr(); oNewLvl.TextPr = new CTextPr(); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadLevel(t, l, oNewLvl); }); if (numbering_numfmt_Bullet == oNewLvl.Format && null == oNewLvl.TextPr.RFonts.Ascii) { oNewLvl.TextPr.RFonts.Set_All("Symbol", -1); } oNewNum.Lvl[nLevelNum] = oNewLvl; this.oReadResult.aPostOpenStyleNumCallbacks.push(function () { oNewNum.Set_Lvl(nLevelNum, oNewLvl); }); } else { res = c_oSerConstants.ReadUnknown; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadLevel = function (type, length, oNewLvl) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.lvl_Format === type) { oNewLvl.Format = this.stream.GetULongLE(); } else { if (c_oSerNumTypes.lvl_Jc === type) { oNewLvl.Jc = this.stream.GetUChar(); } else { if (c_oSerNumTypes.lvl_LvlText === type) { oNewLvl.LvlText = new Array(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadLevelText(t, l, oNewLvl.LvlText); }); } else { if (c_oSerNumTypes.lvl_Restart === type) { oNewLvl.Restart = this.stream.GetLongLE(); } else { if (c_oSerNumTypes.lvl_Start === type) { oNewLvl.Start = this.stream.GetULongLE(); } else { if (c_oSerNumTypes.lvl_Suff === type) { oNewLvl.Suff = this.stream.GetUChar(); } else { if (c_oSerNumTypes.lvl_PStyle === type) { this.oReadResult.lvlStyles.push({ pPr: oNewLvl, style: this.stream.GetString2LE(length) }); } else { if (c_oSerNumTypes.lvl_ParaPr === type) { res = this.bpPrr.Read(length, oNewLvl.ParaPr, null); } else { if (c_oSerNumTypes.lvl_TextPr === type) { res = this.brPrr.Read(length, oNewLvl.TextPr); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } } return res; }; this.ReadLevelText = function (type, length, aNewText) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.lvl_LvlTextItem === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadLevelTextItem(t, l, aNewText); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadLevelTextItem = function (type, length, aNewText) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerNumTypes.lvl_LvlTextItemText === type) { var oNewTextItem = new CLvlText_Text(this.stream.GetString2LE(length)); aNewText.push(oNewTextItem); } else { if (c_oSerNumTypes.lvl_LvlTextItemNum === type) { var oNewTextItem = new CLvlText_Num(this.stream.GetUChar()); aNewText.push(oNewTextItem); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; } function Binary_HdrFtrTableReader(doc, oReadResult, openParams, stream) { this.Document = doc; this.oReadResult = oReadResult; this.openParams = openParams; this.stream = stream; this.bcr = new Binary_CommonReader(this.stream); this.bdtr = new Binary_DocumentTableReader(this.Document, this.oReadResult, this.openParams, this.stream, true, new Object()); this.Header = null; this.Footer = null; this.Read = function () { if (this.Document.HdrFtr && this.Document.HdrFtr.Content && this.Document.HdrFtr.Content.length > 0 && this.Document.HdrFtr.Content[0].Header) { this.Header = this.Document.HdrFtr.Content[0].Header; } if (this.Document.HdrFtr && this.Document.HdrFtr.Content && this.Document.HdrFtr.Content.length > 0 && this.Document.HdrFtr.Content[0].Footer) { this.Footer = this.Document.HdrFtr.Content[0].Footer; } if (null == this.Header || null == this.Footer) { return; } var oThis = this; var res = this.bcr.ReadTable(function (t, l) { return oThis.ReadHdrFtrContent(t, l); }); return res; }; this.ReadHdrFtrContent = function (type, length) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerHdrFtrTypes.Header === type || c_oSerHdrFtrTypes.Footer === type) { var oHdrFtrContainer; var nHdrFtrType; if (c_oSerHdrFtrTypes.Header === type) { oHdrFtrContainer = this.Header; nHdrFtrType = hdrftr_Header; } else { oHdrFtrContainer = this.Footer; nHdrFtrType = hdrftr_Footer; } res = this.bcr.Read1(length, function (t, l) { return oThis.ReadHdrFtrFEO(t, l, oHdrFtrContainer, nHdrFtrType); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadHdrFtrFEO = function (type, length, oHdrFtrContainer, nHdrFtrType) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerHdrFtrTypes.HdrFtr_First === type || c_oSerHdrFtrTypes.HdrFtr_Even === type || c_oSerHdrFtrTypes.HdrFtr_Odd === type) { var hdrftr = new CHeaderFooter(this.Document.HdrFtr, this.Document, this.Document.DrawingDocument, nHdrFtrType, 0); this.bdtr.Document = hdrftr.Content; var oNewItem = { Content: null, BoundY: null, BoundY2: null }; res = this.bcr.Read1(length, function (t, l) { return oThis.ReadHdrFtrItem(t, l, oNewItem); }); if (null != oNewItem.Content && oNewItem.Content.length > 0 && null != oNewItem.BoundY2) { hdrftr.Set_BoundY2(oNewItem.BoundY2, false); hdrftr.Content.Content = oNewItem.Content; switch (type) { case c_oSerHdrFtrTypes.HdrFtr_First: oHdrFtrContainer.First = hdrftr; break; case c_oSerHdrFtrTypes.HdrFtr_Even: oHdrFtrContainer.Even = hdrftr; break; case c_oSerHdrFtrTypes.HdrFtr_Odd: oHdrFtrContainer.Odd = hdrftr; break; } } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadHdrFtrItem = function (type, length, oNewItem) { var oThis = this; var res = c_oSerConstants.ReadOk; if (c_oSerHdrFtrTypes.HdrFtr_Y2 === type) { oNewItem.BoundY2 = this.bcr.ReadDouble(); } else { if (c_oSerHdrFtrTypes.HdrFtr_Y === type) { oNewItem.BoundY = this.bcr.ReadDouble(); } else { if (c_oSerHdrFtrTypes.HdrFtr_Content === type) { oNewItem.Content = new Array(); oThis.bdtr.Read(length, oNewItem.Content); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; } function Binary_DocumentTableReader(doc, oReadResult, openParams, stream, bAllowFlow, oComments) { this.Document = doc; this.oReadResult = oReadResult; this.openParams = openParams; this.stream = stream; this.bcr = new Binary_CommonReader(this.stream); this.brPrr = new Binary_rPrReader(this.Document, this.stream); this.bpPrr = new Binary_pPrReader(this.Document, this.oReadResult, this.stream); this.btblPrr = new Binary_tblPrReader(this.Document, this.oReadResult, this.stream); this.bAllowFlow = bAllowFlow; this.lastPar = null; this.oComments = oComments; this.nCurCommentsCount = 0; this.oCurComments = {}; this.Reset = function () { this.lastPar = null; }; this.ReadAsTable = function (OpenContent) { this.Reset(); var oThis = this; return this.bcr.ReadTable(function (t, l) { return oThis.ReadDocumentContent(t, l, OpenContent); }); }; this.Read = function (length, OpenContent) { this.Reset(); var oThis = this; return this.bcr.Read1(length, function (t, l) { return oThis.ReadDocumentContent(t, l, OpenContent); }); }; this.ReadDocumentContent = function (type, length, Content) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerParType.Par === type) { if (null != this.openParams && true == this.openParams.checkFileSize) { this.openParams.parCount += 1; if (this.openParams.parCount >= g_nErrorParagraphCount) { throw new Error(g_sErrorCharCountMessage); } } var oNewParagraph = new Paragraph(this.Document.DrawingDocument, this.Document, 0, 50, 50, X_Right_Field, Y_Bottom_Field); var oNewObject = { Content: new Array(), bExistrPr: false }; res = this.bcr.Read1(length, function (t, l) { return oThis.ReadParagraph(t, l, oNewParagraph, oNewObject, Content); }); for (var i = oNewObject.Content.length - 1; i >= 0; --i) { var elem = oNewObject.Content[i]; oNewParagraph.Internal_Content_Add(0, elem); } if (null != this.lastPar) { oNewParagraph.Set_DocumentPrev(this.lastPar); this.lastPar.Set_DocumentNext(oNewParagraph); } this.lastPar = oNewParagraph; Content.push(oNewParagraph); } else { if (c_oSerParType.Table === type) { var doc = this.Document; var oNewTable = new CTable(doc.DrawingDocument, doc, true, 0, 0, 0, X_Left_Field, Y_Bottom_Field, 0, 0, []); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadDocTable(t, l, oNewTable); }); if (2 == g_nCurFileVersion && false == oNewTable.Inline) { if (false == oNewTable.PositionH.Align) { var dx = Get_TableOffsetCorrection(oNewTable); oNewTable.PositionH.Value += dx; } } if (null != this.lastPar) { oNewTable.Set_DocumentPrev(this.lastPar); this.lastPar.Set_DocumentNext(oNewTable); } this.lastPar = oNewTable; Content.push(oNewTable); } else { if (c_oSerParType.sectPr === type) { var oSectPr = new Object(); oSectPr.W = Page_Width; oSectPr.H = Page_Height; oSectPr.Orientation = this.Document.Orientation; oSectPr.Left = X_Left_Margin; oSectPr.Top = Y_Top_Margin; oSectPr.Right = X_Right_Margin; oSectPr.Bottom = Y_Bottom_Margin; res = this.bcr.Read1(length, function (t, l) { return oThis.Read_SecPr(t, l, oSectPr); }); Page_Width = oSectPr.W; Page_Height = oSectPr.H; this.Document.Orientation = oSectPr.Orientation; if (null != oSectPr.Left) { X_Left_Margin = oSectPr.Left; } if (null != oSectPr.Right) { X_Right_Margin = oSectPr.Right; } if (null != oSectPr.Top) { Y_Top_Margin = oSectPr.Top; } if (null != oSectPr.Bottom) { Y_Bottom_Margin = oSectPr.Bottom; } X_Left_Field = X_Left_Margin; X_Right_Field = Page_Width - X_Right_Margin; Y_Bottom_Field = Page_Height - Y_Bottom_Margin; Y_Top_Field = Y_Top_Margin; if (this.Document.HdrFtr && this.Document.HdrFtr.Content && this.Document.HdrFtr.Content.length > 0) { var oHeader = this.Document.HdrFtr.Content[0].Header; if (null != oHeader) { if (null != oHeader.First) { oHeader.First.Content.X = X_Left_Field; oHeader.First.Content.XLimit = X_Right_Field; } if (null != oHeader.Even) { oHeader.Even.Content.X = X_Left_Field; oHeader.Even.Content.XLimit = X_Right_Field; } if (null != oHeader.Odd) { oHeader.Odd.Content.X = X_Left_Field; oHeader.Odd.Content.XLimit = X_Right_Field; } } var oFooter = this.Document.HdrFtr.Content[0].Footer; if (null != oFooter) { if (null != oFooter.First) { oFooter.First.Content.X = X_Left_Field; oFooter.First.Content.XLimit = X_Right_Field; } if (null != oFooter.Even) { oFooter.Even.Content.X = X_Left_Field; oFooter.Even.Content.XLimit = X_Right_Field; } if (null != oFooter.Odd) { oFooter.Odd.Content.X = X_Left_Field; oFooter.Odd.Content.XLimit = X_Right_Field; } } } } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadParagraph = function (type, length, paragraph, oNewObject, Content) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerParType.pPr === type) { var oNewParaPr = new CParaPr(); res = this.bpPrr.Read(length, oNewParaPr, paragraph); paragraph.Pr = oNewParaPr; this.oReadResult.aPostOpenStyleNumCallbacks.push(function () { paragraph.Set_Pr(oNewParaPr); }); } else { if (c_oSerParType.Content === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadParagraphContent(t, l, oNewObject, paragraph, Content); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadParagraphContent = function (type, length, oNewObject, paragraph, Content) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerParType.Run === type) { var oRunObject = { Content: new Array(), rPr: null }; res = this.bcr.Read1(length, function (t, l) { return oThis.ReadRun(t, l, oRunObject, paragraph, Content); }); if (null != oRunObject.rPr) { oNewObject.bExistrPr = true; oNewObject.Content.push(new ParaTextPr(oRunObject.rPr)); } else { if (oNewObject.bExistrPr) { oNewObject.Content.push(new ParaTextPr()); } } oNewObject.Content = oNewObject.Content.concat(oRunObject.Content); } else { if (c_oSerParType.CommentStart === type) { var oCommon = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadComment(t, l, oCommon); }); if (oNewObject.Content.length > 0) { oCommon.oAfter = oNewObject.Content[oNewObject.Content.length - 1]; } if (null != oCommon.Id) { oCommon.oParent = paragraph; var item = this.oComments[oCommon.Id]; if (item) { item.Start = oCommon; } else { this.oComments[oCommon.Id] = { Start: oCommon }; } if (null == this.oCurComments[oCommon.Id]) { this.nCurCommentsCount++; this.oCurComments[oCommon.Id] = ""; } } } else { if (c_oSerParType.CommentEnd === type) { var oCommon = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadComment(t, l, oCommon); }); if (oNewObject.Content.length > 0) { oCommon.oAfter = oNewObject.Content[oNewObject.Content.length - 1]; } if (null != oCommon.Id) { oCommon.oParent = paragraph; var item = this.oComments[oCommon.Id]; if (!item) { item = {}; this.oComments[oCommon.Id] = item; } item.End = oCommon; var sQuoteText = this.oCurComments[oCommon.Id]; if (null != sQuoteText) { item.QuoteText = sQuoteText; this.nCurCommentsCount--; delete this.oCurComments[oCommon.Id]; } } } else { if (c_oSerParType.OMathPara == type) {} else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.ReadMathAcc = function (type, length, oMathAcc) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.AccPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathAccPr(t, l, props, oMathAcc); }); oMathAcc.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oMathAcc.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathAccPr = function (type, length, props, oMathAcc) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.Chr === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathChr(t, l, props); }); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oMathAcc); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathAln = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; props.aln = false; if (c_oSer_OMathBottomNodesValType.Val === type) { props.aln = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathAlnScr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.alnScr = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathArg = function (type, length, oElem) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.Acc === type) { var oAccent = new CAccent(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathAcc(t, l, oAccent); }); oElem.addElementToContent(oAccent); } else { if (c_oSer_OMathContentType.ArgPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArgPr(t, l, oElem); }); } else { if (c_oSer_OMathContentType.Bar === type) { var oBar = new CBar(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathBar(t, l, oBar); }); oElem.addElementToContent(oBar); } else { if (c_oSer_OMathContentType.BorderBox === type) { var oBorderBox = new CBorderBox(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathBorderBox(t, l, oBorderBox); }); oElem.addElementToContent(oBorderBox); } else { if (c_oSer_OMathContentType.Box === type) { var oBox = new CBox(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathBox(t, l, oBox); }); oElem.addElementToContent(oBox); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oElem); }); } else { if (c_oSer_OMathContentType.Delimiter === type) { var oDelimiter = new CDelimiter(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathDelimiter(t, l, oDelimiter); }); oElem.addElementToContent(oDelimiter); } else { if (c_oSer_OMathContentType.EqArr === type) { var oEqArr = new CEqArray(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathEqArr(t, l, oEqArr); }); oElem.addElementToContent(oEqArr); } else { if (c_oSer_OMathContentType.Fraction === type) { var oFraction = new CFraction(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathFraction(t, l, oFraction); }); oElem.addElementToContent(oFraction); } else { if (c_oSer_OMathContentType.Func === type) { var oFunc = new CMathFunc(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathFunc(t, l, oFunc); }); oElem.addElementToContent(oFunc); } else { if (c_oSer_OMathContentType.GroupChr === type) { var oGroupChr = new CGroupCharacter(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathGroupChr(t, l, oGroupChr); }); oElem.addElementToContent(oGroupChr); } else { if (c_oSer_OMathContentType.LimLow === type) { var oLimLow = new CLimit(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathLimLow(t, l, oLimLow); }); oElem.addElementToContent(oLimLow); } else { if (c_oSer_OMathContentType.LimUpp === type) { var oLimUpp = new CLimit(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathLimUpp(t, l, oLimUpp); }); oElem.addElementToContent(oLimUpp); } else { if (c_oSer_OMathContentType.Matrix === type) { var oMatrix = new CMathMatrix(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathMatrix(t, l, oMatrix); }); oElem.addElementToContent(oMatrix); } else { if (c_oSer_OMathContentType.Nary === type) { var oNary = new CNary(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathNary(t, l, oNary); }); oElem.addElementToContent(oNary); } else { if (c_oSer_OMathContentType.OMath === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { if (c_oSer_OMathContentType.Phant === type) { var oPhant = new CPhantom(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathPhant(t, l, oPhant); }); oElem.addElementToContent(oPhant); } else { if (c_oSer_OMathContentType.MRun === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathMRun(t, l, oElem); }); } else { if (c_oSer_OMathContentType.Rad === type) { var oRad = new CRadical(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathRad(t, l, oRad); }); oElem.addElementToContent(oRad); } else { if (c_oSer_OMathContentType.SPre === type) { var oSPre = new CDegreeSubSup(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathSPre(t, l, oSPre); }); oElem.addElementToContent(oSPre); } else { if (c_oSer_OMathContentType.SSub === type) { var oSSub = new CDegree(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathSSub(t, l, oSSub); }); oElem.addElementToContent(oSSub); } else { if (c_oSer_OMathContentType.SSubSup === type) { var oSSubSup = new CDegreeSubSup(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathSSubSup(t, l, oSSubSup); }); oElem.addElementToContent(oSSubSup); } else { if (c_oSer_OMathContentType.SSup === type) { var oSSup = new CDegree(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathSSup(t, l, oSSup); }); oElem.addElementToContent(oSSup); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } } } } } } } } } } } } } } } } return res; }; this.ReadMathArgPr = function (type, length, oElem) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.ArgSz === type) { var props = new Object(); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathArgSz(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathArgSz = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.argSz = this.stream.GetULongLE(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathBegChr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.begChr = this.stream.GetString2LE(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathBar = function (type, length, oBar) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.BarPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathBarPr(t, l, props, oBar); }); oBar.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oBar.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathBarPr = function (type, length, props, oBar) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oBar); }); } else { if (c_oSer_OMathBottomNodesType.Pos === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathPos(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathBaseJc = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var baseJc = this.stream.GetUChar(length); switch (baseJc) { case 0: props.baseJc = BASEJC_BOTTOM; break; case 1: props.baseJc = BASEJC_CENTER; break; case 5: props.baseJc = BASEJC_TOP; break; default: props.baseJc = BASEJC_TOP; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathBorderBox = function (type, length, oBorderBox) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.BorderBoxPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathBorderBoxPr(t, l, props, oBorderBox); }); oBorderBox.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oBorderBox.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathBorderBoxPr = function (type, length, props, oBorderBox) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oBorderBox); }); } else { if (c_oSer_OMathBottomNodesType.HideBot === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathHideBot(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.HideLeft === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathHideLeft(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.HideRight === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathHideRight(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.HideTop === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathHideTop(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.StrikeBLTR === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathStrikeBLTR(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.StrikeH === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathStrikeH(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.StrikeTLBR === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathStrikeTLBR(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.StrikeV === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathStrikeV(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } } return res; }; this.ReadMathBox = function (type, length, oBox) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.BoxPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathBoxPr(t, l, props, oBox); }); oBorderBox.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oBorderBox.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathBoxPr = function (type, length, props, oBox) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.Aln === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathAln(t, l, props); }); } else { if (c_oSer_OMathContentType.Brk === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathBrk(t, l, props); }); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oBox); }); } else { if (c_oSer_OMathBottomNodesType.Diff === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathDiff(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.NoBreak === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathNoBreak(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.OpEmu === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathOpEmu(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } return res; }; this.ReadMathBrk = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.brk = this.stream.GetBool(length); } else { if (c_oSer_OMathBottomNodesValType.AlnAt === type) { props.alnAt = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathCGp = function (type, length, props) { var res = c_oSerConstants.ReadOk; if (c_oSer_OMathBottomNodesValType.Val == type) { props.cGp = this.stream.GetULongLE(); } return res; }; this.ReadMathCGpRule = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var cGpRule = this.stream.GetUChar(length); switch (cGpRule) { case 0: props.cGpRule = "centered"; break; case 1: props.cGpRule = "match"; break; default: props.cGpRule = "centered"; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathCSp = function (type, length, props) { var res = c_oSerConstants.ReadOk; if (c_oSer_OMathBottomNodesValType.Val == type) { props.cSp = this.stream.GetULongLE(); } return res; }; this.ReadMathColumn = function (type, length, props) { var res = c_oSerConstants.ReadOk; props.column = 0; if (c_oSer_OMathBottomNodesValType.Val == type) { props.column = this.stream.GetULongLE(); } return res; }; this.ReadMathChr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var text = this.stream.GetString2LE(length); props.chr = text; } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathCtrlPr = function (type, length, oElem) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerRunType.rPr === type) { var MathTextRPr = new CTextPr(); res = this.brPrr.Read(length, MathTextRPr); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathDelimiter = function (type, length, oDelimiter) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.DelimiterPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathDelimiterPr(t, l, props, oDelimiter); }); if (!props.begChr) { props.begChrType = 0; } if (!props.endChr) { props.endChrType = 1; } if (!props.sepChr && props.column > 1) { props.sepChrType = 12; } oDelimiter.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var lColumn = oDelimiter.column; var oElem = oDelimiter.getBase(lColumn); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); oDelimiter.column++; } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathDelimiterPr = function (type, length, props, oDelimiter) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.Column === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathColumn(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.BegChr === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathBegChr(t, l, props); }); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oDelimiter); }); } else { if (c_oSer_OMathBottomNodesType.EndChr === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathEndChr(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.Grow === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathGrow(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.SepChr === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathSepChr(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.Shp === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathShp(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } return res; }; this.ReadMathDegHide = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.degHide = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathDiff = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.diff = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathEqArr = function (type, length, oEqArr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.EqArrPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathEqArrPr(t, l, props, oEqArr); }); oEqArr.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var lRow = oEqArr.row; var oElem = oEqArr.getElement(lRow); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); oEqArr.row++; } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathEqArrPr = function (type, length, props, oEqArr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.Row === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathRow(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.BaseJc === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathBaseJc(t, l, props); }); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oEqArr); }); } else { if (c_oSer_OMathBottomNodesType.MaxDist === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathMaxDist(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.ObjDist === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathObjDist(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.RSp === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathRSp(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.RSpRule === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathRSpRule(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } return res; }; this.ReadMathEndChr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.endChr = this.stream.GetString2LE(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathGroupChr = function (type, length, oGroupChr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.GroupChrPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathGroupChrPr(t, l, props, oGroupChr); }); oGroupChr.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oGroupChr.getArgument(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathGroupChrPr = function (type, length, props, oGroupChr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.Chr === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathChr(t, l, props); }); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oGroupChr); }); } else { if (c_oSer_OMathBottomNodesType.Pos === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathPos(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.VertJc === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathVertJc(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.ReadMathGrow = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.grow = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathFraction = function (type, length, oFraction) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.FPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathFPr(t, l, props, oFraction); }); if (!props.type) { props.type = BAR_FRACTION; } oFraction.init(props); } else { if (c_oSer_OMathArgNodesType.Den === type) { var oElemDen = oFraction.getDenominator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElemDen); }); } else { if (c_oSer_OMathArgNodesType.Num === type) { var oElemNum = oFraction.getNumerator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElemNum); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadMathFPr = function (type, length, props, oFraction) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oFraction); }); } else { if (c_oSer_OMathBottomNodesType.Type === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathType(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathFunc = function (type, length, oFunc) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.FuncPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathFuncPr(t, l, props, oFunc); }); oFunc.init(); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oFunc.getArgument(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { if (c_oSer_OMathArgNodesType.FName === type) { var oFName = oFunc.getFName(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oFName); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadMathFuncPr = function (type, length, props, oFunc) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oFunc); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathHideBot = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.hideBot = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathHideLeft = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.hideLeft = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathHideRight = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.hideRight = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathHideTop = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.hideTop = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathLimLoc = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var limLoc = this.stream.GetUChar(length); switch (limLoc) { case 0: props.limLoc = NARY_SubSup; break; case 1: props.limLoc = NARY_UndOvr; break; default: props.limLoc = NARY_SubSup; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathLimLow = function (type, length, oLimLow) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.LimLowPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathLimLowPr(t, l, props, oLimLow); }); props.type = LIMIT_LOW; oLimLow.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oLimLow.getFName(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { if (c_oSer_OMathArgNodesType.Lim === type) { var oLim = oLimLow.getIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oLim); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadMathLimLowPr = function (type, length, props, oLimLow) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oLimLow); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathLimUpp = function (type, length, oLimUpp) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.LimUppPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathLimUppPr(t, l, props, oLimUpp); }); props.type = LIMIT_UP; oLimUpp.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oLimUpp.getFName(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { if (c_oSer_OMathArgNodesType.Lim === type) { var oLim = oLimUpp.getIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oLim); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadMathLimUppPr = function (type, length, props, oLimUpp) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oLimUpp); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathLit = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.lit = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathMatrix = function (type, length, oMatrix) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.MPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathMPr(t, l, props, oMatrix); }); oMatrix.init(props); } else { if (c_oSer_OMathContentType.Mr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathMr(t, l, oMatrix); }); oMatrix.row++; } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathMc = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.McPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathMcPr(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathMcJc = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var mcJc = this.stream.GetUChar(length); switch (mcJc) { case 0: props.mcJc = "center"; break; case 1: props.mcJc = "inside"; break; case 2: props.mcJc = "left"; break; case 3: props.mcJc = "outside"; break; case 4: props.mcJc = "right"; break; default: props.mcJc = "center"; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathMcPr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.Count === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathColumn(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.McJc === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathMcJc(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathMcs = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.Mc === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathMc(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathMJc = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var mJc = this.stream.GetUChar(length); switch (mJc) { case 0: props.mJc = "center"; break; case 1: props.mJc = "centerGroup"; break; case 2: props.mJc = "left"; break; case 3: props.mJc = "right"; break; default: props.mJc = "centerGroup"; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathMPr = function (type, length, props, oMatrix) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.Row === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathRow(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.BaseJc === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathBaseJc(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.CGp === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathCGp(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.CGpRule === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathCGpRule(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.CSp === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathCSp(t, l, props); }); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oMatrix); }); } else { if (c_oSer_OMathContentType.Mcs === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathMcs(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.PlcHide === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathPlcHide(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.RSp === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathRSp(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.RSpRule === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathRSpRule(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } } } return res; }; this.ReadMathMr = function (type, length, oMatrix) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathArgNodesType.Element === type) { var lRow = oMatrix.row; var lColumn = oMatrix.column; var oElem = oMatrix.getElement(lRow, lColumn); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); oMatrix.column++; if (oMatrix.nCol == oMatrix.column) { oMatrix.column = 0; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathMaxDist = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.maxDist = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathMRun = function (type, length, oElem) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.MText === type) { var text = this.stream.GetString2LE(length); var str = ""; for (var i = 0, length = text.length; i < length; ++i) { if (text[i] != " ") { if (31 < text[i].charCodeAt(0)) { var oText = new CMathText(); oText.addTxt(text[i]); oElem.addElementToContent(oText); } } } } else { if (c_oSer_OMathContentType.MRPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathMRPr(t, l, props); }); } else { if (c_oSerRunType.rPr === type) { var MathTextRPr = new CTextPr(); res = this.brPrr.Read(length, MathTextRPr); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadMathMRPr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.Aln === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathAln(t, l, props); }); } else { if (c_oSer_OMathContentType.Brk === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathBrk(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.Lit === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathLit(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.Nor === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathNor(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.Scr === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathScr(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.Sty === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathSty(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } return res; }; this.ReadMathNary = function (type, length, oNary) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.NaryPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathNaryPr(t, l, props, oNary); }); oNary.init(props); } else { if (c_oSer_OMathArgNodesType.Sub === type) { var oSub = oNary.getLowerIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oSub); }); } else { if (c_oSer_OMathArgNodesType.Sup === type) { var oSup = oNary.getUpperIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oSup); }); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oNary.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.ReadMathNaryPr = function (type, length, props, oNary) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.Chr === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathChr(t, l, props); }); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oNary); }); } else { if (c_oSer_OMathBottomNodesType.Grow === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathGrow(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.LimLoc === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathLimLoc(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.SubHide === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathSubHide(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.SupHide === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathSupHide(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } return res; }; this.ReadMathNoBreak = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.noBreak = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathNor = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.nor = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathObjDist = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.objDist = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathOMathPara = function (type, length, oOMathPara) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathArgNodesType.OMath === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oOMathPara.Root); }); } else { if (c_oSer_OMathContentType.OMathParaPr) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathOMathParaPr(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathOMathParaPr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.MJc === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathMJc(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathOpEmu = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.opEmu = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathPhant = function (type, length, oPhant) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.PhantPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathPhantPr(t, l, props, oPhant); }); oPhant.init(props); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oPhant.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathPhantPr = function (type, length, props, oPhant) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oPhant); }); } else { if (c_oSer_OMathBottomNodesType.Show === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathShow(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.Transp === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathTransp(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.ZeroAsc === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathZeroAsc(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.ZeroDesc === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathZeroDesc(t, l, props); }); } else { if (c_oSer_OMathBottomNodesType.ZeroWid === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathZeroWid(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } return res; }; this.ReadMathPlcHide = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.plcHide = this.stream.GetBool(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathPos = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var pos = this.stream.GetUChar(length); switch (pos) { case 0: props.pos = LOCATION_BOT; break; case 1: props.pos = LOCATION_TOP; break; default: props.pos = LOCATION_BOT; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathRad = function (type, length, oRad) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.RadPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathRadPr(t, l, props, oRad); }); oRad.init(props); } else { if (c_oSer_OMathArgNodesType.Deg === type) { var oDeg = oRad.getDegree(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oDeg); }); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oRad.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadMathRadPr = function (type, length, props, oRad) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oRad); }); } if (c_oSer_OMathBottomNodesType.DegHide === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadMathDegHide(t, l, props); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathRow = function (type, length, props) { var res = c_oSerConstants.ReadOk; props.row = 0; if (c_oSer_OMathBottomNodesValType.Val == type) { props.row = this.stream.GetULongLE(); } return res; }; this.ReadMathRSp = function (type, length, props) { var res = c_oSerConstants.ReadOk; if (c_oSer_OMathBottomNodesValType.Val == type) { props.rSp = this.stream.GetULongLE(); } return res; }; this.ReadMathRSpRule = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var rSpRule = this.stream.GetUChar(length); switch (rSpRule) { case 0: props.rSpRule = "centered"; break; case 1: props.rSpRule = "match"; break; default: props.rSpRule = "centered"; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathScr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var scr = this.stream.GetUChar(length); switch (scr) { case 0: props.scr = "double-struck"; break; case 1: props.scr = "fraktur"; break; case 2: props.scr = "monospace"; break; case 3: props.scr = "roman"; break; case 4: props.scr = "sans-serif"; break; case 4: props.scr = "script"; break; default: props.scr = "roman"; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathSepChr = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.sepChr = this.stream.GetString2LE(length); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathShow = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.show = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathShp = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var shp = this.stream.GetUChar(length); switch (shp) { case 0: props.shp = DELIMITER_SHAPE_CENTERED; break; case 1: props.shp = DELIMITER_SHAPE_MATH; break; default: props.shp = DELIMITER_SHAPE_CENTERED; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathSPre = function (type, length, oSPre) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.SPrePr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathSPrePr(t, l, props, oSPre); }); props.type = DEGREE_PreSubSup; oSPre.init(props); } else { if (c_oSer_OMathArgNodesType.Sub === type) { var oSub = oSPre.getLowerIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oSub); }); } else { if (c_oSer_OMathArgNodesType.Sup === type) { var oSup = oSPre.getUpperIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oSup); }); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oSPre.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.ReadMathSPrePr = function (type, length, props, oSPre) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oSPre); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathSSub = function (type, length, oSSub) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.SSubPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathSSubPr(t, l, props, oSSub); }); props.type = DEGREE_SUBSCRIPT; oSSub.init(props); } else { if (c_oSer_OMathArgNodesType.Sub === type) { var oSub = oSSub.getLowerIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oSub); }); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oSSub.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadMathSSubPr = function (type, length, props, oSSub) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oSSub); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathSSubSup = function (type, length, oSSubSup) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.SSubSupPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathSSubSupPr(t, l, props, SSubSup); }); props.type = DEGREE_SubSup; oSSubSup.init(props); } else { if (c_oSer_OMathArgNodesType.Sub === type) { var oSub = oSSubSup.getLowerIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oSub); }); } else { if (c_oSer_OMathArgNodesType.Sup === type) { var oSup = oSSubSup.getUpperIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oSup); }); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oSSubSup.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.ReadMathSSubSupPr = function (type, length, props, SSubSup) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesType.AlnScr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathAlnScr(t, l, props); }); } else { if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, SSubSup); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadMathSSup = function (type, length, oSSup) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.SSupPr === type) { var props = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathSSupPr(t, l, props, oSSup); }); props.type = DEGREE_SUPERSCRIPT; oSSup.init(props); } else { if (c_oSer_OMathArgNodesType.Sup === type) { var oSup = oSSup.getUpperIterator(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oSup); }); } else { if (c_oSer_OMathArgNodesType.Element === type) { var oElem = oSSup.getBase(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathArg(t, l, oElem); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadMathSSupPr = function (type, length, props, oSSup) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathContentType.CtrlPr === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadMathCtrlPr(t, l, oSSup); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathStrikeBLTR = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.strikeBLTR = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathStrikeH = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.strikeH = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathStrikeTLBR = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.strikeTLBR = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathStrikeV = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.strikeV = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathSty = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var sty = this.stream.GetUChar(length); switch (sty) { case 0: props.sty = "b"; break; case 1: props.sty = "bi"; break; case 2: props.sty = "i"; break; case 3: props.sty = "p"; break; default: props.sty = "i"; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathSubHide = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.subHide = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathSupHide = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.supHide = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathTransp = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.transp = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathType = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var type = this.stream.GetUChar(length); switch (type) { case 0: props.type = BAR_FRACTION; break; case 1: props.type = LINEAR_FRACTION; break; case 2: props.type = NO_BAR_FRACTION; break; case 3: props.type = SKEWED_FRACTION; break; default: props.type = BAR_FRACTION; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathVertJc = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { var vertJc = this.stream.GetUChar(length); switch (vertJc) { case 0: props.vertJc = VJUST_BOT; break; case 1: props.vertJc = VJUST_TOP; break; default: props.vertJc = VJUST_BOT; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathZeroAsc = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.zeroAsc = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathZeroDesc = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.zeroDesc = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadMathZeroWid = function (type, length, props) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_OMathBottomNodesValType.Val === type) { props.zeroWid = this.stream.GetBool(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadComment = function (type, length, oComments) { var res = c_oSerConstants.ReadOk; if (c_oSer_CommentsType.Id === type) { oComments.Id = this.stream.GetULongLE(); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadRun = function (type, length, oRunObject, paragraph, Content) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerRunType.rPr === type) { oRunObject.rPr = new CTextPr(); res = this.brPrr.Read(length, oRunObject.rPr); } else { if (c_oSerRunType.Content === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadRunContent(t, l, oRunObject.Content, paragraph, Content); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadRunContent = function (type, length, Content, paragraph, oDocContent) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerRunType.run === type) { var text = this.stream.GetString2LE(length); if (null != this.openParams && true == this.openParams.checkFileSize) { this.openParams.charCount += length / 2; if (this.openParams.charCount >= g_nErrorCharCount) { throw new Error(g_sErrorCharCountMessage); } } if (this.nCurCommentsCount > 0) { for (var i in this.oCurComments) { this.oCurComments[i] += text; } } for (var i = 0, length = text.length; i < length; ++i) { if (text[i] != " ") { Content.push(new ParaText(text[i])); } else { Content.push(new ParaSpace(1)); } } } else { if (c_oSerRunType.tab === type) { Content.push(new ParaTab()); } else { if (c_oSerRunType.pagenum === type) { Content.push(new ParaPageNum()); } else { if (c_oSerRunType.pagebreak === type) { Content.push(new ParaNewLine(break_Page)); } else { if (c_oSerRunType.linebreak === type) { Content.push(new ParaNewLine(break_Line)); } else { if (c_oSerRunType.image === type) { var oThis = this; var image = { page: null, Type: null, MediaId: null, W: null, H: null, X: null, Y: null, Paddings: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadImage(t, l, image); }); if ((c_oAscWrapStyle.Inline == image.Type && null != image.MediaId && null != image.W && null != image.H) || (c_oAscWrapStyle.Flow == image.Type && null != image.MediaId && null != image.W && null != image.H && null != image.X && null != image.Y)) { var doc = this.Document; var drawing = new ParaDrawing(image.W, image.H, null, doc.DrawingDocument, paragraph); var Image = new WordImage(drawing, doc, doc.DrawingDocument, null); var src = this.oReadResult.ImageMap[image.MediaId]; Image.init(src, image.W, image.H, null); if (c_oAscWrapStyle.Flow == image.Type) { drawing.Set_DrawingType(drawing_Anchor); drawing.Set_PositionH(c_oAscRelativeFromH.Page, false, image.X); drawing.Set_PositionV(c_oAscRelativeFromV.Page, false, image.Y); if (image.Paddings) { drawing.Set_Distance(image.Paddings.Left, image.Paddings.Top, image.Paddings.Right, image.Paddings.Bottom); } History.RecalcData_Add({ Type: historyrecalctype_Flow, Data: drawing }); } editor.WordControl.m_oLogicDocument.DrawingObjects.arrForCalculateAfterOpen.push(drawing); drawing.init(); if (null != drawing.GraphicObj) { window.global_pptx_content_loader.ImageMapChecker[src] = true; Content.push(drawing); } } } else { if (c_oSerRunType.pptxDrawing === type) { var doc = this.Document; var oParaDrawing = new ParaDrawing(null, null, null, doc.DrawingDocument, doc, paragraph); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadPptxDrawing(t, l, oParaDrawing); }); if (null != oParaDrawing.SimplePos) { oParaDrawing.setSimplePos(oParaDrawing.SimplePos.Use, oParaDrawing.SimplePos.X, oParaDrawing.SimplePos.Y); } if (null != oParaDrawing.Extent) { oParaDrawing.setExtent(oParaDrawing.Extent.W, oParaDrawing.Extent.H); } if (null != oParaDrawing.wrappingPolygon) { oParaDrawing.addWrapPolygon(oParaDrawing.wrappingPolygon); } editor.WordControl.m_oLogicDocument.DrawingObjects.arrForCalculateAfterOpen.push(oParaDrawing); oParaDrawing.init(); if (drawing_Anchor == oParaDrawing.DrawingType) { History.RecalcData_Add({ Type: historyrecalctype_Flow, Data: oParaDrawing }); } if (null != oParaDrawing.GraphicObj) { Content.push(oParaDrawing); } } else { if (c_oSerRunType.table === type) { var doc = this.Document; var oNewTable = new CTable(doc.DrawingDocument, doc, true, 0, 0, 0, X_Left_Field, Y_Bottom_Field, 0, 0, []); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadDocTable(t, l, oNewTable); }); if (2 == g_nCurFileVersion && false == oNewTable.Inline) { if (false == oNewTable.PositionH.Align) { var dx = Get_TableOffsetCorrection(oNewTable); oNewTable.PositionH.Value += dx; } } if (null != this.lastPar) { oNewTable.Set_DocumentPrev(this.lastPar); this.lastPar.Set_DocumentNext(oNewTable); } this.lastPar = oNewTable; oDocContent.push(oNewTable); } else { if (c_oSerRunType.fldstart === type) { var oHyperlink = new ParaHyperlinkStart(); var sField = this.stream.GetString2LE(length); this.parseField(oHyperlink, sField); Content.push(oHyperlink); } else { if (c_oSerRunType.fldend === type) { var oHyperlink = new ParaHyperlinkEnd(); Content.push(oHyperlink); } else { if (c_oSerRunType.CommentReference === type) { var oCommon = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadComment(t, l, oCommon); }); if (Content.length > 0) { oCommon.oAfter = Content[Content.length - 1]; } if (null != oCommon.Id) { oCommon.oParent = paragraph; var item = this.oComments[oCommon.Id]; if (item) { item.Ref = oCommon; } else { this.oComments[oCommon.Id] = { Ref: oCommon }; } } } else { if (c_oSerRunType._LastRun === type) { this.oReadResult.bLastRun = true; } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } } } } } return res; }; this.parseField = function (hyp, fld) { if (-1 != fld.indexOf("HYPERLINK")) { var sLink = null; var sTooltip = null; var bNextLink = false; var bNextTooltip = false; var aItems = new Array(); var sCurItem = ""; var bDQuot = false; for (var i = 0, length = fld.length; i < length; ++i) { var sCurLetter = fld[i]; if ('"' == sCurLetter) { bDQuot = !bDQuot; } else { if ("\\" == sCurLetter && true == bDQuot && i + 1 < length && '"' == fld[i + 1]) { i++; sCurItem += fld[i]; } else { if (" " == sCurLetter && false == bDQuot) { if (sCurItem.length > 0) { aItems.push(sCurItem); sCurItem = ""; } } else { sCurItem += sCurLetter; } } } } if (sCurItem.length > 0) { aItems.push(sCurItem); } for (var i = 0, length = aItems.length; i < length; ++i) { var item = aItems[i]; if ("" != item) { if (bNextLink) { bNextLink = false; sLink = item; } if (bNextTooltip) { bNextTooltip = false; sTooltip = item; } if ("HYPERLINK" == item) { bNextLink = true; } else { if ("\\o" == item) { bNextTooltip = true; } } } } if (null != sLink) { hyp.Set_Value(this.trimField(sLink)); } if (null != sTooltip) { hyp.Set_ToolTip(this.trimField(sTooltip)); } } }; this.trimField = function (str) { return str.replace(/^[\s\"\']+|[\s\"\']+$/g, ""); }; this.ReadImage = function (type, length, img) { var res = c_oSerConstants.ReadOk; if (c_oSerImageType.Page === type) { img.page = this.stream.GetULongLE(); } else { if (c_oSerImageType.MediaId === type) { img.MediaId = this.stream.GetULongLE(); } else { if (c_oSerImageType.Type === type) { img.Type = this.stream.GetUChar(); } else { if (c_oSerImageType.Width === type) { img.W = this.bcr.ReadDouble(); } else { if (c_oSerImageType.Height === type) { img.H = this.bcr.ReadDouble(); } else { if (c_oSerImageType.X === type) { img.X = this.bcr.ReadDouble(); } else { if (c_oSerImageType.Y === type) { img.Y = this.bcr.ReadDouble(); } else { if (c_oSerImageType.Padding === type) { var oThis = this; img.Paddings = { Left: 0, Top: 0, Right: 0, Bottom: 0 }; res = this.bcr.Read2(length, function (t, l) { return oThis.btblPrr.ReadPaddings(t, l, img.Paddings); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } return res; }; this.ReadPptxDrawing = function (type, length, oParaDrawing) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerImageType2.Type === type) { var nDrawingType = null; switch (this.stream.GetUChar()) { case c_oAscWrapStyle.Inline: nDrawingType = drawing_Inline; break; case c_oAscWrapStyle.Flow: nDrawingType = drawing_Anchor; break; } if (null != nDrawingType) { oParaDrawing.Set_DrawingType(nDrawingType); } } else { if (c_oSerImageType2.PptxData === type) { var grObject = window.global_pptx_content_loader.ReadDrawing(this, this.stream, this.Document, oParaDrawing); oParaDrawing.Set_GraphicObject(grObject); } else { if (c_oSerImageType2.Chart === type) { var oNewGraphicObj = new CChartAsGroup(); if (g_oTableId) { g_oTableId.m_bTurnOff = true; } var chart = new asc_CChart(); if (g_oTableId) { g_oTableId.m_bTurnOff = false; } var oBinary_ChartReader = new Binary_ChartReader(this.stream, chart, oNewGraphicObj); oBinary_ChartReader.ReadExternal(length); if (null != chart.range.interval && chart.range.interval.length > 0) { oNewGraphicObj.setAscChart(chart); oParaDrawing.Set_GraphicObject(oNewGraphicObj); } } else { if (c_oSerImageType2.AllowOverlap === type) { var AllowOverlap = this.stream.GetBool(); } else { if (c_oSerImageType2.BehindDoc === type) { oParaDrawing.Set_BehindDoc(this.stream.GetBool()); } else { if (c_oSerImageType2.DistL === type) { oParaDrawing.Set_Distance(this.bcr.ReadDouble(), null, null, null); } else { if (c_oSerImageType2.DistT === type) { oParaDrawing.Set_Distance(null, this.bcr.ReadDouble(), null, null); } else { if (c_oSerImageType2.DistR === type) { oParaDrawing.Set_Distance(null, null, this.bcr.ReadDouble(), null); } else { if (c_oSerImageType2.DistB === type) { oParaDrawing.Set_Distance(null, null, null, this.bcr.ReadDouble()); } else { if (c_oSerImageType2.Hidden === type) { var Hidden = this.stream.GetBool(); } else { if (c_oSerImageType2.Locked === type) { var Locked = this.stream.GetBool(); } else { if (c_oSerImageType2.RelativeHeight === type) { oParaDrawing.setZIndex2(this.stream.GetULongLE()); } else { if (c_oSerImageType2.BSimplePos === type) { oParaDrawing.SimplePos.Use = this.stream.GetBool(); } else { if (c_oSerImageType2.EffectExtent === type) { var oReadEffectExtent = { Left: null, Top: null, Right: null, Bottom: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadEffectExtent(t, l, oReadEffectExtent); }); } else { if (c_oSerImageType2.Extent === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadExtent(t, l, oParaDrawing.Extent); }); } else { if (c_oSerImageType2.PositionH === type) { var oNewPositionH = { RelativeFrom: c_oAscRelativeFromH.Column, Align: false, Value: 0 }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadPositionHV(t, l, oNewPositionH); }); oParaDrawing.Set_PositionH(oNewPositionH.RelativeFrom, oNewPositionH.Align, oNewPositionH.Value); } else { if (c_oSerImageType2.PositionV === type) { var oNewPositionV = { RelativeFrom: c_oAscRelativeFromV.Paragraph, Align: false, Value: 0 }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadPositionHV(t, l, oNewPositionV); }); oParaDrawing.Set_PositionV(oNewPositionV.RelativeFrom, oNewPositionV.Align, oNewPositionV.Value); } else { if (c_oSerImageType2.SimplePos === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadSimplePos(t, l, oParaDrawing.SimplePos); }); } else { if (c_oSerImageType2.WrapNone === type) { oParaDrawing.Set_WrappingType(WRAPPING_TYPE_NONE); } else { if (c_oSerImageType2.WrapSquare === type) { oParaDrawing.Set_WrappingType(WRAPPING_TYPE_SQUARE); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadWrapSquare(t, l, oParaDrawing.wrappingPolygon); }); } else { if (c_oSerImageType2.WrapThrough === type) { oParaDrawing.Set_WrappingType(WRAPPING_TYPE_THROUGH); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadWrapThroughTight(t, l, oParaDrawing.wrappingPolygon); }); } else { if (c_oSerImageType2.WrapTight === type) { oParaDrawing.Set_WrappingType(WRAPPING_TYPE_TIGHT); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadWrapThroughTight(t, l, oParaDrawing.wrappingPolygon); }); } else { if (c_oSerImageType2.WrapTopAndBottom === type) { oParaDrawing.Set_WrappingType(WRAPPING_TYPE_TOP_AND_BOTTOM); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadWrapThroughTight(t, l, oParaDrawing.wrappingPolygon); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } } } } } } } } } } } } } } } } } return res; }; this.ReadEffectExtent = function (type, length, oEffectExtent) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerEffectExtent.Left === type) { oEffectExtent.Left = this.bcr.ReadDouble(); } else { if (c_oSerEffectExtent.Top === type) { oEffectExtent.Top = this.bcr.ReadDouble(); } else { if (c_oSerEffectExtent.Right === type) { oEffectExtent.Right = this.bcr.ReadDouble(); } else { if (c_oSerEffectExtent.Bottom === type) { oEffectExtent.Bottom = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.ReadExtent = function (type, length, oExtent) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerExtent.Cx === type) { oExtent.W = this.bcr.ReadDouble(); } else { if (c_oSerExtent.Cy === type) { oExtent.H = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadPositionHV = function (type, length, PositionH) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerPosHV.RelativeFrom === type) { PositionH.RelativeFrom = this.stream.GetUChar(); } else { if (c_oSerPosHV.Align === type) { PositionH.Align = true; PositionH.Value = this.stream.GetUChar(); } else { if (c_oSerPosHV.PosOffset === type) { PositionH.Align = false; PositionH.Value = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadSimplePos = function (type, length, oSimplePos) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerSimplePos.X === type) { oSimplePos.X = this.bcr.ReadDouble(); } else { if (c_oSerSimplePos.Y === type) { oSimplePos.Y = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadWrapSquare = function (type, length, wrappingPolygon) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerWrapSquare.DistL === type) { var DistL = this.bcr.ReadDouble(); } else { if (c_oSerWrapSquare.DistT === type) { var DistT = this.bcr.ReadDouble(); } else { if (c_oSerWrapSquare.DistR === type) { var DistR = this.bcr.ReadDouble(); } else { if (c_oSerWrapSquare.DistB === type) { var DistB = this.bcr.ReadDouble(); } else { if (c_oSerWrapSquare.WrapText === type) { var WrapText = this.stream.GetUChar(); } else { if (c_oSerWrapSquare.EffectExtent === type) { var EffectExtent = { Left: null, Top: null, Right: null, Bottom: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadEffectExtent(t, l, EffectExtent); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } return res; }; this.ReadWrapThroughTight = function (type, length, wrappingPolygon) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerWrapThroughTight.DistL === type) { var DistL = this.bcr.ReadDouble(); } else { if (c_oSerWrapThroughTight.DistR === type) { var DistR = this.bcr.ReadDouble(); } else { if (c_oSerWrapThroughTight.WrapText === type) { var WrapText = this.stream.GetUChar(); } else { if (c_oSerWrapThroughTight.WrapPolygon === type) { var oStartRes = { start: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadWrapPolygon(t, l, wrappingPolygon, oStartRes); }); if (null != oStartRes.start) { wrappingPolygon.relativeArrPoints.unshift(oStartRes.start); } } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; this.ReadWrapTopBottom = function (type, length, wrappingPolygon) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerWrapTopBottom.DistT === type) { var DistT = this.bcr.ReadDouble(); } else { if (c_oSerWrapTopBottom.DistB === type) { var DistB = this.bcr.ReadDouble(); } else { if (c_oSerWrapTopBottom.EffectExtent === type) { var EffectExtent = { Left: null, Top: null, Right: null, Bottom: null }; res = this.bcr.Read2(length, function (t, l) { return oThis.ReadEffectExtent(t, l, EffectExtent); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadWrapPolygon = function (type, length, wrappingPolygon, oStartRes) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerWrapPolygon.Edited === type) { wrappingPolygon.edited = this.stream.GetBool(); } else { if (c_oSerWrapPolygon.Start === type) { oStartRes.start = new CPolygonPoint(); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadPolygonPoint(t, l, oStartRes.start); }); } else { if (c_oSerWrapPolygon.ALineTo === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadLineTo(t, l, wrappingPolygon.relativeArrPoints); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadLineTo = function (type, length, arrPoints) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerWrapPolygon.LineTo === type) { var oPoint = new CPolygonPoint(); res = this.bcr.Read2(length, function (t, l) { return oThis.ReadPolygonPoint(t, l, oPoint); }); arrPoints.push(oPoint); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadPolygonPoint = function (type, length, oPoint) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerPoint2D.X === type) { oPoint.x = this.bcr.ReadDouble(); } else { if (c_oSerPoint2D.Y === type) { oPoint.y = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadDocTable = function (type, length, table, tableFlow) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerDocTableType.tblPr === type) { table.Set_TableStyle2(null); var oNewTablePr = new CTablePr(); res = this.bcr.Read1(length, function (t, l) { return oThis.btblPrr.Read_tblPr(t, l, oNewTablePr, table); }); table.Pr = oNewTablePr; this.oReadResult.aPostOpenStyleNumCallbacks.push(function () { table.Set_Pr(oNewTablePr); }); } else { if (c_oSerDocTableType.tblGrid === type) { var aNewGrid = []; res = this.bcr.Read2(length, function (t, l) { return oThis.Read_tblGrid(t, l, aNewGrid); }); table.Internal_SaveTableGridInHistory(aNewGrid, table.TableGrid); table.TableGrid = aNewGrid; } else { if (c_oSerDocTableType.Content === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.Read_TableContent(t, l, table); }); if (table.Content.length > 0) { table.CurCell = table.Content[0].Get_Cell(0); } } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.Read_tblGrid = function (type, length, tblGrid) { var res = c_oSerConstants.ReadOk; if (c_oSerDocTableType.tblGrid_Item === type) { tblGrid.push(this.bcr.ReadDouble()); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.Read_TableContent = function (type, length, table) { var res = c_oSerConstants.ReadOk; var oThis = this; var Content = table.Content; if (c_oSerDocTableType.Row === type) { var row = table.Internal_Add_Row(table.Content.length, 0); res = this.bcr.Read1(length, function (t, l) { return oThis.Read_Row(t, l, row); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.Read_Row = function (type, length, Row) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerDocTableType.Row_Pr === type) { var oNewRowPr = new CTableRowPr(); res = this.bcr.Read2(length, function (t, l) { return oThis.btblPrr.Read_RowPr(t, l, oNewRowPr); }); Row.Set_Pr(oNewRowPr); } else { if (c_oSerDocTableType.Row_Content === type) { res = this.bcr.Read1(length, function (t, l) { return oThis.ReadRowContent(t, l, Row); }); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadRowContent = function (type, length, row) { var res = c_oSerConstants.ReadOk; var oThis = this; var Content = row.Content; if (c_oSerDocTableType.Cell === type) { var oCell = row.Add_Cell(row.Get_CellsCount(), row, null, false); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadCell(t, l, oCell); }); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadCell = function (type, length, cell) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerDocTableType.Cell_Pr === type) { var oNewCellPr = new CTableCellPr(); res = this.bcr.Read2(length, function (t, l) { return oThis.btblPrr.Read_CellPr(t, l, oNewCellPr); }); cell.Set_Pr(oNewCellPr); } else { if (c_oSerDocTableType.Cell_Content === type) { var oCellContent = new Array(); var oCellContentReader = new Binary_DocumentTableReader(cell.Content, this.oReadResult, this.openParams, this.stream, false, this.oComments); oCellContentReader.nCurCommentsCount = this.nCurCommentsCount; oCellContentReader.oCurComments = this.oCurComments; oCellContentReader.Read(length, oCellContent); this.nCurCommentsCount = oCellContentReader.nCurCommentsCount; for (var i = 0, length = oCellContent.length; i < length; ++i) { if (i == length - 1) { cell.Content.Internal_Content_Add(i + 1, oCellContent[i], true); } else { cell.Content.Internal_Content_Add(i + 1, oCellContent[i], false); } } cell.Content.Internal_Content_Remove(0, 1); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.Read_SecPr = function (type, length, oSectPr) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_secPrType.pgSz === type) { var oSize = new Object(); res = this.bcr.Read2(length, function (t, l) { return oThis.Read_pgSz(t, l, oSize); }); if (null != oSize.W && null != oSize.H) { oSectPr.W = oSize.W; oSectPr.H = oSize.H; } if (null != oSize.Orientation) { oSectPr.Orientation = oSize.Orientation; } } else { if (c_oSerProp_secPrType.pgMar === type) { var oMar = new Object(); res = this.bcr.Read2(length, function (t, l) { return oThis.Read_pgMar(t, l, oMar); }); if (null != oMar.Left) { oSectPr.Left = oMar.Left; } if (null != oMar.Right) { oSectPr.Right = oMar.Right; } if (null != oMar.Top) { oSectPr.Top = oMar.Top; } if (null != oMar.Bottom) { oSectPr.Bottom = oMar.Bottom; } } else { if (c_oSerProp_secPrType.setting === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.Read_setting(t, l); }); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.Read_setting = function (type, length) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSerProp_secPrSettingsType.titlePg === type) { this.oReadResult.setting.titlePg = this.stream.GetUChar(); } else { if (c_oSerProp_secPrSettingsType.EvenAndOddHeaders === type) { this.oReadResult.setting.EvenAndOddHeaders = this.stream.GetUChar(); } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.Read_pgSz = function (type, length, oSize) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_pgSzType.Orientation === type) { oSize.Orientation = this.stream.GetUChar(); } else { if (c_oSer_pgSzType.W === type) { oSize.W = this.bcr.ReadDouble(); } else { if (c_oSer_pgSzType.H === type) { oSize.H = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.Read_pgMar = function (type, length, oMar) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_pgMarType.Left === type) { oMar.Left = this.bcr.ReadDouble(); } else { if (c_oSer_pgMarType.Top === type) { oMar.Top = this.bcr.ReadDouble(); } else { if (c_oSer_pgMarType.Right === type) { oMar.Right = this.bcr.ReadDouble(); } else { if (c_oSer_pgMarType.Bottom === type) { oMar.Bottom = this.bcr.ReadDouble(); } else { res = c_oSerConstants.ReadUnknown; } } } } return res; }; } function Binary_OtherTableReader(doc, oReadResult, stream) { this.Document = doc; this.oReadResult = oReadResult; this.stream = stream; this.bcr = new Binary_CommonReader(this.stream); this.ImageMapIndex = 0; this.Read = function () { var oThis = this; return this.bcr.ReadTable(function (t, l) { return oThis.ReadOtherContent(t, l); }); }; this.ReadOtherContent = function (type, length) { var res = c_oSerConstants.ReadOk; if (c_oSerOtherTableTypes.ImageMap === type) { var oThis = this; this.ImageMapIndex = 0; res = this.bcr.Read1(length, function (t, l) { return oThis.ReadImageMapContent(t, l); }); } else { if (c_oSerOtherTableTypes.EmbeddedFonts === type) { var _count = this.stream.GetULongLE(); var _embedded_fonts = new Array(); for (var i = 0; i < _count; i++) { var _at = this.stream.GetUChar(); if (_at != g_nodeAttributeStart) { break; } var _f_i = new Object(); while (true) { _at = this.stream.GetUChar(); if (_at == g_nodeAttributeEnd) { break; } switch (_at) { case 0: _f_i.Name = this.stream.GetString(); break; case 1: _f_i.Style = this.stream.GetULongLE(); break; case 2: _f_i.IsCut = this.stream.GetBool(); break; case 3: _f_i.IndexCut = this.stream.GetULongLE(); break; default: break; } } _embedded_fonts.push(_f_i); } var api = this.Document.DrawingDocument.m_oWordControl.m_oApi; if (true == api.isUseEmbeddedCutFonts) { var font_cuts = api.FontLoader.embedded_cut_manager; font_cuts.Url = api.DocumentUrl + "fonts/fonts.js"; font_cuts.init_cut_fonts(_embedded_fonts); font_cuts.bIsCutFontsUse = true; } } else { if (c_oSerOtherTableTypes.DocxTheme === type) { this.Document.theme = window.global_pptx_content_loader.ReadTheme(this, this.stream); } else { res = c_oSerConstants.ReadUnknown; } } } return res; }; this.ReadImageMapContent = function (type, length, oNewImage) { var res = c_oSerConstants.ReadOk; if (c_oSerOtherTableTypes.ImageMap_Src === type) { this.oReadResult.ImageMap[this.ImageMapIndex] = this.stream.GetString2LE(length); this.ImageMapIndex++; } else { res = c_oSerConstants.ReadUnknown; } return res; }; } function Binary_CommentsTableReader(doc, oReadResult, stream, oComments) { this.Document = doc; this.oReadResult = oReadResult; this.stream = stream; this.oComments = oComments; this.bcr = new Binary_CommonReader(this.stream); this.Read = function () { var oThis = this; return this.bcr.ReadTable(function (t, l) { return oThis.ReadComments(t, l); }); }; this.ReadComments = function (type, length) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_CommentsType.Comment === type) { var oNewComment = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadCommentContent(t, l, oNewComment); }); if (null != oNewComment.Id) { this.oComments[oNewComment.Id] = oNewComment; } } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ReadCommentContent = function (type, length, oNewImage) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_CommentsType.Id === type) { oNewImage.Id = this.stream.GetULongLE(); } else { if (c_oSer_CommentsType.UserName === type) { oNewImage.UserName = this.stream.GetString2LE(length); } else { if (c_oSer_CommentsType.UserId === type) { oNewImage.UserId = this.stream.GetString2LE(length); } else { if (c_oSer_CommentsType.Date === type) { var oDate = this.Iso8601ToDate(this.stream.GetString2LE(length)); if (null != oDate) { oNewImage.Date = oDate.getTime() + ""; } } else { if (c_oSer_CommentsType.Text === type) { oNewImage.Text = this.stream.GetString2LE(length); } else { if (c_oSer_CommentsType.Solved === type) { oNewImage.Solved = (this.stream.GetUChar() != 0); } else { if (c_oSer_CommentsType.Replies === type) { oNewImage.Replies = new Array(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadReplies(t, l, oNewImage.Replies); }); } else { res = c_oSerConstants.ReadUnknown; } } } } } } } return res; }; this.Iso8601ToDate = function (sDate) { var numericKeys = [1, 4, 5, 6, 7, 10, 11]; var minutesOffset = 0; if ((struct = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(sDate))) { for (var i = 0, k; (k = numericKeys[i]); ++i) { struct[k] = +struct[k] || 0; } struct[2] = (+struct[2] || 1) - 1; struct[3] = +struct[3] || 1; if (struct[8] !== "Z" && struct[9] !== undefined) { minutesOffset = struct[10] * 60 + struct[11]; if (struct[9] === "+") { minutesOffset = 0 - minutesOffset; } } return new Date(Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7])); } return null; }; this.ReadReplies = function (type, length, Replies) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_CommentsType.Comment === type) { var oNewComment = new Object(); res = this.bcr.Read1(length, function (t, l) { return oThis.ReadCommentContent(t, l, oNewComment); }); Replies.push(oNewComment); } else { res = c_oSerConstants.ReadUnknown; } return res; }; } function Binary_SettingsTableReader(doc, oReadResult, stream) { this.Document = doc; this.oReadResult = oReadResult; this.stream = stream; this.bcr = new Binary_CommonReader(this.stream); this.Read = function () { var oThis = this; return this.bcr.ReadTable(function (t, l) { return oThis.ReadSettingsContent(t, l); }); }; this.ReadSettingsContent = function (type, length) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_SettingsType.ClrSchemeMapping === type) { res = this.bcr.Read2(length, function (t, l) { return oThis.ReadColorSchemeMapping(t, l); }); } else { if (c_oSer_SettingsType.DefaultTabStop === type) { var dNewTab_Stop = this.bcr.ReadDouble(); if (dNewTab_Stop > 0) { Default_Tab_Stop = dNewTab_Stop; } } else { res = c_oSerConstants.ReadUnknown; } } return res; }; this.ReadColorSchemeMapping = function (type, length) { var res = c_oSerConstants.ReadOk; var oThis = this; if (c_oSer_ClrSchemeMappingType.Accent1 <= type && type <= c_oSer_ClrSchemeMappingType.T2) { var val = this.stream.GetUChar(); this.ApplyColorSchemeMappingItem(type, val); } else { res = c_oSerConstants.ReadUnknown; } return res; }; this.ApplyColorSchemeMappingItem = function (type, val) { var nScriptType = 0; var nScriptVal = 0; switch (type) { case c_oSer_ClrSchemeMappingType.Accent1: nScriptType = 0; break; case c_oSer_ClrSchemeMappingType.Accent2: nScriptType = 1; break; case c_oSer_ClrSchemeMappingType.Accent3: nScriptType = 2; break; case c_oSer_ClrSchemeMappingType.Accent4: nScriptType = 3; break; case c_oSer_ClrSchemeMappingType.Accent5: nScriptType = 4; break; case c_oSer_ClrSchemeMappingType.Accent6: nScriptType = 5; break; case c_oSer_ClrSchemeMappingType.Bg1: nScriptType = 6; break; case c_oSer_ClrSchemeMappingType.Bg2: nScriptType = 7; break; case c_oSer_ClrSchemeMappingType.FollowedHyperlink: nScriptType = 10; break; case c_oSer_ClrSchemeMappingType.Hyperlink: nScriptType = 11; break; case c_oSer_ClrSchemeMappingType.T1: nScriptType = 15; break; case c_oSer_ClrSchemeMappingType.T2: nScriptType = 16; break; } switch (val) { case EWmlColorSchemeIndex.wmlcolorschemeindexAccent1: nScriptVal = 0; break; case EWmlColorSchemeIndex.wmlcolorschemeindexAccent2: nScriptVal = 1; break; case EWmlColorSchemeIndex.wmlcolorschemeindexAccent3: nScriptVal = 2; break; case EWmlColorSchemeIndex.wmlcolorschemeindexAccent4: nScriptVal = 3; break; case EWmlColorSchemeIndex.wmlcolorschemeindexAccent5: nScriptVal = 4; break; case EWmlColorSchemeIndex.wmlcolorschemeindexAccent6: nScriptVal = 5; break; case EWmlColorSchemeIndex.wmlcolorschemeindexDark1: nScriptVal = 8; break; case EWmlColorSchemeIndex.wmlcolorschemeindexDark2: nScriptVal = 9; break; case EWmlColorSchemeIndex.wmlcolorschemeindexFollowedHyperlink: nScriptVal = 10; break; case EWmlColorSchemeIndex.wmlcolorschemeindexHyperlink: nScriptVal = 11; break; case EWmlColorSchemeIndex.wmlcolorschemeindexLight1: nScriptVal = 12; break; case EWmlColorSchemeIndex.wmlcolorschemeindexLight2: nScriptVal = 13; break; } this.Document.clrSchemeMap.color_map[nScriptType] = nScriptVal; }; } function Get_TableOffsetCorrection(tbl) { var X = 0; var Row = tbl.Content[0]; var Cell = Row.Get_Cell(0); var Margins = Cell.Get_Margins(); var CellSpacing = Row.Get_CellSpacing(); if (null != CellSpacing) { var TableBorder_Left = tbl.Get_Borders().Left; if (border_None != TableBorder_Left.Value) { X += TableBorder_Left.Size / 2; } X += CellSpacing; var CellBorder_Left = Cell.Get_Borders().Left; if (border_None != CellBorder_Left.Value) { X += CellBorder_Left.Size; } X += Margins.Left.W; } else { var TableBorder_Left = tbl.Get_Borders().Left; var CellBorder_Left = Cell.Get_Borders().Left; var Result_Border = tbl.Internal_CompareBorders(TableBorder_Left, CellBorder_Left, true, false); if (border_None != Result_Border.Value) { X += Math.max(Result_Border.Size / 2, Margins.Left.W); } else { X += Margins.Left.W; } } return -X; } function CFontCharMap() { this.Name = ""; this.Id = ""; this.FaceIndex = -1; this.IsEmbedded = false; this.CharArray = new Object(); } function CFontsCharMap() { this.CurrentFontName = ""; this.CurrentFontInfo = null; this.map_fonts = {}; } CFontsCharMap.prototype = { StartWork: function () {}, EndWork: function () { var mem = new CMemory(); mem.Init(); for (var i in this.map_fonts) { var _font = this.map_fonts[i]; mem.WriteByte(240); mem.WriteByte(250); mem.WriteByte(0); mem.WriteString2(_font.Name); mem.WriteByte(1); mem.WriteString2(_font.Id); mem.WriteByte(2); mem.WriteString2(_font.FaceIndex); mem.WriteByte(3); mem.WriteBool(_font.IsEmbedded); mem.WriteByte(251); mem.WriteByte(0); var _pos = mem.pos; var _len = 0; for (var c in _font.CharArray) { mem.WriteLong(parseInt(c)); _len++; } var _new_pos = mem.pos; mem.pos = _pos; mem.WriteLong(_len); mem.pos = _new_pos; mem.WriteByte(241); } return mem.GetBase64Memory(); }, StartFont: function (family, bold, italic, size) { var _index = window.g_map_font_index[family]; var bItalic = (true === italic); var bBold = (true === bold); var oFontStyle = FontStyle.FontStyleRegular; if (!bItalic && bBold) { oFontStyle = FontStyle.FontStyleBold; } else { if (bItalic && !bBold) { oFontStyle = FontStyle.FontStyleItalic; } else { if (bItalic && bBold) { oFontStyle = FontStyle.FontStyleBoldItalic; } } } var font_info = window.g_font_infos[_index]; var _id = font_info.GetFontID(window.g_font_loader, oFontStyle); var _find_index = _id.id + "_teamlab_" + _id.faceIndex; if (this.CurrentFontName != _find_index) { var _find = this.map_fonts[_find_index]; if (_find !== undefined) { this.CurrentFontInfo = _find; } else { _find = new CFontCharMap(); _find.Name = family; _find.Id = _id.id; _find.FaceIndex = _id.faceIndex; _find.IsEmbedded = (font_info.type == FONT_TYPE_EMBEDDED); this.CurrentFontInfo = _find; this.map_fonts[_find_index] = _find; } this.CurrentFontName = _find_index; } }, AddChar: function (char1) { var _find = "" + char1.charCodeAt(0); var map_ind = this.CurrentFontInfo.CharArray[_find]; if (map_ind === undefined) { this.CurrentFontInfo.CharArray[_find] = true; } }, AddChar2: function (char2) { var _find = "" + char2.charCodeAt(0); var map_ind = this.CurrentFontInfo.CharArray[_find]; if (map_ind === undefined) { this.CurrentFontInfo.CharArray[_find] = true; } } };