DocumentServer/OfficeWeb/sdk/Word/Editor/Serialize2.js
2015-04-28 17:59:00 +03:00

12131 lines
495 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2015
*
* 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
*
*/
"use strict";
var c_oSerFormat = {
Version: 5,
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,
SectPr: 31
};
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,
ColorTheme: 28,
Shd: 29,
Vanish: 30
};
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,
headers: 3,
footers: 4,
hdrftrelem: 5,
pageNumType: 6
};
var c_oSerProp_secPrSettingsType = {
titlePg: 0,
EvenAndOddHeaders: 1,
SectionType: 2
};
var c_oSerProp_secPrPageNumType = {
start: 0
};
var c_oSerParType = {
Par: 0,
pPr: 1,
Content: 2,
Table: 3,
sectPr: 4,
Run: 5,
CommentStart: 6,
CommentEnd: 7,
OMathPara: 8,
OMath: 9,
Hyperlink: 10
};
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,
object: 14
};
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,
Chart2: 25
};
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_oSerMarginsType = {
left: 0,
top: 1,
right: 2,
bottom: 3
};
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,
Brk: 5,
CGp: 6,
CGpRule: 7,
Chr: 8,
Count: 9,
CSp: 10,
CtrlPr: 11,
DegHide: 12,
Diff: 13,
EndChr: 14,
Grow: 15,
HideBot: 16,
HideLeft: 17,
HideRight: 18,
HideTop: 19,
MJc: 20,
LimLoc: 21,
Lit: 22,
MaxDist: 23,
McJc: 24,
Mcs: 25,
NoBreak: 26,
Nor: 27,
ObjDist: 28,
OpEmu: 29,
PlcHide: 30,
Pos: 31,
RSp: 32,
RSpRule: 33,
Scr: 34,
SepChr: 35,
Show: 36,
Shp: 37,
StrikeBLTR: 38,
StrikeH: 39,
StrikeTLBR: 40,
StrikeV: 41,
Sty: 42,
SubHide: 43,
SupHide: 44,
Transp: 45,
Type: 46,
VertJc: 47,
ZeroAsc: 48,
ZeroDesc: 49,
ZeroWid: 50,
Column: 51,
Row: 52
};
var c_oSer_OMathBottomNodesValType = {
Val: 0,
AlnAt: 1
};
var c_oSer_OMathChrType = {
Chr: 0,
BegChr: 1,
EndChr: 2,
SepChr: 3
};
var c_oSer_OMathContentType = {
Acc: 0,
AccPr: 1,
ArgPr: 2,
Bar: 3,
BarPr: 4,
BorderBox: 5,
BorderBoxPr: 6,
Box: 7,
BoxPr: 8,
Deg: 9,
Den: 10,
Delimiter: 11,
DelimiterPr: 12,
Element: 13,
EqArr: 14,
EqArrPr: 15,
FName: 16,
Fraction: 17,
FPr: 18,
Func: 19,
FuncPr: 20,
GroupChr: 21,
GroupChrPr: 22,
Lim: 23,
LimLow: 24,
LimLowPr: 25,
LimUpp: 26,
LimUppPr: 27,
Matrix: 28,
MathPr: 29,
Mc: 30,
McPr: 31,
MPr: 32,
Mr: 33,
Nary: 34,
NaryPr: 35,
Num: 36,
OMath: 37,
OMathPara: 38,
OMathParaPr: 39,
Phant: 40,
PhantPr: 41,
MRun: 42,
Rad: 43,
RadPr: 44,
RPr: 45,
MRPr: 46,
SPre: 47,
SPrePr: 48,
SSub: 49,
SSubPr: 50,
SSubSup: 51,
SSubSupPr: 52,
SSup: 53,
SSupPr: 54,
Sub: 55,
Sup: 56,
MText: 57,
CtrlPr: 58,
pagebreak: 59,
linebreak: 60,
Run: 61
};
var c_oSer_HyperlinkType = {
Content: 0,
Link: 1,
Anchor: 2,
Tooltip: 3,
History: 4,
DocLocation: 5,
TgtFrame: 6
};
var c_oSer_ColorThemeType = {
Auto: 0,
Color: 1,
Tint: 2,
Shade: 3
};
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 ESectionMark = {
sectionmarkContinious: 0,
sectionmarkEvenPage: 1,
sectionmarkNextColumn: 2,
sectionmarkNextPage: 3,
sectionmarkOddPage: 4
};
var EThemeColor = {
themecolorAccent1: 0,
themecolorAccent2: 1,
themecolorAccent3: 2,
themecolorAccent4: 3,
themecolorAccent5: 4,
themecolorAccent6: 5,
themecolorBackground1: 6,
themecolorBackground2: 7,
themecolorDark1: 8,
themecolorDark2: 9,
themecolorFollowedHyperlink: 10,
themecolorHyperlink: 11,
themecolorLight1: 12,
themecolorLight2: 13,
themecolorNone: 14,
themecolorText1: 15,
themecolorText2: 16
};
var EWrap = {
wrapAround: 0,
wrapAuto: 1,
wrapNone: 2,
wrapNotBeside: 3,
wrapThrough: 4,
wrapTight: 5
};
var g_sErrorCharCountMessage = "g_sErrorCharCountMessage";
var g_nErrorCharCount = 30000;
var g_nErrorParagraphCount = 1000;
function CreateThemeUnifill(color, tint, shade) {
var ret = null;
if (null != color) {
var id;
switch (color) {
case EThemeColor.themecolorAccent1:
id = 0;
break;
case EThemeColor.themecolorAccent2:
id = 1;
break;
case EThemeColor.themecolorAccent3:
id = 2;
break;
case EThemeColor.themecolorAccent4:
id = 3;
break;
case EThemeColor.themecolorAccent5:
id = 4;
break;
case EThemeColor.themecolorAccent6:
id = 5;
break;
case EThemeColor.themecolorBackground1:
id = 6;
break;
case EThemeColor.themecolorBackground2:
id = 7;
break;
case EThemeColor.themecolorDark1:
id = 8;
break;
case EThemeColor.themecolorDark2:
id = 9;
break;
case EThemeColor.themecolorFollowedHyperlink:
id = 10;
break;
case EThemeColor.themecolorHyperlink:
id = 11;
break;
case EThemeColor.themecolorLight1:
id = 12;
break;
case EThemeColor.themecolorLight2:
id = 13;
break;
case EThemeColor.themecolorNone:
id = 14;
break;
case EThemeColor.themecolorText1:
id = 15;
break;
case EThemeColor.themecolorText2:
id = 16;
break;
}
ret = new CUniFill();
ret.setFill(new CSolidFill());
ret.fill.setColor(new CUniColor());
ret.fill.color.setColor(new CSchemeColor());
ret.fill.color.color.setId(id);
if (null != tint || null != shade) {
ret.fill.color.setMods(new CColorModifiers());
var mod;
if (null != tint) {
mod = new CColorMod();
mod.setName("wordTint");
mod.setVal(tint);
ret.fill.color.Mods.addMod(mod);
}
if (null != shade) {
mod = new CColorMod();
mod.setName("wordShade");
mod.setVal(shade);
ret.fill.color.Mods.addMod(mod);
}
}
}
return ret;
}
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.Write2 = function () {
window.global_pptx_content_writer._Start();
this.WriteMainTable();
window.global_pptx_content_writer._End();
};
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 = {};
this.WriteTable(c_oSerTableTypes.Comments, new BinaryCommentsTableWriter(this.memory, this.Document, oMapCommentId));
var oNumIdMap = {};
this.WriteTable(c_oSerTableTypes.Numbering, new BinaryNumberingTableWriter(this.memory, this.Document, oNumIdMap));
this.WriteTable(c_oSerTableTypes.Style, new BinaryStyleTableWriter(this.memory, this.Document, oNumIdMap));
var oBinaryHeaderFooterTableWriter = new BinaryHeaderFooterTableWriter(this.memory, this.Document, oNumIdMap, oMapCommentId);
this.WriteTable(c_oSerTableTypes.Document, new BinaryDocumentTableWriter(this.memory, this.Document, oMapCommentId, oNumIdMap, null, oBinaryHeaderFooterTableWriter));
this.WriteTable(c_oSerTableTypes.HdrFtr, oBinaryHeaderFooterTableWriter);
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 = {};
this.copyParams.nNumIdIndex = 1;
this.copyParams.oUsedStyleMap = {};
this.copyParams.bdtw = new BinaryDocumentTableWriter(this.memory, this.Document, null, this.copyParams.oUsedNumIdMap, this.copyParams, null);
this.copyParams.nDocumentWriterTablePos = 0;
this.copyParams.nDocumentWriterPos = 0;
this.WriteMainTableStart();
var oMapCommentId = {};
this.WriteTable(c_oSerTableTypes.Comments, new BinaryCommentsTableWriter(this.memory, this.Document, oMapCommentId));
this.copyParams.bdtw.oMapCommentId = oMapCommentId;
this.copyParams.nDocumentWriterTablePos = this.WriteTableStart(c_oSerTableTypes.Document);
this.copyParams.nDocumentWriterPos = this.bs.WriteItemWithLengthStart();
};
this.CopyParagraph = function (Item, selectedAll) {
if (this.copyParams.bLockCopyElems > 0) {
return;
}
var oThis = this;
this.bs.WriteItem(c_oSerParType.Par, function () {
oThis.copyParams.bdtw.WriteParapraph(Item, false, selectedAll);
});
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, {},
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, null);
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 (var styleId in oStyleToWrite) {
var style = styles[styleId];
var bDefault = false;
if (styleId == oDefault.Character) {
bDefault = true;
} else {
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 (styletype_Table == style.Type) {
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 = [];
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.tblstyleoverridetypeNwCell,
val: style.TableTLCell
});
}
if (null != style.TableTRCell) {
aTblStylePr.push({
type: ETblStyleOverrideType.tblstyleoverridetypeNeCell,
val: style.TableTRCell
});
}
if (null != style.TableBLCell) {
aTblStylePr.push({
type: ETblStyleOverrideType.tblstyleoverridetypeSwCell,
val: style.TableBLCell
});
}
if (null != style.TableBRCell) {
aTblStylePr.push({
type: ETblStyleOverrideType.tblstyleoverridetypeSeCell,
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, oBinaryHeaderFooterTableWriter) {
this.memory = memory;
this.oNumIdMap = oNumIdMap;
this.oBinaryHeaderFooterTableWriter = oBinaryHeaderFooterTableWriter;
this.bs = new BinaryCommonWriter(this.memory);
this.brPrs = new Binary_rPrWriter(this.memory);
this.Write_pPr = function (pPr, pPr_rPr, SectPr, oDocument) {
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);
});
}
if (null != SectPr && null != oDocument) {
this.memory.WriteByte(c_oSerProp_pPrType.SectPr);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function () {
oThis.WriteSectPr(SectPr, oDocument);
});
}
};
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) {
var nFormatWrap = EWrap.None;
switch (oFramePr.Wrap) {
case wrap_Around:
nFormatWrap = EWrap.wrapAround;
break;
case wrap_Auto:
nFormatWrap = EWrap.wrapAuto;
break;
case wrap_None:
nFormatWrap = EWrap.wrapNone;
break;
case wrap_NotBeside:
nFormatWrap = EWrap.wrapNotBeside;
break;
case wrap_Through:
nFormatWrap = EWrap.wrapThrough;
break;
case wrap_Tight:
nFormatWrap = EWrap.wrapTight;
break;
}
this.memory.WriteByte(c_oSer_FramePrType.Wrap);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(nFormatWrap);
}
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);
}
};
this.WriteSectPr = function (sectPr, oDocument) {
var oThis = this;
this.bs.WriteItem(c_oSerProp_secPrType.pgSz, function () {
oThis.WritePageSize(sectPr, oDocument);
});
this.bs.WriteItem(c_oSerProp_secPrType.pgMar, function () {
oThis.WritePageMargin(sectPr, oDocument);
});
this.bs.WriteItem(c_oSerProp_secPrType.setting, function () {
oThis.WritePageSetting(sectPr, oDocument);
});
if (null != sectPr.HeaderFirst || null != sectPr.HeaderEven || null != sectPr.HeaderDefault) {
this.bs.WriteItem(c_oSerProp_secPrType.headers, function () {
oThis.WriteHdr(sectPr);
});
}
if (null != sectPr.FooterFirst || null != sectPr.FooterEven || null != sectPr.FooterDefault) {
this.bs.WriteItem(c_oSerProp_secPrType.footers, function () {
oThis.WriteFtr(sectPr);
});
}
var PageNumType = sectPr.Get_PageNum_Start();
if (-1 != PageNumType) {
this.bs.WriteItem(c_oSerProp_secPrType.pageNumType, function () {
oThis.WritePageNumType(PageNumType);
});
}
};
this.WritePageSize = function (sectPr, oDocument) {
var oThis = this;
this.memory.WriteByte(c_oSer_pgSzType.W);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(sectPr.Get_PageWidth());
this.memory.WriteByte(c_oSer_pgSzType.H);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(sectPr.Get_PageHeight());
this.memory.WriteByte(c_oSer_pgSzType.Orientation);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(sectPr.Get_Orientation());
};
this.WritePageMargin = function (sectPr, oDocument) {
this.memory.WriteByte(c_oSer_pgMarType.Left);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(sectPr.Get_PageMargin_Left());
this.memory.WriteByte(c_oSer_pgMarType.Top);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(sectPr.Get_PageMargin_Top());
this.memory.WriteByte(c_oSer_pgMarType.Right);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(sectPr.Get_PageMargin_Right());
this.memory.WriteByte(c_oSer_pgMarType.Bottom);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(sectPr.Get_PageMargin_Bottom());
this.memory.WriteByte(c_oSer_pgMarType.Header);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(sectPr.Get_PageMargins_Header());
this.memory.WriteByte(c_oSer_pgMarType.Footer);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(sectPr.Get_PageMargins_Footer());
};
this.WritePageSetting = function (sectPr, oDocument) {
var titlePg = sectPr.Get_TitlePage();
if (titlePg) {
this.memory.WriteByte(c_oSerProp_secPrSettingsType.titlePg);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(titlePg);
}
if (EvenAndOddHeaders) {
this.memory.WriteByte(c_oSerProp_secPrSettingsType.EvenAndOddHeaders);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(EvenAndOddHeaders);
}
var nFormatType = null;
switch (sectPr.Get_Type()) {
case section_type_Continuous:
nFormatType = ESectionMark.sectionmarkContinious;
break;
case section_type_EvenPage:
nFormatType = ESectionMark.sectionmarkEvenPage;
break;
case section_type_Column:
nFormatType = ESectionMark.sectionmarkNextColumn;
break;
case section_type_NextPage:
nFormatType = ESectionMark.sectionmarkNextPage;
break;
case section_type_OddPage:
nFormatType = ESectionMark.sectionmarkOddPage;
break;
}
if (null != nFormatType) {
this.memory.WriteByte(c_oSerProp_secPrSettingsType.SectionType);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(nFormatType);
}
};
this.WriteHdr = function (sectPr) {
var oThis = this;
var nIndex;
if (null != this.oBinaryHeaderFooterTableWriter) {
if (null != sectPr.HeaderDefault) {
nIndex = this.oBinaryHeaderFooterTableWriter.aHeaders.length;
this.bs.WriteItem(c_oSerProp_secPrType.hdrftrelem, function () {
oThis.memory.WriteLong(nIndex);
});
this.oBinaryHeaderFooterTableWriter.aHeaders.push({
type: c_oSerHdrFtrTypes.HdrFtr_Odd,
elem: sectPr.HeaderDefault
});
}
if (null != sectPr.HeaderEven) {
nIndex = this.oBinaryHeaderFooterTableWriter.aHeaders.length;
this.bs.WriteItem(c_oSerProp_secPrType.hdrftrelem, function () {
oThis.memory.WriteLong(nIndex);
});
this.oBinaryHeaderFooterTableWriter.aHeaders.push({
type: c_oSerHdrFtrTypes.HdrFtr_Even,
elem: sectPr.HeaderEven
});
}
if (null != sectPr.HeaderFirst) {
nIndex = this.oBinaryHeaderFooterTableWriter.aHeaders.length;
this.bs.WriteItem(c_oSerProp_secPrType.hdrftrelem, function () {
oThis.memory.WriteLong(nIndex);
});
this.oBinaryHeaderFooterTableWriter.aHeaders.push({
type: c_oSerHdrFtrTypes.HdrFtr_First,
elem: sectPr.HeaderFirst
});
}
}
};
this.WriteFtr = function (sectPr) {
var oThis = this;
var nIndex;
if (null != this.oBinaryHeaderFooterTableWriter) {
if (null != sectPr.FooterDefault) {
nIndex = this.oBinaryHeaderFooterTableWriter.aFooters.length;
this.bs.WriteItem(c_oSerProp_secPrType.hdrftrelem, function () {
oThis.memory.WriteLong(nIndex);
});
this.oBinaryHeaderFooterTableWriter.aFooters.push({
type: c_oSerHdrFtrTypes.HdrFtr_Odd,
elem: sectPr.FooterDefault
});
}
if (null != sectPr.FooterEven) {
nIndex = this.oBinaryHeaderFooterTableWriter.aFooters.length;
this.bs.WriteItem(c_oSerProp_secPrType.hdrftrelem, function () {
oThis.memory.WriteLong(nIndex);
});
this.oBinaryHeaderFooterTableWriter.aFooters.push({
type: c_oSerHdrFtrTypes.HdrFtr_Even,
elem: sectPr.FooterEven
});
}
if (null != sectPr.FooterFirst) {
nIndex = this.oBinaryHeaderFooterTableWriter.aFooters.length;
this.bs.WriteItem(c_oSerProp_secPrType.hdrftrelem, function () {
oThis.memory.WriteLong(nIndex);
});
this.oBinaryHeaderFooterTableWriter.aFooters.push({
type: c_oSerHdrFtrTypes.HdrFtr_First,
elem: sectPr.FooterFirst
});
}
}
};
this.WritePageNumType = function (PageNumType) {
var oThis = this;
this.bs.WriteItem(c_oSerProp_secPrPageNumType.start, function () {
oThis.memory.WriteLong(PageNumType);
});
};
}
function Binary_rPrWriter(memory) {
this.memory = memory;
this.bs = new BinaryCommonWriter(this.memory);
this.Write_rPr = function (rPr) {
var _this = this;
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);
}
var color = null;
if (null != rPr.Color) {
color = rPr.Color;
} else {
if (null != rPr.Unifill) {
var doc = editor.WordControl.m_oLogicDocument;
rPr.Unifill.check(doc.Get_Theme(), doc.Get_ColorMap());
var RGBA = rPr.Unifill.getRGBAColor();
color = new CDocumentColor(RGBA.R, RGBA.G, RGBA.B);
}
}
if (null != color && !color.Auto) {
this.bs.WriteColor(c_oSerProp_rPrType.Color, 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]);
}
}
if (null != rPr.Unifill || (null != rPr.Color && rPr.Color.Auto)) {
this.memory.WriteByte(c_oSerProp_rPrType.ColorTheme);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function () {
_this.bs.WriteColorTheme(rPr.Unifill, rPr.Color);
});
}
if (null != rPr.Shd) {
this.memory.WriteByte(c_oSerProp_rPrType.Shd);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.bs.WriteItemWithLength(function () {
_this.bs.WriteShd(rPr.Shd);
});
}
if (null != rPr.Vanish) {
this.memory.WriteByte(c_oSerProp_rPrType.Vanish);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(rPr.Vanish);
}
};
}
function Binary_oMathWriter(memory, oMathPara) {
this.memory = memory;
this.bs = new BinaryCommonWriter(this.memory);
this.brPrs = new Binary_rPrWriter(this.memory);
this.WriteMathElem = function (item) {
var oThis = this;
switch (item.Type) {
case para_Math_Composition:
switch (item.kind) {
case MATH_ACCENT:
this.bs.WriteItem(c_oSer_OMathContentType.Acc, function () {
oThis.WriteAcc(item);
});
break;
case MATH_BAR:
this.bs.WriteItem(c_oSer_OMathContentType.Bar, function () {
oThis.WriteBar(item);
});
break;
case MATH_BORDER_BOX:
this.bs.WriteItem(c_oSer_OMathContentType.BorderBox, function () {
oThis.WriteBorderBox(item);
});
break;
case MATH_BOX:
this.bs.WriteItem(c_oSer_OMathContentType.Box, function () {
oThis.WriteBox(item);
});
break;
case "CCtrlPr":
this.bs.WriteItem(c_oSer_OMathContentType.CtrlPr, function () {
oThis.WriteCtrlPr(item);
});
break;
case MATH_DELIMITER:
this.bs.WriteItem(c_oSer_OMathContentType.Delimiter, function () {
oThis.WriteDelimiter(item);
});
break;
case MATH_EQ_ARRAY:
this.bs.WriteItem(c_oSer_OMathContentType.EqArr, function () {
oThis.WriteEqArr(item);
});
break;
case MATH_FRACTION:
this.bs.WriteItem(c_oSer_OMathContentType.Fraction, function () {
oThis.WriteFraction(item);
});
break;
case MATH_FUNCTION:
this.bs.WriteItem(c_oSer_OMathContentType.Func, function () {
oThis.WriteFunc(item);
});
break;
case MATH_GROUP_CHARACTER:
this.bs.WriteItem(c_oSer_OMathContentType.GroupChr, function () {
oThis.WriteGroupChr(item);
});
break;
case MATH_LIMIT:
if (LIMIT_LOW == item.Pr.type) {
this.bs.WriteItem(c_oSer_OMathContentType.LimLow, function () {
oThis.WriteLimLow(item);
});
} else {
if (LIMIT_UP == item.Pr.type) {
this.bs.WriteItem(c_oSer_OMathContentType.LimUpp, function () {
oThis.WriteLimUpp(item);
});
}
}
break;
case MATH_MATRIX:
this.bs.WriteItem(c_oSer_OMathContentType.Matrix, function () {
oThis.WriteMatrix(item);
});
break;
case MATH_NARY:
this.bs.WriteItem(c_oSer_OMathContentType.Nary, function () {
oThis.WriteNary(item);
});
break;
case "OMath":
this.bs.WriteItem(c_oSer_OMathContentType.OMath, function () {
oThis.WriteArgNodes(item);
});
break;
case "OMathPara":
this.bs.WriteItem(c_oSer_OMathContentType.OMathPara, function () {
oThis.WriteOMathPara(item);
});
break;
case MATH_PHANTOM:
this.bs.WriteItem(c_oSer_OMathContentType.Phant, function () {
oThis.WritePhant(item);
});
break;
case MATH_RUN:
this.bs.WriteItem(c_oSer_OMathContentType.MRun, function () {
oThis.WriteMRun(item);
});
break;
case MATH_RADICAL:
this.bs.WriteItem(c_oSer_OMathContentType.Rad, function () {
oThis.WriteRad(item);
});
break;
case MATH_DEGREESubSup:
if (DEGREE_PreSubSup == item.Pr.type) {
this.bs.WriteItem(c_oSer_OMathContentType.SPre, function () {
oThis.WriteSPre(item);
});
} else {
if (DEGREE_SubSup == item.Pr.type) {
this.bs.WriteItem(c_oSer_OMathContentType.SSubSup, function () {
oThis.WriteSSubSup(item);
});
}
}
break;
case MATH_DEGREE:
if (DEGREE_SUBSCRIPT == item.Pr.type) {
this.bs.WriteItem(c_oSer_OMathContentType.SSub, function () {
oThis.WriteSSub(item);
});
} else {
if (DEGREE_SUPERSCRIPT == item.Pr.type) {
this.bs.WriteItem(c_oSer_OMathContentType.SSup, function () {
oThis.WriteSSup(item);
});
}
}
break;
}
break;
case para_Math_Text:
this.bs.WriteItem(c_oSer_OMathContentType.MText, function () {
oThis.memory.WriteString2(convertUnicodeToUTF16([item.value]));
});
break;
case para_Math_Run:
this.bs.WriteItem(c_oSer_OMathContentType.MRun, function () {
oThis.WriteMRun(item);
});
break;
default:
break;
}
},
this.WriteArgNodes = function (oElem) {
if (oElem) {
var oThis = this;
var nStart = 0;
var nEnd = oElem.Content.length;
var argSz = oElem.GetArgSize();
if (argSz) {
this.bs.WriteItem(c_oSer_OMathContentType.ArgPr, function () {
oThis.WriteArgPr(argSz);
});
}
for (var i = nStart; i <= nEnd - 1; i++) {
var item = oElem.Content[i];
this.WriteMathElem(item);
}
}
};
this.WriteMRun = function (oMRun) {
var oThis = this;
var props = oMRun.getPropsForWrite();
var oText = "";
var ContentLen = oMRun.Content.length;
for (var CurPos = 0; CurPos < ContentLen; CurPos++) {
var Item = oMRun.Content[CurPos];
switch (Item.Type) {
case para_Math_Ampersand:
oText += "&";
break;
case para_Math_Text:
oText += convertUnicodeToUTF16([Item.value]);
break;
case para_Space:
case para_Tab:
oText += " ";
break;
}
}
this.bs.WriteItem(c_oSer_OMathContentType.RPr, function () {
oThis.brPrs.Write_rPr(props.wRPrp);
});
this.bs.WriteItem(c_oSer_OMathContentType.MRPr, function () {
oThis.WriteMRPr(props.mathRPrp);
});
this.bs.WriteItem(c_oSer_OMathContentType.MText, function () {
oThis.WriteMText(oText.toString());
});
};
this.WriteMText = function (sText) {
if ("" != sText) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.memory.WriteString2(sText);
}
};
this.WriteAcc = function (oAcc) {
var oThis = this;
var oElem = oAcc.getBase();
var props = oAcc.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.AccPr, function () {
oThis.WriteAccPr(props, oAcc);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteAccPr = function (props, oAcc) {
var oThis = this;
if (null != props.chr) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Chr, function () {
oThis.WriteChr(props.chr);
});
}
if (null != oAcc.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oAcc);
});
}
};
this.WriteAln = function (Aln) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(Aln);
};
this.WriteAlnScr = function (AlnScr) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(AlnScr);
};
this.WriteArgPr = function (nArgSz) {
var oThis = this;
this.bs.WriteItem(c_oSer_OMathBottomNodesType.ArgSz, function () {
oThis.WriteArgSz(nArgSz);
});
};
this.WriteArgSz = function (ArgSz) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(ArgSz);
};
this.WriteBar = function (oBar) {
var oThis = this;
var oElem = oBar.getBase();
var props = oBar.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.BarPr, function () {
oThis.WriteBarPr(props, oBar);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteBarPr = function (props, oBar) {
var oThis = this;
if (null != props.pos) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Pos, function () {
oThis.WritePos(props.pos);
});
}
if (null != oBar.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oBar);
});
}
};
this.WriteBaseJc = function (BaseJc) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscYAlign.Center;
switch (BaseJc) {
case BASEJC_BOTTOM:
val = c_oAscYAlign.Bottom;
break;
case BASEJC_CENTER:
val = c_oAscYAlign.Center;
break;
case BASEJC_TOP:
val = c_oAscYAlign.Top;
}
this.memory.WriteByte(val);
};
this.WriteBorderBox = function (oBorderBox) {
var oThis = this;
var oElem = oBorderBox.getBase();
var props = oBorderBox.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.BorderBoxPr, function () {
oThis.WriteBorderBoxPr(props, oBorderBox);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteBorderBoxPr = function (props, oBorderBox) {
var oThis = this;
if (null != props.hideBot) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.HideBot, function () {
oThis.WriteHideBot(props.hideBot);
});
}
if (null != props.hideLeft) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.HideLeft, function () {
oThis.WriteHideLeft(props.hideLeft);
});
}
if (null != props.hideRight) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.HideRight, function () {
oThis.WriteHideRight(props.hideRight);
});
}
if (null != props.hideTop) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.HideTop, function () {
oThis.WriteHideTop(props.hideTop);
});
}
if (null != props.strikeBLTR) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.StrikeBLTR, function () {
oThis.WriteStrikeBLTR(props.strikeBLTR);
});
}
if (null != props.strikeH) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.StrikeH, function () {
oThis.WriteStrikeH(props.strikeH);
});
}
if (null != props.strikeTLBR) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.StrikeTLBR, function () {
oThis.WriteStrikeTLBR(props.strikeTLBR);
});
}
if (null != props.strikeV) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.StrikeV, function () {
oThis.WriteStrikeV(props.strikeV);
});
}
if (null != oBorderBox.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oBorderBox);
});
}
};
this.WriteBox = function (oBox) {
var oThis = this;
var oElem = oBox.getBase();
var props = oBox.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.BoxPr, function () {
oThis.WriteBoxPr(props, oBox);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteBoxPr = function (props, oBox) {
var oThis = this;
if (null != props.aln) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Aln, function () {
oThis.WriteAln(props.aln);
});
}
if (null != props.brk) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Brk, function () {
oThis.WriteBrk(props.brk);
});
}
if (null != props.diff) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Diff, function () {
oThis.WriteDiff(props.diff);
});
}
if (null != props.noBreak) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.NoBreak, function () {
oThis.WriteNoBreak(props.noBreak);
});
}
if (null != props.opEmu) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.OpEmu, function () {
oThis.WriteOpEmu(props.opEmu);
});
}
if (null != oBox.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oBox);
});
}
};
this.WriteBrk = function (Brk) {
if (Brk.alnAt) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.AlnAt);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(Brk.alnAt);
} else {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(false);
}
};
this.WriteCGp = function (CGp) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(CGp);
};
this.WriteCGpRule = function (CGpRule) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(CGpRule);
};
this.WriteChr = function (Chr) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Variable);
if (OPERATOR_EMPTY === Chr) {
this.memory.WriteString2("");
} else {
this.memory.WriteString2(convertUnicodeToUTF16([Chr]));
}
};
this.WriteCount = function (Count) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(Count);
};
this.WriteCSp = function (CSp) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(CSp);
};
this.WriteCtrlPr = function (oElem) {
var oThis = this;
this.bs.WriteItem(c_oSerRunType.rPr, function () {
oThis.brPrs.Write_rPr(oElem.CtrPrp);
});
};
this.WriteDegHide = function (DegHide) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(DegHide);
};
this.WriteDiff = function (Diff) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(Diff);
};
this.WriteDelimiter = function (oDelimiter) {
var oThis = this;
var nStart = 0;
var nEnd = oDelimiter.nCol;
var props = oDelimiter.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.DelimiterPr, function () {
oThis.WriteDelimiterPr(props, oDelimiter);
});
for (var i = nStart; i < nEnd; i++) {
var oElem = oDelimiter.getBase(i);
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
}
};
this.WriteDelimiterPr = function (props, oDelimiter) {
var oThis = this;
if (null != props.column) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Column, function () {
oThis.WriteCount(props.column);
});
}
if (null != props.begChr) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.BegChr, function () {
oThis.WriteChr(props.begChr);
});
}
if (null != props.endChr) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.EndChr, function () {
oThis.WriteChr(props.endChr);
});
}
if (null != props.grow) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Grow, function () {
oThis.WriteGrow(props.grow);
});
}
if (null != props.sepChr) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.SepChr, function () {
oThis.WriteChr(props.sepChr);
});
}
if (null != props.shp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Shp, function () {
oThis.WriteShp(props.shp);
});
}
if (null != oDelimiter.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oDelimiter);
});
}
};
this.WriteEqArr = function (oEqArr) {
var oThis = this;
var nStart = 0;
var nEnd = oEqArr.elements.length;
var props = oEqArr.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.EqArrPr, function () {
oThis.WriteEqArrPr(props, oEqArr);
});
for (var i = nStart; i < nEnd; i++) {
var oElem = oEqArr.getElement(i);
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
}
};
this.WriteEqArrPr = function (props, oEqArr) {
var oThis = this;
if (null != props.row) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Row, function () {
oThis.WriteCount(props.row);
});
}
if (null != props.baseJc) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.BaseJc, function () {
oThis.WriteBaseJc(props.baseJc);
});
}
if (null != props.maxDist) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.MaxDist, function () {
oThis.WriteMaxDist(props.maxDist);
});
}
if (null != props.objDist) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.ObjDist, function () {
oThis.WriteObjDist(props.objDist);
});
}
if (null != props.rSp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.RSp, function () {
oThis.WriteRSp(props.rSp);
});
}
if (null != props.rSpRule) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.RSpRule, function () {
oThis.WriteRSpRule(props.rSpRule);
});
}
if (null != oEqArr.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oEqArr);
});
}
};
this.WriteFraction = function (oFraction) {
var oThis = this;
var oDen = oFraction.getDenominator();
var oNum = oFraction.getNumerator();
var props = oFraction.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.FPr, function () {
oThis.WriteFPr(props, oFraction);
});
this.bs.WriteItem(c_oSer_OMathContentType.Den, function () {
oThis.WriteArgNodes(oDen);
});
this.bs.WriteItem(c_oSer_OMathContentType.Num, function () {
oThis.WriteArgNodes(oNum);
});
};
this.WriteFPr = function (props, oFraction) {
var oThis = this;
if (null != props.type) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Type, function () {
oThis.WriteType(props.type);
});
}
if (null != oFraction.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oFraction);
});
}
};
this.WriteFunc = function (oFunc) {
var oThis = this;
var oFName = oFunc.getFName();
var oElem = oFunc.getArgument();
this.bs.WriteItem(c_oSer_OMathContentType.FuncPr, function () {
oThis.WriteFuncPr(oFunc);
});
this.bs.WriteItem(c_oSer_OMathContentType.FName, function () {
oThis.WriteArgNodes(oFName);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteFuncPr = function (oFunc) {
var oThis = this;
if (null != oFunc.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oFunc);
});
}
};
this.WriteGroupChr = function (oGroupChr) {
var oThis = this;
var oElem = oGroupChr.getBase();
var props = oGroupChr.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.GroupChrPr, function () {
oThis.WriteGroupChrPr(props, oGroupChr);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteGroupChrPr = function (props, oGroupChr) {
var oThis = this;
if (null != props.chr) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Chr, function () {
oThis.WriteChr(props.chr);
});
}
if (null != props.pos) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Pos, function () {
oThis.WritePos(props.pos);
});
}
if (null != props.vertJc) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.VertJc, function () {
oThis.WriteVertJc(props.vertJc);
});
}
if (null != oGroupChr.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oGroupChr);
});
}
};
this.WriteGrow = function (Grow) {
if (!Grow) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(Grow);
}
};
this.WriteHideBot = function (HideBot) {
if (HideBot) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(HideBot);
}
};
this.WriteHideLeft = function (HideLeft) {
if (HideLeft) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(HideLeft);
}
};
this.WriteHideRight = function (HideRight) {
if (HideRight) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(HideRight);
}
};
this.WriteHideTop = function (HideTop) {
if (HideTop) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(HideTop);
}
};
this.WriteLimLoc = function (LimLoc) {
if (LimLoc != 1) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscLimLoc.SubSup;
switch (LimLoc) {
case NARY_SubSup:
val = c_oAscLimLoc.SubSup;
break;
case NARY_UndOvr:
val = c_oAscLimLoc.UndOvr;
}
this.memory.WriteByte(val);
}
};
this.WriteLimLow = function (oLimLow) {
var oThis = this;
var oElem = oLimLow.getFName();
var oLim = oLimLow.getIterator();
this.bs.WriteItem(c_oSer_OMathContentType.LimLowPr, function () {
oThis.WriteLimLowPr(oLimLow);
});
this.bs.WriteItem(c_oSer_OMathContentType.Lim, function () {
oThis.WriteArgNodes(oLim);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteLimLowPr = function (oLimLow) {
var oThis = this;
if (null != oLimLow.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oLimLow);
});
}
};
this.WriteLimUpp = function (oLimUpp) {
var oThis = this;
var oElem = oLimUpp.getFName();
var oLim = oLimUpp.getIterator();
this.bs.WriteItem(c_oSer_OMathContentType.LimUppPr, function () {
oThis.WriteLimUppPr(oLimUpp);
});
this.bs.WriteItem(c_oSer_OMathContentType.Lim, function () {
oThis.WriteArgNodes(oLim);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteLimUppPr = function (oLimUpp) {
var oThis = this;
if (null != oLimUpp.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oLimUpp);
});
}
};
this.WriteLit = function (Lit) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(Lit);
};
this.WriteMaxDist = function (MaxDist) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(MaxDist);
};
this.WriteMatrix = function (oMatrix) {
var oThis = this;
var nStart = 0;
var nEnd = oMatrix.nRow;
var props = oMatrix.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.MPr, function () {
oThis.WriteMPr(props, oMatrix);
});
for (var i = nStart; i < nEnd; i++) {
this.bs.WriteItem(c_oSer_OMathContentType.Mr, function () {
oThis.WriteMr(oMatrix, i);
});
}
};
this.WriteMc = function (props) {
var oThis = this;
this.bs.WriteItem(c_oSer_OMathContentType.McPr, function () {
oThis.WriteMcPr(props);
});
};
this.WriteMJc = function (MJc) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscXAlign.Left;
switch (MJc) {
case JC_CENTER:
val = c_oAscMathJc.Center;
break;
case JC_CENTERGROUP:
val = c_oAscMathJc.CenterGroup;
break;
case JC_LEFT:
val = c_oAscMathJc.Left;
break;
case JC_RIGHT:
val = c_oAscMathJc.Right;
}
this.memory.WriteByte(val);
};
this.WriteMcPr = function (props) {
var oThis = this;
if (null != props.mcJc) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.McJc, function () {
oThis.WriteMcJc(props.mcJc);
});
}
if (null != props.count) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Count, function () {
oThis.WriteCount(props.count);
});
}
};
this.WriteMcJc = function (MJc) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(MJc);
};
this.WriteMcs = function (props) {
var oThis = this;
for (var Index = 0, Count = props.mcs.length; Index < Count; Index++) {
this.bs.WriteItem(c_oSer_OMathContentType.Mc, function () {
oThis.WriteMc(props.mcs[Index]);
});
}
};
this.WriteMPr = function (props, oMatrix) {
var oThis = this;
if (null != props.row) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Row, function () {
oThis.WriteCount(props.row);
});
}
if (null != props.baseJc) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.BaseJc, function () {
oThis.WriteBaseJc(props.baseJc);
});
}
if (null != props.cGp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CGp, function () {
oThis.WriteCGp(props.cGp);
});
}
if (null != props.cGpRule) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CGpRule, function () {
oThis.WriteCGpRule(props.cGpRule);
});
}
if (null != props.cSp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CSp, function () {
oThis.WriteCSp(props.cSp);
});
}
if (null != props.mcs) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Mcs, function () {
oThis.WriteMcs(props);
});
}
if (null != props.plcHide) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.PlcHide, function () {
oThis.WritePlcHide(props.plcHide);
});
}
if (null != props.rSp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.RSp, function () {
oThis.WriteRSp(props.rSp);
});
}
if (null != props.rSpRule) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.RSpRule, function () {
oThis.WriteRSpRule(props.rSpRule);
});
}
if (null != oMatrix.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oMatrix);
});
}
};
this.WriteMr = function (oMatrix, nRow) {
var oThis = this;
var nStart = 0;
var nEnd = oMatrix.nCol;
for (var i = nStart; i < nEnd; i++) {
var oElem = oMatrix.getElement(nRow, i);
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
}
};
this.WriteNary = function (oNary) {
var oThis = this;
var oElem = oNary.getBase();
var oSub = oNary.getLowerIterator();
var oSup = oNary.getUpperIterator();
var props = oNary.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.NaryPr, function () {
oThis.WriteNaryPr(props, oNary);
});
this.bs.WriteItem(c_oSer_OMathContentType.Sub, function () {
oThis.WriteArgNodes(oSub);
});
this.bs.WriteItem(c_oSer_OMathContentType.Sup, function () {
oThis.WriteArgNodes(oSup);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteNaryPr = function (props, oNary) {
var oThis = this;
if (null != props.chr) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Chr, function () {
oThis.WriteChr(props.chr);
});
}
if (null != props.grow) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Grow, function () {
oThis.WriteGrow(props.grow);
});
}
if (null != props.limLoc) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.LimLoc, function () {
oThis.WriteLimLoc(props.limLoc);
});
}
if (null != props.subHide) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.SubHide, function () {
oThis.WriteSubHide(props.subHide);
});
}
if (null != props.supHide) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.SupHide, function () {
oThis.WriteSupHide(props.supHide);
});
}
if (null != oNary.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oNary);
});
}
};
this.WriteNoBreak = function (NoBreak) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(NoBreak);
};
this.WriteNor = function (Nor) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(Nor);
};
this.WriteObjDist = function (ObjDist) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(ObjDist);
};
this.WriteOMathPara = function (oOMathPara) {
var oThis = this;
var props = {};
oThis.bs.WriteItem(c_oSer_OMathContentType.OMathParaPr, function () {
oThis.WriteOMathParaPr(props);
});
oThis.bs.WriteItem(c_oSer_OMathContentType.OMath, function () {
oThis.WriteArgNodes(oOMathPara.Root);
});
};
this.WriteOMathParaPr = function (props) {
var oThis = this;
if (null != props.mJc) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.MJc, function () {
oThis.WriteMJc(props.mJc);
});
}
};
this.WriteOpEmu = function (OpEmu) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(OpEmu);
};
this.WritePhant = function (oPhant) {
var oThis = this;
var oElem = oPhant.getBase();
var props = oPhant.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.PhantPr, function () {
oThis.WritePhantPr(props, oPhant);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WritePhantPr = function (props, oPhant) {
var oThis = this;
if (null != props.show) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Show, function () {
oThis.WriteShow(props.show);
});
}
if (null != props.transp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Transp, function () {
oThis.WriteTransp(props.transp);
});
}
if (null != props.zeroAsc) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.ZeroAsc, function () {
oThis.WriteZeroAsc(props.zeroAsc);
});
}
if (null != props.zeroDesc) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.ZeroDesc, function () {
oThis.WriteZeroDesc(props.zeroDesc);
});
}
if (null != props.zeroWid) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.ZeroWid, function () {
oThis.WriteZeroWid(props.zeroWid);
});
}
if (null != oPhant.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oPhant);
});
}
};
this.WritePlcHide = function (PlcHide) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(PlcHide);
};
this.WritePos = function (Pos) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscTopBot.Bot;
switch (Pos) {
case LOCATION_BOT:
val = c_oAscTopBot.Bot;
break;
case LOCATION_TOP:
val = c_oAscTopBot.Top;
}
this.memory.WriteByte(val);
};
this.WriteMRPr = function (props) {
var oThis = this;
if (null != props.aln) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Aln, function () {
oThis.WriteAln(props.aln);
});
}
if (null != props.brk) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Brk, function () {
oThis.WriteBrk(props.brk);
});
}
if (null != props.lit) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Lit, function () {
oThis.WriteLit(props.lit);
});
}
if (null != props.nor) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Nor, function () {
oThis.WriteNor(props.nor);
});
}
if (null != props.scr) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Scr, function () {
oThis.WriteScr(props.scr);
});
}
if (null != props.sty) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.Sty, function () {
oThis.WriteSty(props.sty);
});
}
};
this.WriteRad = function (oRad) {
var oThis = this;
var oElem = oRad.getBase();
var oDeg = oRad.getDegree();
var props = oRad.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.RadPr, function () {
oThis.WriteRadPr(props, oRad);
});
this.bs.WriteItem(c_oSer_OMathContentType.Deg, function () {
oThis.WriteArgNodes(oDeg);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteRadPr = function (props, oRad) {
var oThis = this;
if (null != props.degHide) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.DegHide, function () {
oThis.WriteDegHide(props.degHide);
});
}
if (null != oRad.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oRad);
});
}
};
this.WriteRSp = function (RSp) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(RSp);
};
this.WriteRSpRule = function (RSpRule) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(RSpRule);
};
this.WriteScr = function (Scr) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscScript.Roman;
switch (Scr) {
case TXT_DOUBLE_STRUCK:
val = c_oAscScript.DoubleStruck;
break;
case TXT_FRAKTUR:
val = c_oAscScript.Fraktur;
break;
case TXT_MONOSPACE:
val = c_oAscScript.Monospace;
break;
case TXT_ROMAN:
val = c_oAscScript.Roman;
break;
case TXT_SANS_SERIF:
val = c_oAscScript.SansSerif;
break;
case TXT_SCRIPT:
val = c_oAscScript.Script;
break;
}
this.memory.WriteByte(val);
};
this.WriteShow = function (Show) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(Show);
};
this.WriteShp = function (Shp) {
if (Shp != 1) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscShp.Centered;
switch (Shp) {
case DELIMITER_SHAPE_CENTERED:
val = c_oAscShp.Centered;
break;
case DELIMITER_SHAPE_MATH:
val = c_oAscShp.Match;
}
this.memory.WriteByte(val);
}
};
this.WriteSPre = function (oSPre) {
var oThis = this;
var oSub = oSPre.getLowerIterator();
var oSup = oSPre.getUpperIterator();
var oElem = oSPre.getBase();
this.bs.WriteItem(c_oSer_OMathContentType.SPrePr, function () {
oThis.WriteSPrePr(oSPre);
});
this.bs.WriteItem(c_oSer_OMathContentType.Sub, function () {
oThis.WriteArgNodes(oSub);
});
this.bs.WriteItem(c_oSer_OMathContentType.Sup, function () {
oThis.WriteArgNodes(oSup);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
};
this.WriteSPrePr = function (oSPre) {
var oThis = this;
if (null != oSPre.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oSPre);
});
}
};
this.WriteSSub = function (oSSub) {
var oThis = this;
var oSub = oSSub.getLowerIterator();
var oElem = oSSub.getBase();
this.bs.WriteItem(c_oSer_OMathContentType.SSubPr, function () {
oThis.WriteSSubPr(oSSub);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
this.bs.WriteItem(c_oSer_OMathContentType.Sub, function () {
oThis.WriteArgNodes(oSub);
});
};
this.WriteSSubPr = function (oSSub) {
var oThis = this;
if (null != oSSub.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oSSub);
});
}
};
this.WriteSSubSup = function (oSSubSup) {
var oThis = this;
var oSub = oSSubSup.getLowerIterator();
var oSup = oSSubSup.getUpperIterator();
var oElem = oSSubSup.getBase();
var props = oSSubSup.getPropsForWrite();
this.bs.WriteItem(c_oSer_OMathContentType.SSubSupPr, function () {
oThis.WriteSSubSupPr(props, oSSubSup);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
this.bs.WriteItem(c_oSer_OMathContentType.Sub, function () {
oThis.WriteArgNodes(oSub);
});
this.bs.WriteItem(c_oSer_OMathContentType.Sup, function () {
oThis.WriteArgNodes(oSup);
});
};
this.WriteSSubSupPr = function (props, oSSubSup) {
var oThis = this;
if (null != props.alnScr) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.AlnScr, function () {
oThis.WriteAlnScr(props.alnScr);
});
}
if (null != oSSubSup.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oSSubSup);
});
}
};
this.WriteSSup = function (oSSup) {
var oThis = this;
var oSup = oSSup.getUpperIterator();
var oElem = oSSup.getBase();
this.bs.WriteItem(c_oSer_OMathContentType.SSupPr, function () {
oThis.WriteSSupPr(oSSup);
});
this.bs.WriteItem(c_oSer_OMathContentType.Element, function () {
oThis.WriteArgNodes(oElem);
});
this.bs.WriteItem(c_oSer_OMathContentType.Sup, function () {
oThis.WriteArgNodes(oSup);
});
};
this.WriteSSupPr = function (oSSup) {
var oThis = this;
if (null != oSSup.CtrPrp) {
this.bs.WriteItem(c_oSer_OMathBottomNodesType.CtrlPr, function () {
oThis.WriteCtrlPr(oSSup);
});
}
};
this.WriteStrikeBLTR = function (StrikeBLTR) {
if (StrikeBLTR) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(StrikeBLTR);
}
};
this.WriteStrikeH = function (StrikeH) {
if (StrikeH) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(StrikeH);
}
};
this.WriteStrikeTLBR = function (StrikeTLBR) {
if (StrikeTLBR) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(StrikeTLBR);
}
};
this.WriteStrikeV = function (StrikeV) {
if (StrikeV) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(StrikeV);
}
};
this.WriteSty = function (Sty) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscSty.BoldItalic;
switch (Sty) {
case STY_BOLD:
val = c_oAscSty.Bold;
break;
case STY_BI:
val = c_oAscSty.BoldItalic;
break;
case STY_ITALIC:
val = c_oAscSty.Italic;
break;
case STY_PLAIN:
val = c_oAscSty.Plain;
}
this.memory.WriteByte(val);
};
this.WriteSubHide = function (SubHide) {
if (SubHide) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(SubHide);
}
};
this.WriteSupHide = function (SupHide) {
if (SupHide) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(SupHide);
}
};
this.WriteTransp = function (Transp) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(Transp);
};
this.WriteType = function (Type) {
if (Type != 0) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscFType.Bar;
switch (Type) {
case BAR_FRACTION:
val = c_oAscFType.Bar;
break;
case LINEAR_FRACTION:
val = c_oAscFType.Lin;
break;
case NO_BAR_FRACTION:
val = c_oAscFType.NoBar;
break;
case SKEWED_FRACTION:
val = c_oAscFType.Skw;
}
this.memory.WriteByte(val);
}
};
this.WriteVertJc = function (VertJc) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscTopBot.Bot;
switch (VertJc) {
case VJUST_BOT:
val = c_oAscTopBot.Bot;
break;
case VJUST_TOP:
val = c_oAscTopBot.Top;
}
this.memory.WriteByte(val);
};
this.WriteZeroAsc = function (ZeroAsc) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(ZeroAsc);
};
this.WriteZeroDesc = function (ZeroDesc) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(ZeroDesc);
};
this.WriteZeroWid = function (ZeroWid) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteBool(ZeroWid);
};
}
function Binary_tblPrWriter(memory, oNumIdMap) {
this.memory = memory;
this.bs = new BinaryCommonWriter(this.memory);
this.bpPrs = new Binary_pPrWriter(this.memory, oNumIdMap, null);
}
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, oMapCommentId) {
this.memory = memory;
this.Document = doc;
this.oNumIdMap = oNumIdMap;
this.oMapCommentId = oMapCommentId;
this.aHeaders = [];
this.aFooters = [];
this.bs = new BinaryCommonWriter(this.memory);
this.Write = function () {
var oThis = this;
this.bs.WriteItemWithLength(function () {
oThis.WriteHeaderFooterContent();
});
};
this.WriteHeaderFooterContent = function () {
var oThis = this;
if (this.aHeaders.length > 0) {
this.bs.WriteItem(c_oSerHdrFtrTypes.Header, function () {
oThis.WriteHdrFtrContent(oThis.aHeaders);
});
}
if (this.aFooters.length > 0) {
this.bs.WriteItem(c_oSerHdrFtrTypes.Footer, function () {
oThis.WriteHdrFtrContent(oThis.aFooters);
});
}
};
this.WriteHdrFtrContent = function (aHdrFtr) {
var oThis = this;
for (var i = 0, length = aHdrFtr.length; i < length; ++i) {
var item = aHdrFtr[i];
this.bs.WriteItem(item.type, function () {
oThis.WriteHdrFtrItem(item.elem);
});
}
};
this.WriteHdrFtrItem = function (item) {
var oThis = this;
var dtw = new BinaryDocumentTableWriter(this.memory, this.Document, this.oMapCommentId, this.oNumIdMap, null, 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, null);
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 (var i in this.oUsedNumIdMap) {
this.bs.WriteItem(c_oSerNumTypes.Num, function () {
oThis.WriteNum(i, oThis.oUsedNumIdMap[i] - 1);
});
}
} else {
for (var 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 (var 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 (var 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, oBinaryHeaderFooterTableWriter) {
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, oBinaryHeaderFooterTableWriter);
this.brPrs = new Binary_rPrWriter(this.memory);
this.boMaths = new Binary_oMathWriter(this.memory);
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.bpPrs.WriteSectPr(oThis.Document.SectPr, oThis.Document);
});
}
};
this.WriteParapraph = function (par, bUseSelection, selectedAll) {
var oThis = this;
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;
}
}
}
}
}
}
var ParaStyle = par.Style_Get();
var pPr = par.Pr;
if (null != pPr || null != ParaStyle || pPr_rPr) {
if (null == pPr) {
pPr = {};
}
var pPr_rPr = null;
var propCount = 0;
for (var 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, par.Get_SectionPr(), oThis.Document);
});
}
if (null != par.Content) {
this.memory.WriteByte(c_oSerParType.Content);
this.bs.WriteItemWithLength(function () {
oThis.WriteParagraphContent(par, bUseSelection, true, selectedAll);
});
}
};
this.WriteParagraphContent = function (par, bUseSelection, bLastRun, selectedAll) {
var ParaStart = 0;
var ParaEnd = par.Content.length - 1;
if (true == bUseSelection) {
ParaStart = par.Selection.StartPos;
ParaEnd = par.Selection.EndPos;
if (ParaStart > ParaEnd) {
var Temp2 = ParaEnd;
ParaEnd = ParaStart;
ParaStart = Temp2;
}
}
if (ParaEnd < 0) {
ParaEnd = 0;
}
if (ParaStart < 0) {
ParaStart = 0;
}
var Content = par.Content;
var oThis = this;
for (var i = ParaStart; i <= ParaEnd && i < Content.length; ++i) {
var item = Content[i];
switch (item.Type) {
case para_Run:
this.WriteRun(item, bUseSelection);
break;
case para_Hyperlink:
this.bs.WriteItem(c_oSerParType.Hyperlink, function () {
oThis.WriteHyperlink(item, bUseSelection);
});
break;
case para_Comment:
if (null != this.oMapCommentId) {
if (item.Start) {
var commentId = this.oMapCommentId[item.CommentId];
if (null != commentId) {
this.bs.WriteItem(c_oSerParType.CommentStart, function () {
oThis.bs.WriteItem(c_oSer_CommentsType.Id, function () {
oThis.memory.WriteLong(commentId);
});
});
}
} else {
var commentId = this.oMapCommentId[item.CommentId];
if (null != commentId) {
this.bs.WriteItem(c_oSerParType.CommentEnd, function () {
oThis.bs.WriteItem(c_oSer_CommentsType.Id, function () {
oThis.memory.WriteLong(commentId);
});
});
this.WriteRun2(function () {
oThis.bs.WriteItem(c_oSerRunType.CommentReference, function () {
oThis.bs.WriteItem(c_oSer_CommentsType.Id, function () {
oThis.memory.WriteLong(commentId);
});
});
});
}
}
}
break;
case para_Math:
if (null != item.Root) {
this.bs.WriteItem(c_oSerParType.OMathPara, function () {
oThis.boMaths.WriteOMathPara(item);
});
}
break;
}
}
if ((bLastRun && bUseSelection && !par.Selection_CheckParaEnd()) || (selectedAll != undefined && selectedAll === false)) {
this.WriteRun2(function () {
oThis.memory.WriteByte(c_oSerRunType._LastRun);
oThis.memory.WriteLong(c_oSerPropLenType.Null);
});
}
};
this.WriteHyperlink = function (oHyperlink, bUseSelection) {
var oThis = this;
var sLink = oHyperlink.Get_Value();
var sTooltip = oHyperlink.Get_ToolTip();
var sAnchor = null;
var nAnchorIndex = sLink.indexOf("#");
if (-1 != nAnchorIndex) {
sAnchor = sLink.substring(nAnchorIndex + 1);
sLink = sLink.substring(0, nAnchorIndex);
}
this.memory.WriteByte(c_oSer_HyperlinkType.Link);
this.memory.WriteString2(sLink);
if (null != sAnchor && "" != sAnchor) {
this.memory.WriteByte(c_oSer_HyperlinkType.Anchor);
this.memory.WriteString2(sAnchor);
}
if (null != sTooltip && "" != sTooltip) {
this.memory.WriteByte(c_oSer_HyperlinkType.Tooltip);
this.memory.WriteString2(sTooltip);
}
this.bs.WriteItem(c_oSer_HyperlinkType.History, function () {
oThis.memory.WriteBool(true);
});
this.bs.WriteItem(c_oSer_HyperlinkType.Content, function () {
oThis.WriteParagraphContent(oHyperlink, bUseSelection, false);
});
};
this.WriteText = function (sCurText) {
if ("" != sCurText) {
this.memory.WriteByte(c_oSerRunType.run);
this.memory.WriteString2(sCurText.toString());
sCurText = "";
}
return sCurText;
};
this.WriteRun2 = function (fWriter, oRun) {
var oThis = this;
this.bs.WriteItem(c_oSerParType.Run, function () {
if (null != oRun && null != oRun.Pr) {
oThis.bs.WriteItem(c_oSerRunType.rPr, function () {
oThis.brPrs.Write_rPr(oRun.Pr);
});
}
oThis.bs.WriteItem(c_oSerRunType.Content, function () {
fWriter();
});
});
};
this.WriteRun = function (oRun, bUseSelection) {
var oThis = this;
var ParaStart = 0;
var ParaEnd = oRun.Content.length;
if (true == bUseSelection) {
ParaStart = oRun.Selection.StartPos;
ParaEnd = oRun.Selection.EndPos;
if (ParaStart > ParaEnd) {
var Temp2 = ParaEnd;
ParaEnd = ParaStart;
ParaStart = Temp2;
}
}
var nPrevIndex = ParaStart;
var aRunRanges = [];
for (var i = ParaStart; i < ParaEnd && i < oRun.Content.length; i++) {
var item = oRun.Content[i];
if (item.Type == para_PageNum) {
var elem;
if (nPrevIndex < i) {
elem = {
nStart: nPrevIndex,
nEnd: i,
pageNum: item
};
} else {
elem = {
nStart: null,
nEnd: null,
pageNum: item
};
}
nPrevIndex = i + 1;
aRunRanges.push(elem);
}
}
if (nPrevIndex <= ParaEnd) {
aRunRanges.push({
nStart: nPrevIndex,
nEnd: ParaEnd,
pageNum: null
});
}
for (var i = 0, length = aRunRanges.length; i < length; i++) {
var elem = aRunRanges[i];
if (null != elem.nStart && null != elem.nEnd) {
this.bs.WriteItem(c_oSerParType.Run, function () {
if (null != oRun.Pr) {
oThis.bs.WriteItem(c_oSerRunType.rPr, function () {
oThis.brPrs.Write_rPr(oRun.Pr);
});
}
oThis.bs.WriteItem(c_oSerRunType.Content, function () {
oThis.WriteRunContent(oRun, elem.nStart, elem.nEnd);
});
});
}
if (null != elem.pageNum) {
var sField = " PAGE \\* MERGEFORMAT ";
this.WriteRun2(function () {
oThis.memory.WriteByte(c_oSerRunType.fldstart);
oThis.memory.WriteString2(sField);
},
oRun);
if (null != elem.pageNum.String && "string" == typeof(elem.pageNum.String)) {
this.WriteRun2(function () {
oThis.WriteText(elem.pageNum.String);
},
oRun);
}
this.WriteRun2(function () {
oThis.memory.WriteByte(c_oSerRunType.fldend);
oThis.memory.WriteLong(c_oSerPropLenType.Null);
},
oRun);
}
}
};
this.WriteRunContent = function (oRun, nStart, nEnd) {
var oThis = this;
var Content = oRun.Content;
var sCurText = "";
for (var i = nStart; i < nEnd && i < Content.length; ++i) {
var item = Content[i];
switch (item.Type) {
case para_Text:
sCurText += encodeSurrogateChar(item.Value);
break;
case para_Space:
sCurText += " ";
break;
case para_Tab:
sCurText = this.WriteText(sCurText);
oThis.memory.WriteByte(c_oSerRunType.tab);
oThis.memory.WriteLong(c_oSerPropLenType.Null);
break;
case para_NewLine:
sCurText = this.WriteText(sCurText);
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_Drawing:
sCurText = this.WriteText(sCurText);
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;
}
if (this.copyParams) {
CheckSpPrXfrm2(item.GraphicObj);
}
oThis.bs.WriteItem(c_oSerRunType.pptxDrawing, function () {
oThis.WriteImage(item);
});
break;
}
}
sCurText = this.WriteText(sCurText);
};
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.Chart2);
this.memory.WriteByte(c_oSerPropLenType.Variable);
var oBinaryChartWriter = new BinaryChartWriter(this.memory);
this.bs.WriteItemWithLength(function () {
oBinaryChartWriter.WriteCT_ChartSpace(img.GraphicObj);
});
} 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.Chart2);
this.memory.WriteByte(c_oSerPropLenType.Variable);
var oBinaryChartWriter = new BinaryChartWriter(this.memory);
this.bs.WriteItemWithLength(function () {
oBinaryChartWriter.WriteCT_ChartSpace(img.GraphicObj);
});
} 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 < Content.length; ++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 < Content.length; 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.oBinaryHeaderFooterTableWriter);
this.bs.WriteItem(c_oSerDocTableType.Cell_Content, function () {
oInnerDocument.WriteDocumentContent(cell.Content);
});
}
};
}
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);
var val = c_oAscBrkBin.Repeat;
switch (BrkBin) {
case BREAK_AFTER:
val = c_oAscBrkBin.After;
break;
case BREAK_BEFORE:
val = c_oAscBrkBin.Before;
break;
case BREAK_REPEAT:
val = c_oAscBrkBin.Repeat;
}
this.memory.WriteByte(val);
};
this.WriteMathBrkBinSub = function (BrkBinSub) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscBrkBinSub.MinusMinus;
switch (BrkBinSub) {
case BREAK_PLUS_MIN:
val = c_oAscBrkBinSub.PlusMinus;
break;
case BREAK_MIN_PLUS:
val = c_oAscBrkBinSub.MinusPlus;
break;
case BREAK_MIN_MIN:
val = c_oAscBrkBinSub.MinusMinus;
}
this.memory.WriteByte(val);
};
this.WriteMathDefJc = function (DefJc) {
this.memory.WriteByte(c_oSer_OMathBottomNodesValType.Val);
this.memory.WriteByte(c_oSerPropLenType.Byte);
var val = c_oAscMathJc.CenterGroup;
switch (DefJc) {
case JC_CENTER:
val = c_oAscMathJc.Center;
break;
case JC_CENTERGROUP:
val = c_oAscMathJc.CenterGroup;
break;
case JC_LEFT:
val = c_oAscMathJc.Left;
break;
case JC_RIGHT:
val = c_oAscMathJc.Right;
}
this.memory.WriteByte(val);
};
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);
var val = c_oAscLimLoc.SubSup;
switch (IntLim) {
case NARY_SubSup:
val = c_oAscLimLoc.SubSup;
break;
case NARY_UndOvr:
val = c_oAscLimLoc.UndOvr;
}
this.memory.WriteByte(val);
};
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);
var val = c_oAscLimLoc.SubSup;
switch (NaryLim) {
case NARY_SubSup:
val = c_oAscLimLoc.SubSup;
break;
case NARY_UndOvr:
val = c_oAscLimLoc.UndOvr;
}
this.memory.WriteByte(val);
};
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,
headers: null,
footers: 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.ReadData = function (data) {
this.stream = new FT_Stream2(data, data.length);
this.PreLoadPrepare();
this.ReadMainTable();
this.PostLoadPrepare();
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;
};
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 = [];
this.oReadResult.headers = [];
this.oReadResult.footers = [];
var res = c_oSerConstants.ReadOk;
res = this.stream.EnterFrame(1);
if (c_oSerConstants.ReadOk != res) {
return res;
}
var mtLen = this.stream.GetUChar();
var aSeekTable = [];
var nOtherTableSeek = -1;
var nNumberingTableSeek = -1;
var nCommentTableSeek = -1;
var nSettingTableSeek = -1;
var nDocumentTableSeek = -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 {
if (c_oSerTableTypes.Document == mtiType) {
nDocumentTableSeek = 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.HdrFtr:
res = (new Binary_HdrFtrTableReader(this.Document, this.oReadResult, this.openParams, this.stream)).Read();
break;
}
if (c_oSerConstants.ReadOk != res) {
return res;
}
}
if (-1 != nDocumentTableSeek) {
res = this.stream.Seek(nDocumentTableSeek);
if (c_oSerConstants.ReadOk != res) {
return res;
}
res = oBinary_DocumentTableReader.ReadAsTable(this.oReadResult.DocumentContent);
if (c_oSerConstants.ReadOk != res) {
return res;
}
}
return res;
};
this.PostLoadPrepareCheckStylesRecursion = function (stId, aStylesGrey, styles) {
var stylesGrey = aStylesGrey[stId];
if (0 != stylesGrey) {
var stObj = styles[stId];
if (stObj) {
if (1 == stylesGrey) {
stObj.Set_BasedOn(null);
} else {
if (null != stObj.BasedOn) {
aStylesGrey[stId] = 1;
this.PostLoadPrepareCheckStylesRecursion(stObj.BasedOn, aStylesGrey, styles);
}
aStylesGrey[stId] = 0;
}
}
}
};
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;
if (g_nCurFileVersion < 2) {
for (var i in this.oReadResult.styles) {
this.oReadResult.styles[i].style.qFormat = true;
}
}
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;
var sNewStyleName = oNewStyle.Name.toLowerCase().replace(/\s/g, "");
var oStartDocStyle = aStartDocStylesNames[sNewStyleName];
if (oStartDocStyle) {
var stId = oStartDocStyle.Get_Id();
oNewStyle.Set_Name(oStartDocStyle.Name);
oIdRenameMap[stId] = {
id: oNewId.id,
def: oNewId.def,
type: oNewStyle.Type,
newName: sNewStyleName
};
delete styles[stId];
}
}
for (var i in this.oReadResult.styles) {
var elem = this.oReadResult.styles[i];
var oNewStyle = elem.style;
var oNewId = elem.param;
var oCollisionStyle = styles[oNewId.id];
if (oCollisionStyle) {
var sOldId = oCollisionStyle.Get_Id();
var nCounter = 1;
var sNewId = g_oIdCounter.Get_NewId();
var oNewId = {
id: sNewId,
def: false,
type: oCollisionStyle.Type,
newName: oCollisionStyle.Name.toLowerCase().replace(/\s/g, "")
};
oIdRenameMap[sOldId] = oNewId;
if (stDefault.Character == sOldId || stDefault.Numbering == sOldId || stDefault.Paragraph == sOldId || stDefault.Table == sOldId) {
oNewId.def = true;
}
oCollisionStyle.Set_Id(sNewId);
delete styles[sOldId];
styles[sNewId] = oCollisionStyle;
}
}
for (var stId in styles) {
var stObj = styles[stId];
var oNewId;
if (null != stObj.BasedOn) {
oNewId = oIdRenameMap[stObj.BasedOn];
if (null != oNewId) {
stObj.Set_BasedOn(oNewId.id);
}
}
if (null != stObj.Next) {
oNewId = oIdRenameMap[stObj.Next];
if (null != oNewId) {
stObj.Set_Next(oNewId.id);
}
}
}
for (var i = 0, length = stDefault.Headings.length; i < length; ++i) {
var sHeading = stDefault.Headings[i];
var oNewId = oIdRenameMap[sHeading];
if (null != oNewId) {
stDefault.Headings[i] = oNewId.id;
}
}
for (var sOldId in oIdRenameMap) {
var oNewId = oIdRenameMap[sOldId];
var sNewStyleName = oNewId.newName;
var stId = sOldId;
if (stDefault.Character == stId) {
stDefault.Character = null;
}
if (stDefault.Paragraph == stId) {
stDefault.Paragraph = null;
}
if (stDefault.Numbering == stId) {
stDefault.Numbering = null;
}
if (stDefault.Table == stId) {
stDefault.Table = null;
}
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 (stDefault.TableGrid == stId || "table grid" == sNewStyleName) {
stDefault.TableGrid = oNewId.id;
}
if (true == oNewId.def) {
switch (oNewId.type) {
case styletype_Character:
stDefault.Character = oNewId.id;
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;
var sNewStyleName = oNewStyle.Name.toLowerCase().replace(/\s/g, "");
if (true == oNewId.def) {
switch (oNewStyle.Type) {
case styletype_Character:
stDefault.Character = oNewId.id;
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;
}
}
if ("header" == sNewStyleName) {
stDefault.Header = oNewId.id;
}
if ("footer" == sNewStyleName) {
stDefault.Footer = oNewId.id;
}
if ("hyperlink" == sNewStyleName) {
stDefault.Hyperlink = oNewId.id;
}
if ("table grid" == sNewStyleName) {
stDefault.TableGrid = oNewId.id;
}
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.Character) {
var oNewStyle = new CStyle("GenStyleDefChar", null, null, styletype_Character);
stDefault.Character = nStId.toString();
styles[nStId] = oNewStyle;
nStId++;
}
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++;
}
var aStylesGrey = {};
for (var stId in styles) {
this.PostLoadPrepareCheckStylesRecursion(stId, aStylesGrey, styles);
}
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 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 = {};
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];
var bToDelete = true;
if (null != item.Start && null != item.End) {
var oCommentObj = oCommentsNewId[item.Start.Id];
if (oCommentObj) {
bToDelete = false;
if (null != item.QuoteText) {
oCommentObj.Data.m_sQuoteText = item.QuoteText;
}
item.Start.oParaComment.Set_CommentId(oCommentObj.Get_Id());
item.End.oParaComment.Set_CommentId(oCommentObj.Get_Id());
}
}
if (bToDelete) {
if (null != item.Start && null != item.Start.oParent) {
var oParent = item.Start.oParent;
var oParaComment = item.Start.oParaComment;
for (var i = OpenParStruct.prototype._GetContentLength(oParent) - 1; i >= 0; --i) {
if (oParaComment == OpenParStruct.prototype._GetFromContent(oParent, i)) {
OpenParStruct.prototype._removeFromContent(oParent, i, 1);
break;
}
}
}
if (null != item.End && null != item.End.oParent) {
var oParent = item.End.oParent;
var oParaComment = item.End.oParaComment;
for (var i = OpenParStruct.prototype._GetContentLength(oParent) - 1; i >= 0; --i) {
if (oParaComment == OpenParStruct.prototype._GetFromContent(oParent, i)) {
OpenParStruct.prototype._removeFromContent(oParent, i, 1);
break;
}
}
}
}
}
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, 0, 0, 0, 0);
this.Document.Content.push(oNewParagraph);
}
this.Document.On_EndLoad();
window.global_pptx_content_loader.Clear(true);
};
this.ReadFromString = function (sBase64, isCopyPaste) {
window.global_pptx_content_loader.Clear();
window.global_pptx_content_loader.Start_UseFullUrl();
this.stream = this.getbase64DecodedData(sBase64);
this.ReadMainTable();
var oReadResult = this.oReadResult;
for (var i in oReadResult.numToNumClass) {
var oNumClass = oReadResult.numToNumClass[i];
var documentANum = this.Document.Numbering.AbstractNum;
var isAlreadyContains = false;
for (var n in documentANum) {
var isEqual = documentANum[n].isEqual(oNumClass);
if (isEqual == true) {
isAlreadyContains = true;
break;
}
}
if (!isAlreadyContains) {
this.Document.Numbering.Add_AbstractNum(oNumClass);
} else {
oReadResult.numToNumClass[i] = documentANum[n];
}
}
for (var i = 0, length = oReadResult.paraNumPrs.length; i < length; ++i) {
var numPr = oReadResult.paraNumPrs[i];
var oNumClass = oReadResult.numToNumClass[numPr.NumId];
if (null != oNumClass) {
numPr.NumId = oNumClass.Get_Id();
} else {
numPr.NumId = 0;
}
}
var isAlreadyContainsStyle;
var oStyleTypes = {
par: 1,
table: 2,
lvl: 3
};
var addNewStyles = false;
var fParseStyle = function (aStyles, oDocumentStyles, oReadResult, nStyleType) {
if (aStyles == undefined) {
return;
}
for (var i = 0, length = aStyles.length; i < length; ++i) {
var elem = aStyles[i];
var stylePaste = oReadResult.styles[elem.style];
var isEqualName = null;
if (null != stylePaste && null != stylePaste.style && oDocumentStyles) {
for (var j in oDocumentStyles.Style) {
var styleDoc = oDocumentStyles.Style[j];
isAlreadyContainsStyle = styleDoc.isEqual(stylePaste.style);
if (styleDoc.Name == stylePaste.style.Name) {
isEqualName = j;
}
if (isAlreadyContainsStyle) {
if (oStyleTypes.par == nStyleType) {
elem.pPr.PStyle = j;
} else {
if (oStyleTypes.table == nStyleType) {
elem.pPr.Set_TableStyle2(j);
} else {
elem.pPr.PStyle = j;
}
}
break;
}
}
if (!isAlreadyContainsStyle && isEqualName != null) {
if (nStyleType == oStyleTypes.par || nStyleType == oStyleTypes.lvl) {
elem.pPr.PStyle = isEqualName;
} else {
if (nStyleType == oStyleTypes.table) {
elem.pPr.Set_TableStyle2(isEqualName);
}
}
} else {
if (!isAlreadyContainsStyle && isEqualName == null) {
var nStyleId = oDocumentStyles.Add(stylePaste.style);
if (nStyleType == oStyleTypes.par || nStyleType == oStyleTypes.lvl) {
elem.pPr.PStyle = nStyleId;
} else {
if (nStyleType == oStyleTypes.table) {
elem.pPr.Set_TableStyle2(nStyleId);
}
}
addNewStyles = true;
}
}
}
}
};
fParseStyle(this.oReadResult.paraStyles, this.Document.Styles, this.oReadResult, oStyleTypes.par);
fParseStyle(this.oReadResult.tableStyles, this.Document.Styles, this.oReadResult, oStyleTypes.table);
fParseStyle(this.oReadResult.lvlStyles, this.Document.Styles, this.oReadResult, oStyleTypes.lvl);
var aContent = this.oReadResult.DocumentContent;
for (var i = 0, length = this.oReadResult.aPostOpenStyleNumCallbacks.length; i < length; ++i) {
this.oReadResult.aPostOpenStyleNumCallbacks[i].call();
}
var bInBlock;
if (oReadResult.bLastRun) {
bInBlock = false;
} else {
bInBlock = true;
}
var AllFonts = {};
if (this.Document.Numbering) {
this.Document.Numbering.Document_Get_AllFontNames(AllFonts);
}
if (this.Document.Styles) {
this.Document.Styles.Document_Get_AllFontNames(AllFonts);
}
for (var Index = 0, Count = aContent.length; Index < Count; Index++) {
aContent[Index].Document_Get_AllFontNames(AllFonts);
}
var aPrepeareFonts = [];
var oDocument = this.Document && this.Document.LogicDocument ? this.Document.LogicDocument : this.Document;
var fontScheme;
var m_oLogicDocument = editor.WordControl.m_oLogicDocument;
if (m_oLogicDocument && m_oLogicDocument.slideMasters && m_oLogicDocument.slideMasters[0] && m_oLogicDocument.slideMasters[0].Theme && m_oLogicDocument.slideMasters[0].Theme.themeElements) {
fontScheme = m_oLogicDocument.slideMasters[0].Theme.themeElements.fontScheme;
} else {
fontScheme = oDocument.theme.themeElements.fontScheme;
}
checkThemeFonts(AllFonts, fontScheme);
for (var i in AllFonts) {
aPrepeareFonts.push(new CFont(i, 0, "", 0));
}
var oPastedImagesUnique = {};
var aPastedImages = window.global_pptx_content_loader.End_UseFullUrl();
for (var i = 0, length = aPastedImages.length; i < length; ++i) {
var elem = aPastedImages[i];
oPastedImagesUnique[elem.Url] = 1;
}
var aPrepeareImages = [];
for (var i in oPastedImagesUnique) {
aPrepeareImages.push(i);
}
if (!isCopyPaste) {
this.Document.Content = this.oReadResult.DocumentContent;
if (this.Document.Content.length == 0) {
var oNewParagraph = new Paragraph(this.Document.DrawingDocument, this.Document, 0, 0, 0, 0, 0);
this.Document.Content.push(oNewParagraph);
}
this.Document.On_EndLoad();
}
var setting = this.oReadResult.setting;
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 = {};
for (var i in this.oReadResult.oComments) {
if (this.oReadResult.oCommentsPlaces && this.oReadResult.oCommentsPlaces[i] && this.oReadResult.oCommentsPlaces[i].Start != null && this.oReadResult.oCommentsPlaces[i].End != null && this.Document && this.Document.Comments && isCopyPaste === true) {
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];
var bToDelete = true;
if (null != item.Start && null != item.End) {
var oCommentObj = oCommentsNewId[item.Start.Id];
if (oCommentObj) {
bToDelete = false;
if (null != item.QuoteText) {
oCommentObj.Data.m_sQuoteText = item.QuoteText;
}
item.Start.oParaComment.Set_CommentId(oCommentObj.Get_Id());
item.End.oParaComment.Set_CommentId(oCommentObj.Get_Id());
}
}
if (bToDelete) {
if (null != item.Start && null != item.Start.oParent) {
var oParent = item.Start.oParent;
var oParaComment = item.Start.oParaComment;
for (var i = OpenParStruct.prototype._GetContentLength(oParent) - 1; i >= 0; --i) {
if (oParaComment == OpenParStruct.prototype._GetFromContent(oParent, i)) {
OpenParStruct.prototype._removeFromContent(oParent, i, 1);
break;
}
}
}
if (null != item.End && null != item.End.oParent) {
var oParent = item.End.oParent;
var oParaComment = item.End.oParaComment;
for (var i = OpenParStruct.prototype._GetContentLength(oParent) - 1; i >= 0; --i) {
if (oParaComment == OpenParStruct.prototype._GetFromContent(oParent, i)) {
OpenParStruct.prototype._removeFromContent(oParent, i, 1);
break;
}
}
}
}
}
for (var i in oCommentsNewId) {
var oNewComment = oCommentsNewId[i];
this.Document.DrawingDocument.m_oWordControl.m_oApi.sync_AddComment(oNewComment.Id, oNewComment.Data);
}
window.global_pptx_content_loader.Clear(true);
return {
content: aContent,
fonts: aPrepeareFonts,
images: aPrepeareImages,
bAddNewStyles: addNewStyles,
aPastedImages: aPastedImages,
bInBlock: bInBlock
};
};
}
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 = {};
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.TableTRCell = oNewTableStylePr;
break;
case ETblStyleOverrideType.tblstyleoverridetypeNwCell:
style.TableTLCell = oNewTableStylePr;
break;
case ETblStyleOverrideType.tblstyleoverridetypeSeCell:
style.TableBRCell = oNewTableStylePr;
break;
case ETblStyleOverrideType.tblstyleoverridetypeSwCell:
style.TableBLCell = 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_TableTRCell(oNewTableStylePr);
break;
case ETblStyleOverrideType.tblstyleoverridetypeNwCell:
style.Set_TableTLCell(oNewTableStylePr);
break;
case ETblStyleOverrideType.tblstyleoverridetypeSeCell:
style.Set_TableBRCell(oNewTableStylePr);
break;
case ETblStyleOverrideType.tblstyleoverridetypeSwCell:
style.Set_TableBLCell(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();
var themeColor = {
Auto: null,
Color: null,
Tint: null,
Shade: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.bcr.ReadShd(t, l, pPr.Shd, themeColor);
});
if (true == themeColor.Auto && null != pPr.Shd.Color) {
pPr.Shd.Color.Auto = true;
}
var unifill = CreateThemeUnifill(themeColor.Color, themeColor.Tint, themeColor.Shade);
if (null != unifill) {
pPr.Shd.Unifill = unifill;
} else {
if (null != pPr.Shd.Color && !pPr.Shd.Color.Auto) {
pPr.Shd.Unifill = CreteSolidFillRGB(pPr.Shd.Color.r, pPr.Shd.Color.g, pPr.Shd.Color.b);
}
}
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;
case c_oSerProp_pPrType.SectPr:
if (null != this.paragraph && this.Document instanceof CDocument) {
var oNewSectionPr = new CSectionPr(this.Document);
var oAdditional = {
EvenAndOddHeaders: null
};
res = this.bcr.Read1(length, function (t, l) {
return oThis.Read_SecPr(t, l, oNewSectionPr, oAdditional);
});
this.paragraph.Set_SectionPr(oNewSectionPr);
} else {
res = c_oSerConstants.ReadUnknown;
}
break;
default:
res = c_oSerConstants.ReadUnknown;
break;
}
return res;
};
this.ReadBorder = function (type, length, Border) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
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 {
if (c_oSerBorderType.ColorTheme === type) {
var themeColor = {
Auto: null,
Color: null,
Tint: null,
Shade: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.bcr.ReadColorTheme(t, l, themeColor);
});
if (true == themeColor.Auto) {
Border.Color = new CDocumentColor(0, 0, 0, true);
}
var unifill = CreateThemeUnifill(themeColor.Color, themeColor.Tint, themeColor.Shade);
if (null != unifill) {
Border.Unifill = unifill;
} else {
if (null != Border.Color && !Border.Color.Auto) {
Border.Unifill = CreteSolidFillRGB(Border.Color.r, Border.Color.g, Border.Color.b);
}
}
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
return res;
};
this.NormalizeBorder = function (border) {
if (null == border.Color) {
border.Color = new CDocumentColor(0, 0, 0, true);
} else {
border.Color = new CDocumentColor(border.Color.r, border.Color.g, border.Color.b, border.Color.Auto);
}
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) {
var nEditorWrap = wrap_None;
switch (this.stream.GetUChar()) {
case EWrap.wrapAround:
nEditorWrap = wrap_Around;
break;
case EWrap.wrapAuto:
nEditorWrap = wrap_Auto;
break;
case EWrap.wrapNone:
nEditorWrap = wrap_None;
break;
case EWrap.wrapNotBeside:
nEditorWrap = wrap_NotBeside;
break;
case EWrap.wrapThrough:
nEditorWrap = wrap_Through;
break;
case EWrap.wrapTight:
nEditorWrap = wrap_Tight;
break;
}
oFramePr.Wrap = nEditorWrap;
} 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;
};
this.Read_SecPr = function (type, length, oSectPr, oAdditional) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSerProp_secPrType.pgSz === type) {
var oSize = {
W: null,
H: null,
Orientation: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.Read_pgSz(t, l, oSize);
});
if (null != oSize.W && null != oSize.H) {
oSectPr.Set_PageSize(oSize.W, oSize.H);
}
if (null != oSize.Orientation) {
oSectPr.Set_Orientation(oSize.Orientation);
}
} else {
if (c_oSerProp_secPrType.pgMar === type) {
var oMar = {
L: null,
T: null,
R: null,
B: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.Read_pgMar(t, l, oSectPr, oMar, oAdditional);
});
if (null != oMar.L && null != oMar.T && null != oMar.R && null != oMar.B) {
oSectPr.Set_PageMargins(oMar.L, oMar.T, oMar.R, oMar.B);
}
} else {
if (c_oSerProp_secPrType.setting === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.Read_setting(t, l, oSectPr, oAdditional);
});
} else {
if (c_oSerProp_secPrType.headers === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.Read_pgHdrFtr(t, l, oSectPr, oThis.oReadResult.headers, true);
});
} else {
if (c_oSerProp_secPrType.footers === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.Read_pgHdrFtr(t, l, oSectPr, oThis.oReadResult.footers, false);
});
} else {
if (c_oSerProp_secPrType.pageNumType === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.Read_pageNumType(t, l, oSectPr);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
}
return res;
};
this.Read_setting = function (type, length, oSectPr, oAdditional) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSerProp_secPrSettingsType.titlePg === type) {
oSectPr.Set_TitlePage(this.stream.GetBool());
} else {
if (c_oSerProp_secPrSettingsType.EvenAndOddHeaders === type) {
oAdditional.EvenAndOddHeaders = this.stream.GetBool();
} else {
if (c_oSerProp_secPrSettingsType.SectionType === type) {
var nEditorType = null;
switch (this.stream.GetByte()) {
case ESectionMark.sectionmarkContinious:
nEditorType = section_type_Continuous;
break;
case ESectionMark.sectionmarkEvenPage:
nEditorType = section_type_EvenPage;
break;
case ESectionMark.sectionmarkNextColumn:
nEditorType = section_type_Column;
break;
case ESectionMark.sectionmarkNextPage:
nEditorType = section_type_NextPage;
break;
case ESectionMark.sectionmarkOddPage:
nEditorType = section_type_OddPage;
break;
}
if (null != nEditorType) {
oSectPr.Set_Type(nEditorType);
}
} 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, oSectPr, oMar, oAdditional) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_pgMarType.Left === type) {
oMar.L = this.bcr.ReadDouble();
} else {
if (c_oSer_pgMarType.Top === type) {
oMar.T = this.bcr.ReadDouble();
} else {
if (c_oSer_pgMarType.Right === type) {
oMar.R = this.bcr.ReadDouble();
} else {
if (c_oSer_pgMarType.Bottom === type) {
oMar.B = this.bcr.ReadDouble();
} else {
if (c_oSer_pgMarType.Header === type) {
oSectPr.Set_PageMargins_Header(this.bcr.ReadDouble());
} else {
if (c_oSer_pgMarType.Footer === type) {
oSectPr.Set_PageMargins_Footer(this.bcr.ReadDouble());
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
}
return res;
};
this.Read_pgHdrFtr = function (type, length, oSectPr, aHdrFtr, bHeader) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSerProp_secPrType.hdrftrelem === type) {
var nIndex = this.stream.GetULongLE();
if (nIndex >= 0 && nIndex < aHdrFtr.length) {
var item = aHdrFtr[nIndex];
if (bHeader) {
switch (item.type) {
case c_oSerHdrFtrTypes.HdrFtr_First:
oSectPr.Set_Header_First(item.elem);
break;
case c_oSerHdrFtrTypes.HdrFtr_Even:
oSectPr.Set_Header_Even(item.elem);
break;
case c_oSerHdrFtrTypes.HdrFtr_Odd:
oSectPr.Set_Header_Default(item.elem);
break;
}
} else {
switch (item.type) {
case c_oSerHdrFtrTypes.HdrFtr_First:
oSectPr.Set_Footer_First(item.elem);
break;
case c_oSerHdrFtrTypes.HdrFtr_Even:
oSectPr.Set_Footer_Even(item.elem);
break;
case c_oSerHdrFtrTypes.HdrFtr_Odd:
oSectPr.Set_Footer_Default(item.elem);
break;
}
}
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.Read_pageNumType = function (type, length, oSectPr) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSerProp_secPrPageNumType.start === type) {
oSectPr.Set_PageNum_Start(this.stream.GetULongLE());
} 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 oThis = this;
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 = {};
}
rPr.RFonts.Ascii = {
Name: this.stream.GetString2LE(length),
Index: -1
};
break;
case c_oSerProp_rPrType.FontHAnsi:
if (undefined === rPr.RFonts) {
rPr.RFonts = {};
}
rPr.RFonts.HAnsi = {
Name: this.stream.GetString2LE(length),
Index: -1
};
break;
case c_oSerProp_rPrType.FontAE:
if (undefined === rPr.RFonts) {
rPr.RFonts = {};
}
rPr.RFonts.EastAsia = {
Name: this.stream.GetString2LE(length),
Index: -1
};
break;
case c_oSerProp_rPrType.FontCS:
if (undefined === rPr.RFonts) {
rPr.RFonts = {};
}
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;
case c_oSerProp_rPrType.ColorTheme:
var themeColor = {
Auto: null,
Color: null,
Tint: null,
Shade: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.bcr.ReadColorTheme(t, l, themeColor);
});
if (true == themeColor.Auto) {
rPr.Color = new CDocumentColor(0, 0, 0, true);
}
var unifill = CreateThemeUnifill(themeColor.Color, themeColor.Tint, themeColor.Shade);
if (null != unifill) {
rPr.Unifill = unifill;
} else {
if (null != rPr.Color && !rPr.Color.Auto) {
rPr.Unifill = CreteSolidFillRGB(rPr.Color.r, rPr.Color.g, rPr.Color.b);
}
}
break;
case c_oSerProp_rPrType.Shd:
rPr.Shd = new CDocumentShd();
var themeColor = {
Auto: null,
Color: null,
Tint: null,
Shade: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.bcr.ReadShd(t, l, rPr.Shd, themeColor);
});
if (true == themeColor.Auto && null != rPr.Shd.Color) {
rPr.Shd.Color.Auto = true;
}
var unifill = CreateThemeUnifill(themeColor.Color, themeColor.Tint, themeColor.Shade);
if (null != unifill) {
rPr.Shd.Unifill = unifill;
} else {
if (null != rPr.Shd.Color && !rPr.Shd.Color.Auto) {
rPr.Shd.Unifill = CreteSolidFillRGB(rPr.Shd.Color.r, rPr.Shd.Color.g, rPr.Shd.Color.b);
}
}
break;
case c_oSerProp_rPrType.Vanish:
rPr.Vanish = this.stream.GetBool();
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();
}
var themeColor = {
Auto: null,
Color: null,
Tint: null,
Shade: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.bcr.ReadShd(t, l, Pr.Shd, themeColor);
});
if (true == themeColor.Auto && null != Pr.Shd.Color) {
Pr.Shd.Color.Auto = true;
}
var unifill = CreateThemeUnifill(themeColor.Color, themeColor.Tint, themeColor.Shade);
if (null != unifill) {
Pr.Shd.Unifill = unifill;
} else {
if (null != Pr.Shd.Color && !Pr.Shd.Color.Auto) {
Pr.Shd.Unifill = CreteSolidFillRGB(Pr.Shd.Color.r, Pr.Shd.Color.g, Pr.Shd.Color.b);
}
}
} 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();
}
var themeColor = {
Auto: null,
Color: null,
Tint: null,
Shade: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.bcr.ReadShd(t, l, Pr.Shd, themeColor);
});
if (true == themeColor.Auto && null != Pr.Shd.Color) {
Pr.Shd.Color.Auto = true;
}
var unifill = CreateThemeUnifill(themeColor.Color, themeColor.Tint, themeColor.Shade);
if (null != unifill) {
Pr.Shd.Unifill = unifill;
} else {
if (null != Pr.Shd.Color && !Pr.Shd.Color.Auto) {
Pr.Shd.Unifill = CreteSolidFillRGB(Pr.Shd.Color.r, Pr.Shd.Color.g, Pr.Shd.Color.b);
}
}
} 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 = {};
this.m_oANumToNumClass = {};
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 = {};
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 = [];
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, this.oReadResult.oCommentsPlaces);
this.Read = function () {
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.oReadResult.headers;
nHdrFtrType = hdrftr_Header;
} else {
oHdrFtrContainer = this.oReadResult.footers;
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;
if (hdrftr_Header == nHdrFtrType) {
hdrftr = new CHeaderFooter(this.Document.HdrFtr, this.Document, this.Document.DrawingDocument, nHdrFtrType);
} else {
hdrftr = new CHeaderFooter(this.Document.HdrFtr, this.Document, this.Document.DrawingDocument, nHdrFtrType);
}
this.bdtr.Document = hdrftr.Content;
var oNewItem = {
Content: null
};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadHdrFtrItem(t, l, oNewItem);
});
if (null != oNewItem.Content) {
hdrftr.Content.Content = oNewItem.Content;
oHdrFtrContainer.push({
type: type,
elem: hdrftr
});
}
} 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_Content === type) {
oNewItem.Content = [];
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.boMathr = new Binary_oMathReader(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.aFields = [];
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, 0, 0, 0, 0);
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadParagraph(t, l, oNewParagraph, Content);
});
oNewParagraph.Correct_Content();
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, 0, 0, 0, 0, []);
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadDocTable(t, l, oNewTable);
});
oNewTable.ReIndexing(0);
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 = oThis.Document.SectPr;
var oAdditional = {
EvenAndOddHeaders: null
};
res = this.bcr.Read1(length, function (t, l) {
return oThis.bpPrr.Read_SecPr(t, l, oSectPr, oAdditional);
});
if (null != oAdditional.EvenAndOddHeaders) {
this.Document.Set_DocumentEvenAndOddHeaders(oAdditional.EvenAndOddHeaders);
}
if (g_nCurFileVersion < 5) {
for (var i = 0; i < this.oReadResult.headers.length; ++i) {
var item = this.oReadResult.headers[i];
switch (item.type) {
case c_oSerHdrFtrTypes.HdrFtr_First:
oSectPr.Set_Header_First(item.elem);
break;
case c_oSerHdrFtrTypes.HdrFtr_Even:
oSectPr.Set_Header_Even(item.elem);
break;
case c_oSerHdrFtrTypes.HdrFtr_Odd:
oSectPr.Set_Header_Default(item.elem);
break;
}
}
for (var i = 0; i < this.oReadResult.footers.length; ++i) {
var item = this.oReadResult.footers[i];
switch (item.type) {
case c_oSerHdrFtrTypes.HdrFtr_First:
oSectPr.Set_Footer_First(item.elem);
break;
case c_oSerHdrFtrTypes.HdrFtr_Even:
oSectPr.Set_Footer_Even(item.elem);
break;
case c_oSerHdrFtrTypes.HdrFtr_Odd:
oSectPr.Set_Footer_Default(item.elem);
break;
}
}
}
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadParagraph = function (type, length, paragraph, 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) {
var oParStruct = new OpenParStruct(paragraph, Content, paragraph);
if (this.aFields.length > 0) {
for (var i = 0; i < this.aFields.length; ++i) {
var sField = this.aFields[i];
var oHyperlink = new ParaHyperlink();
oHyperlink.Set_Paragraph(paragraph);
oParStruct.addElem(oHyperlink);
this.parseField(oHyperlink, sField);
}
}
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadParagraphContent(t, l, oParStruct);
});
oParStruct.commitAll();
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadParagraphContent = function (type, length, oParStruct) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
var oCurContainer = oParStruct.cur.elem;
if (c_oSerParType.Run === type) {
var oNewRun = new ParaRun(oParStruct.paragraph);
var oRes = {
bRes: true
};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadRun(t, l, oNewRun, oParStruct, oRes);
});
oParStruct.addToContent(oNewRun);
} else {
if (c_oSerParType.CommentStart === type) {
var oCommon = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadComment(t, l, oCommon);
});
if (null != oCommon.Id) {
oCommon.oParent = oCurContainer;
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] = "";
}
oCommon.oParaComment = new ParaComment(true, oCommon.Id);
oParStruct.addToContent(oCommon.oParaComment);
}
} else {
if (c_oSerParType.CommentEnd === type) {
var oCommon = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadComment(t, l, oCommon);
});
if (null != oCommon.Id) {
oCommon.oParent = oCurContainer;
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];
}
oCommon.oParaComment = new ParaComment(false, oCommon.Id);
oParStruct.addToContent(oCommon.oParaComment);
}
} else {
if (c_oSerParType.OMathPara == type) {
var props = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.boMathr.ReadMathOMathPara(t, l, oParStruct, props);
});
} else {
if (c_oSerParType.OMath == type) {
var oMath = new ParaMath();
oParStruct.addToContent(oMath);
res = this.bcr.Read1(length, function (t, l) {
return oThis.boMathr.ReadMathArg(t, l, oMath.Root, oParStruct);
});
oMath.Root.Correct_Content(true);
} else {
if (c_oSerParType.Hyperlink == type) {
var oHyperlinkObj = {
Link: null,
Anchor: null,
Tooltip: null,
History: null,
DocLocation: null,
TgtFrame: null
};
var oNewHyperlink = new ParaHyperlink();
oNewHyperlink.Set_Paragraph(oParStruct.paragraph);
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadHyperlink(t, l, oHyperlinkObj, oNewHyperlink, oParStruct);
});
if (null != oHyperlinkObj.Link && "" != oHyperlinkObj.Link) {
var sValue = oHyperlinkObj.Link;
if (null != oHyperlinkObj.Anchor) {
sValue += "#" + oHyperlinkObj.Anchor;
}
oNewHyperlink.Set_Value(sValue);
if (null != oHyperlinkObj.Tooltip) {
oNewHyperlink.Set_ToolTip(oHyperlinkObj.Tooltip);
}
oParStruct.addToContent(oNewHyperlink);
}
oNewHyperlink.Check_Content();
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
}
return res;
};
this.ReadHyperlink = function (type, length, oHyperlinkObj, oNewHyperlink, oParStruct) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_HyperlinkType.Link === type) {
oHyperlinkObj.Link = this.stream.GetString2LE(length);
} else {
if (c_oSer_HyperlinkType.Anchor === type) {
oHyperlinkObj.Anchor = this.stream.GetString2LE(length);
} else {
if (c_oSer_HyperlinkType.Tooltip === type) {
oHyperlinkObj.Tooltip = this.stream.GetString2LE(length);
} else {
if (c_oSer_HyperlinkType.History === type) {
oHyperlinkObj.History = this.stream.GetBool();
} else {
if (c_oSer_HyperlinkType.DocLocation === type) {
oHyperlinkObj.DocLocation = this.stream.GetString2LE(length);
} else {
if (c_oSer_HyperlinkType.TgtFrame === type) {
oHyperlinkObj.TgtFrame = this.stream.GetString2LE(length);
} else {
if (c_oSer_HyperlinkType.Content === type) {
var oHypStruct = new OpenParStruct(oNewHyperlink, oParStruct.Content, oParStruct.paragraph);
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadParagraphContent(t, l, oHypStruct);
});
oHypStruct.commitAll();
} 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, oParStruct, oRes) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSerRunType.rPr === type) {
var rPr = new CTextPr();
res = this.brPrr.Read(length, rPr);
oRunObject.Set_Pr(rPr);
} else {
if (c_oSerRunType.Content === type) {
var oPos = {
run: oRunObject,
pos: 0
};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadRunContent(t, l, oPos, oParStruct, oRes);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadRunContent = function (type, length, oPos, oParStruct, oRes) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
var oNewElem = null;
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; i < text.length; ++i) {
var nUnicode = null;
var nCharCode = text.charCodeAt(i);
if (isLeadingSurrogateChar(nCharCode)) {
if (i + 1 < text.length) {
i++;
var nTrailingChar = text.charCodeAt(i);
nUnicode = decodeSurrogateChar(nCharCode, nTrailingChar);
}
} else {
nUnicode = nCharCode;
}
if (null != nUnicode) {
if (32 != nUnicode) {
var oNewParaText = new ParaText();
oNewParaText.Set_CharCode(nUnicode);
oPos.run.Add_ToContent(oPos.pos, oNewParaText, false);
} else {
oPos.run.Add_ToContent(oPos.pos, new ParaSpace(), false);
}
oPos.pos++;
}
}
} else {
if (c_oSerRunType.tab === type) {
oNewElem = new ParaTab();
} else {
if (c_oSerRunType.pagenum === type) {
oNewElem = new ParaPageNum();
} else {
if (c_oSerRunType.pagebreak === type) {
oNewElem = new ParaNewLine(break_Page);
} else {
if (c_oSerRunType.linebreak === type) {
oNewElem = 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, doc, oParStruct.paragraph);
var src = this.oReadResult.ImageMap[image.MediaId];
var Image = editor.WordControl.m_oLogicDocument.DrawingObjects.createImage(src, 0, 0, image.W, image.H);
drawing.Set_GraphicObject(Image);
Image.setParent(drawing);
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);
}
}
if (null != drawing.GraphicObj) {
window.global_pptx_content_loader.ImageMapChecker[src] = true;
oNewElem = drawing;
}
}
} else {
if (c_oSerRunType.pptxDrawing === type) {
var oDrawing = new Object();
this.ReadDrawing(type, length, oParStruct, oDrawing, res);
if (null != oDrawing.content.GraphicObj) {
oNewElem = oDrawing.content;
}
} else {
if (c_oSerRunType.table === type) {
var doc = this.Document;
var oNewTable = new CTable(doc.DrawingDocument, doc, true, 0, 0, 0, 0, 0, 0, 0, []);
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadDocTable(t, l, oNewTable);
});
oNewTable.ReIndexing(0);
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;
oParStruct.DocContent.push(oNewTable);
} else {
if (c_oSerRunType.fldstart === type) {
oRes.bRes = false;
var oHyperlink = new ParaHyperlink();
oHyperlink.Set_Paragraph(oParStruct.paragraph);
oParStruct.addElem(oHyperlink);
var sField = this.stream.GetString2LE(length);
this.parseField(oHyperlink, sField);
this.aFields.push(sField);
} else {
if (c_oSerRunType.fldend === type) {
oRes.bRes = false;
oParStruct.commitElem();
this.aFields.pop();
} else {
if (c_oSerRunType._LastRun === type) {
this.oReadResult.bLastRun = true;
} else {
if (c_oSerRunType.object === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadObject(t, l, oParStruct);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
}
}
}
}
}
}
}
if (null != oNewElem) {
oPos.run.Add_ToContent(oPos.pos, oNewElem, false);
oPos.pos++;
}
return res;
};
this.ReadDrawing = function (type, length, oParStruct, oDrawing, res) {
var oThis = this;
var doc = this.Document;
var oParaDrawing = new ParaDrawing(null, null, null, doc.DrawingDocument, doc, oParStruct.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);
}
if (oParaDrawing.GraphicObj) {
if (oParaDrawing.GraphicObj.getObjectType() !== historyitem_type_ChartSpace) {
if (!oParaDrawing.GraphicObj.spPr) {
oParaDrawing.GraphicObj = null;
}
}
if (oParaDrawing.GraphicObj) {
if (drawing_Anchor == oParaDrawing.DrawingType && typeof History.RecalcData_Add === "function") {
History.RecalcData_Add({
Type: historyrecalctype_Flow,
Data: oParaDrawing
});
}
}
}
oDrawing.content = oParaDrawing;
};
this.ReadObject = function (type, length, oParStruct) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSerParType.OMath === type) {
if (length > 0) {
var oMathPara = new ParaMath();
oParStruct.addToContent(oMathPara);
res = this.bcr.Read1(length, function (t, l) {
return oThis.boMathr.ReadMathArg(t, l, oMathPara.Root);
});
}
} else {
if (c_oSerRunType.pptxDrawing === type) {
var oNewElem = null;
var oDrawing = new Object();
this.ReadDrawing(type, length, oParStruct, oDrawing, res);
if (null != oDrawing.content.GraphicObj) {
oNewElem = oDrawing.content;
var oNewRun = new ParaRun(oParStruct.paragraph);
oNewRun.Add_ToContent(0, oNewElem, false);
oParStruct.addToContent(oNewRun);
}
} 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 = [];
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) {
if (length > 0) {
var grObject = window.global_pptx_content_loader.ReadDrawing(this, this.stream, this.Document, oParaDrawing);
if (null != grObject) {
oParaDrawing.Set_GraphicObject(grObject);
}
} else {
res = c_oSerConstants.ReadUnknown;
}
} else {
if (c_oSerImageType2.Chart2 === type) {
res = c_oSerConstants.ReadUnknown;
var oNewChartSpace = new CChartSpace();
var oBinaryChartReader = new BinaryChartReader(this.stream);
res = oBinaryChartReader.ExternalReadCT_ChartSpace(length, oNewChartSpace, this.Document);
oNewChartSpace.setBDeleted(false);
oParaDrawing.Set_GraphicObject(oNewChartSpace);
oNewChartSpace.setParent(oParaDrawing);
} 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(Math.abs(this.bcr.ReadDouble()), null, null, null);
} else {
if (c_oSerImageType2.DistT === type) {
oParaDrawing.Set_Distance(null, Math.abs(this.bcr.ReadDouble()), null, null);
} else {
if (c_oSerImageType2.DistR === type) {
oParaDrawing.Set_Distance(null, null, Math.abs(this.bcr.ReadDouble()), null);
} else {
if (c_oSerImageType2.DistB === type) {
oParaDrawing.Set_Distance(null, null, null, Math.abs(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 && wrappingPolygon !== undefined) {
wrappingPolygon.tempArrPoints = [];
var oStartRes = {
start: null
};
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadWrapPolygon(t, l, wrappingPolygon, oStartRes);
});
if (null != oStartRes.start) {
wrappingPolygon.tempArrPoints.unshift(oStartRes.start);
}
wrappingPolygon.setArrRelPoints(wrappingPolygon.tempArrPoints);
delete wrappingPolygon.tempArrPoints;
} 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.setEdited(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.tempArrPoints);
});
} 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() * 36000 >> 0);
} else {
if (c_oSerPoint2D.Y === type) {
oPoint.y = (this.bcr.ReadDouble() * 36000 >> 0);
} 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 = [];
var oCellContentReader = new Binary_DocumentTableReader(cell.Content, this.oReadResult, this.openParams, this.stream, false, this.oComments);
oCellContentReader.aFields = this.aFields;
oCellContentReader.nCurCommentsCount = this.nCurCommentsCount;
oCellContentReader.oCurComments = this.oCurComments;
oCellContentReader.Read(length, oCellContent);
this.nCurCommentsCount = oCellContentReader.nCurCommentsCount;
if (oCellContent.length > 0) {
for (var i = 0; i < oCellContent.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;
};
}
function Binary_oMathReader(stream) {
this.stream = stream;
this.bcr = new Binary_CommonReader(this.stream);
this.brPrr = new Binary_rPrReader(null, this.stream);
this.ReadRun = function (type, length, oRunObject, oParStruct, oRes) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSerRunType.rPr === type) {
var rPr = new CTextPr();
res = this.brPrr.Read(length, rPr);
oRunObject.Set_Pr(rPr);
} else {
if (c_oSerRunType.Content === type) {
var oPos = {
run: oRunObject,
pos: 0
};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadRunContent(t, l, oPos, oParStruct, oRes);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadRunContent = function (type, length, oPos, oParStruct, oRes) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
var oNewElem = null;
if (c_oSerRunType.run === type) {
var text = this.stream.GetString2LE(length);
for (var i = 0; i < text.length; ++i) {
var nUnicode = null;
var nCharCode = text.charCodeAt(i);
if (isLeadingSurrogateChar(nCharCode)) {
if (i + 1 < text.length) {
i++;
var nTrailingChar = text.charCodeAt(i);
nUnicode = decodeSurrogateChar(nCharCode, nTrailingChar);
}
} else {
nUnicode = nCharCode;
}
if (null != nUnicode) {
if (32 != nUnicode) {
var oNewParaText = new ParaText();
oNewParaText.Set_CharCode(nUnicode);
oPos.run.Add_ToContent(oPos.pos, oNewParaText, false);
} else {
oPos.run.Add_ToContent(oPos.pos, new ParaSpace(), false);
}
oPos.pos++;
}
}
} else {
if (c_oSerRunType.tab === type) {
oNewElem = new ParaTab();
} else {
if (c_oSerRunType.pagenum === type) {
oNewElem = new ParaPageNum();
} else {
if (c_oSerRunType.pagebreak === type) {
oNewElem = new ParaNewLine(break_Page);
} else {
if (c_oSerRunType.linebreak === type) {
oNewElem = new ParaNewLine(break_Line);
} else {
if (c_oSerRunType._LastRun === type) {
this.oReadResult.bLastRun = true;
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
}
if (null != oNewElem) {
oPos.run.Add_ToContent(oPos.pos, oNewElem, false);
oPos.pos++;
}
return res;
};
this.ReadMathAcc = function (type, length, props, oParent, oContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.AccPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathAccPr(t, l, props);
});
var oMathAcc = new CAccent(props);
if (oParent) {
oParent.addElementToContent(oMathAcc);
}
oContent.content = oMathAcc.getBase();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathAccPr = function (type, length, props) {
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, c_oSer_OMathChrType.Chr);
});
} else {
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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();
} 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();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathArg = function (type, length, oElem, oParStruct) {
var bLast = this.bcr.stream.bLast;
var res = c_oSerConstants.ReadOk;
var oThis = this;
var props = {};
if (c_oSer_OMathContentType.Acc === type) {
var oContent = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathAcc(t, l, props, oElem, oContent);
});
} 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 oContent = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathBar(t, l, props, oElem, oContent);
});
} else {
if (c_oSer_OMathContentType.BorderBox === type) {
var oContent = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathBorderBox(t, l, props, oElem, oContent);
});
} else {
if (c_oSer_OMathContentType.Box === type) {
var oContent = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathBox(t, l, props, oElem, oContent);
});
} else {
if (c_oSer_OMathContentType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
oElem.setCtrPrp(props.ctrlPr);
} else {
if (c_oSer_OMathContentType.Delimiter === type) {
var arrContent = [];
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathDelimiter(t, l, props, oElem, arrContent);
});
} else {
if (c_oSer_OMathContentType.EqArr === type) {
var arrContent = [];
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathEqArr(t, l, props, oElem, arrContent);
});
} else {
if (c_oSer_OMathContentType.Fraction === type) {
var oElemDen = {};
var oElemNum = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathFraction(t, l, props, oElem, oElemDen, oElemNum);
});
} else {
if (c_oSer_OMathContentType.Func === type) {
var oContent = {};
var oName = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathFunc(t, l, props, oElem, oContent, oName);
});
} else {
if (c_oSer_OMathContentType.GroupChr === type) {
var oContent = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathGroupChr(t, l, props, oElem, oContent);
});
} else {
if (c_oSer_OMathContentType.LimLow === type) {
var oContent = {};
var oLim = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathLimLow(t, l, props, oElem, oContent, oLim);
});
} else {
if (c_oSer_OMathContentType.LimUpp === type) {
var oContent = {};
var oLim = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathLimUpp(t, l, props, oElem, oContent, oLim);
});
} else {
if (c_oSer_OMathContentType.Matrix === type) {
var oMatrix = {};
var arrContent = [];
props.mcs = [];
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathMatrix(t, l, props, oElem, oMatrix, arrContent);
});
} else {
if (c_oSer_OMathContentType.Nary === type) {
var oContent = {};
var oSub = {};
var oSup = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathNary(t, l, props, oElem, oContent, oSub, oSup);
});
} 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 oContent = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathPhant(t, l, props, oElem, oContent);
});
} else {
if (c_oSer_OMathContentType.MRun === type) {
var oMRun = new ParaRun(null, true);
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathMRun(t, l, oMRun, props, oElem, oParStruct);
});
if (oElem) {
oElem.addElementToContent(oMRun);
}
} else {
if (c_oSer_OMathContentType.Rad === type) {
var oContent = {};
var oDeg = {};
var oRad = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathRad(t, l, props, oElem, oRad, oContent, oDeg);
});
} else {
if (c_oSer_OMathContentType.SPre === type) {
var oContent = {};
var oSub = {};
var oSup = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathSPre(t, l, props, oElem, oContent, oSub, oSup);
});
} else {
if (c_oSer_OMathContentType.SSub === type) {
var oContent = {};
var oSub = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathSSub(t, l, props, oElem, oContent, oSub);
});
} else {
if (c_oSer_OMathContentType.SSubSup === type) {
var oContent = {};
var oSub = {};
var oSup = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathSSubSup(t, l, props, oElem, oContent, oSub, oSup);
});
} else {
if (c_oSer_OMathContentType.SSup === type) {
var oContent = {};
var oSup = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathSSup(t, l, props, oElem, oContent, oSup);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (oElem && bLast) {
oElem.Correct_Content(false);
}
return res;
};
this.ReadMathArgPr = function (type, length, oElem) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.ArgSz === type) {
var props = {};
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathArgSz(t, l, props);
});
oElem.SetArgSize(props.argSz);
} 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.ReadMathBar = function (type, length, props, oParent, oContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.BarPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathBarPr(t, l, props, oBar);
});
var oBar = new CBar(props);
if (oParent) {
oParent.addElementToContent(oBar);
}
oContent.content = oBar.getBase();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathBarPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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 c_oAscYAlign.Bottom:
props.baseJc = BASEJC_BOTTOM;
break;
case c_oAscYAlign.Center:
props.baseJc = BASEJC_CENTER;
break;
case c_oAscYAlign.Top:
props.baseJc = BASEJC_TOP;
break;
default:
props.baseJc = BASEJC_TOP;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathBorderBox = function (type, length, props, oParent, oContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.BorderBoxPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathBorderBoxPr(t, l, props);
});
var oBorderBox = new CBorderBox(props);
if (oParent) {
oParent.addElementToContent(oBorderBox);
}
oContent.content = oBorderBox.getBase();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathBorderBoxPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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, props, oParent, oContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.BoxPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathBoxPr(t, l, props);
});
var oBox = new CBox(props);
if (oParent) {
oParent.addElementToContent(oBox);
}
oContent.content = oBox.getBase();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathBoxPr = 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_OMathBottomNodesType.Brk === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathBrk(t, l, props);
});
} else {
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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) {
var brk = this.stream.GetBool();
props.brk = {};
} else {
if (c_oSer_OMathBottomNodesValType.AlnAt === type) {
var aln = this.stream.GetULongLE();
props.brk = {
alnAt: aln
};
} 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;
if (c_oSer_OMathBottomNodesValType.Val == type) {
props.cGpRule = this.stream.GetULongLE();
}
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.ReadMathCount = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
props.count = 0;
if (c_oSer_OMathBottomNodesValType.Val == type) {
props.count = this.stream.GetULongLE();
}
return res;
};
this.ReadMathChr = function (type, length, props, typeChr) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
var text = this.stream.GetString2LE(length);
var aUnicode = convertUTF16toUnicode(text);
var chr = (aUnicode.length <= 0 ? OPERATOR_EMPTY : aUnicode[0]);
switch (typeChr) {
default:
case c_oSer_OMathChrType.Chr:
props.chr = chr;
break;
case c_oSer_OMathChrType.BegChr:
props.begChr = chr;
break;
case c_oSer_OMathChrType.EndChr:
props.endChr = chr;
break;
case c_oSer_OMathChrType.SepChr:
props.sepChr = chr;
break;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathCtrlPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSerRunType.rPr === type) {
var MathTextRPr = new CTextPr();
res = this.brPrr.Read(length, MathTextRPr);
props.ctrPrp = MathTextRPr;
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathDelimiter = function (type, length, props, oElem, arrContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.DelimiterPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathDelimiterPr(t, l, props);
});
props.counter = 0;
var oDelimiter = new CDelimiter(props);
oElem.addElementToContent(oDelimiter);
for (var i = 0; i < props.column; i++) {
arrContent[i] = oDelimiter.getBase(i);
}
} else {
if (c_oSer_OMathContentType.Element === type) {
var lColumn = props.counter;
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, arrContent[lColumn]);
});
props.counter++;
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathDelimiterPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.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.ReadMathChr(t, l, props, c_oSer_OMathChrType.BegChr);
});
} else {
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} else {
if (c_oSer_OMathBottomNodesType.EndChr === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathChr(t, l, props, c_oSer_OMathChrType.EndChr);
});
} 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.ReadMathChr(t, l, props, c_oSer_OMathChrType.SepChr);
});
} 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();
} 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();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathEqArr = function (type, length, props, oElem, arrContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.EqArrPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathEqArrPr(t, l, props);
});
if (!props.ctrPrp) {
props.ctrPrp = new CTextPr();
}
props.counter = 0;
var oEqArr = new CEqArray(props);
oElem.addElementToContent(oEqArr);
for (var i = 0; i < props.row; i++) {
arrContent[i] = oEqArr.getElement(i);
}
} else {
if (c_oSer_OMathContentType.Element === type) {
var lRow = props.counter;
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, arrContent[lRow]);
});
props.counter++;
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathEqArrPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.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.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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.ReadMathFraction = function (type, length, props, oParent, oElemDen, oElemNum) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.FPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathFPr(t, l, props);
});
var oFraction = new CFraction(props);
if (oParent) {
oParent.addElementToContent(oFraction);
}
oElemDen.content = oFraction.getDenominator();
oElemNum.content = oFraction.getNumerator();
} else {
if (c_oSer_OMathContentType.Den === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oElemDen.content);
});
} else {
if (c_oSer_OMathContentType.Num === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oElemNum.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadMathFPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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, props, oParent, oContent, oName) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.FuncPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathFuncPr(t, l, props);
});
var oFunc = new CMathFunc(props);
if (oParent) {
oParent.addElementToContent(oFunc);
}
oContent.content = oFunc.getArgument();
oName.content = oFunc.getFName();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
if (c_oSer_OMathContentType.FName === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oName.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadMathFuncPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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.ReadMathGroupChr = function (type, length, props, oParent, oContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.GroupChrPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathGroupChrPr(t, l, props);
});
var oGroupChr = new CGroupCharacter(props);
if (oParent) {
oParent.addElementToContent(oGroupChr);
}
oContent.content = oGroupChr.getBase();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathGroupChrPr = function (type, length, props) {
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, c_oSer_OMathChrType.Chr);
});
} else {
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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();
} 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 c_oAscLimLoc.SubSup:
props.limLoc = NARY_SubSup;
break;
case c_oAscLimLoc.UndOvr:
props.limLoc = NARY_UndOvr;
break;
default:
props.limLoc = NARY_SubSup;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathLimLow = function (type, length, props, oParent, oContent, oLim) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.LimLowPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathLimLowPr(t, l, props);
});
props.type = LIMIT_LOW;
var oLimLow = new CLimit(props);
if (oParent) {
oParent.addElementToContent(oLimLow);
}
oContent.content = oLimLow.getFName();
oLim.content = oLimLow.getIterator();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
if (c_oSer_OMathContentType.Lim === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oLim.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadMathLimLowPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathLimUpp = function (type, length, props, oParent, oContent, oLim) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.LimUppPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathLimUppPr(t, l, props);
});
props.type = LIMIT_UP;
var oLimUpp = new CLimit(props);
if (oParent) {
oParent.addElementToContent(oLimUpp);
}
oContent.content = oLimUpp.getFName();
oLim.content = oLimUpp.getIterator();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
if (c_oSer_OMathContentType.Lim === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oLim.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadMathLimUppPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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, props, oParent, oMatr, arrContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.MPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathMPr(t, l, props);
});
var oMatrix = new CMathMatrix(props);
if (oParent) {
oParent.addElementToContent(oMatrix);
}
oMatr.content = oMatrix;
oMatr.content.row = 0;
oMatr.content.column = 0;
var column = 0;
for (var i = 0; i < props.mcs.length; i++) {
column += props.mcs[i].count;
}
for (var i = 0; i < props.row; i++) {
arrContent[i] = [];
for (var j = 0; j < column; j++) {
arrContent[i][j] = oMatrix.getElement(i, j);
}
}
} else {
if (c_oSer_OMathContentType.Mr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathMr(t, l, oMatr.content, arrContent);
});
oMatr.content.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 c_oAscXAlign.Center:
props.mcJc = MCJC_CENTER;
break;
case c_oAscXAlign.Inside:
props.mcJc = MCJC_INSIDE;
break;
case c_oAscXAlign.Left:
props.mcJc = MCJC_LEFT;
break;
case c_oAscXAlign.Outside:
props.mcJc = MCJC_OUTSIDE;
break;
case c_oAscXAlign.Right:
props.mcJc = MCJC_RIGHT;
break;
default:
props.mcJc = 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.ReadMathCount(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) {
var mc = {};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathMc(t, l, mc);
});
props.mcs.push(mc);
} 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 c_oAscMathJc.Center:
props.mJc = JC_CENTER;
break;
case c_oAscMathJc.CenterGroup:
props.mJc = JC_CENTERGROUP;
break;
case c_oAscMathJc.Left:
props.mJc = JC_LEFT;
break;
case c_oAscMathJc.Right:
props.mJc = JC_RIGHT;
break;
default:
props.mJc = JC_CENTERGROUP;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathMPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.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_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} else {
if (c_oSer_OMathBottomNodesType.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, arrContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.Element === type) {
var lRow = oMatrix.row;
var lColumn = oMatrix.column;
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, arrContent[lRow][lColumn]);
});
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.ReadMathText = function (type, length, oMRun) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
var aUnicodes = [];
if (length > 0) {
aUnicodes = convertUTF16toUnicode(this.stream.GetString2LE(length));
}
for (var nPos = 0, nCount = aUnicodes.length; nPos < nCount; ++nPos) {
var nUnicode = aUnicodes[nPos];
var oText = null;
if (38 == nUnicode) {
oText = new CMathAmp();
} else {
oText = new CMathText(false);
oText.add(nUnicode);
}
if (oText) {
oMRun.Add_ToContent(nPos, oText, false, true);
}
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathMRun = function (type, length, oMRun, props, oParent, oParStruct) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
var oNewElem = null;
if (c_oSer_OMathContentType.MText === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathText(t, l, oMRun);
});
} else {
if (c_oSer_OMathContentType.MRPr === type) {
var mrPr = new CMPrp();
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathMRPr(t, l, mrPr);
});
oMRun.Set_MathPr(mrPr);
} else {
if (c_oSer_OMathContentType.RPr === type) {
var rPr = new CTextPr();
res = this.brPrr.Read(length, rPr);
oMRun.Set_Pr(rPr);
} else {
if (c_oSer_OMathContentType.pagebreak === type) {
oNewElem = new ParaNewLine(break_Page);
} else {
if (c_oSer_OMathContentType.linebreak === type) {
oNewElem = new ParaNewLine();
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
if (null != oNewElem) {
var oNewRun = new ParaRun(oParStruct.paragraph);
oNewRun.Add_ToContent(0, oNewElem, false);
oParStruct.addToContent(oNewRun);
}
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_OMathBottomNodesType.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, props, oParent, oContent, oSub, oSup) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.NaryPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathNaryPr(t, l, props);
});
if (!props.ctrPrp) {
props.ctrPrp = new CTextPr();
}
var oNary = new CNary(props);
if (oParent) {
oParent.addElementToContent(oNary);
}
oSub.content = oNary.getLowerIterator();
oSup.content = oNary.getUpperIterator();
oContent.content = oNary.getBase();
} else {
if (c_oSer_OMathContentType.Sub === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oSub.content);
});
} else {
if (c_oSer_OMathContentType.Sup === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oSup.content);
});
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
if (c_oSer_OMathContentType.CtrlPr) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
oParent.Content[oParent.Content.length - 1].setCtrPrp(props.ctrPrp);
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
return res;
};
this.ReadMathNaryPr = function (type, length, props) {
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, c_oSer_OMathChrType.Chr);
});
} else {
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(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.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();
} 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, oParStruct, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.OMath === type) {
var oMath = new ParaMath();
oMath.Set_Align(props.mJc === JC_CENTER || props.mJc === JC_CENTERGROUP ? align_Center : (props.mJc === JC_LEFT ? align_Left : (props.mJc === JC_RIGHT ? align_Right : props.mJc)));
oParStruct.addToContent(oMath);
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oMath.Root, oParStruct);
});
oMath.Root.Correct_Content(true);
} else {
if (c_oSer_OMathContentType.OMathParaPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathOMathParaPr(t, l, props);
});
} else {
if (c_oSer_OMathContentType.Run === type) {
var oNewRun = new ParaRun(oParStruct.paragraph);
var oRes = {
bRes: true
};
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadRun(t, l, oNewRun, oParStruct, oRes);
});
oParStruct.addToContent(oNewRun);
} 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();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathPhant = function (type, length, props, oParent, oContent) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.PhantPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathPhantPr(t, l, props);
});
var oPhant = new CPhantom(props);
if (oParent) {
oParent.addElementToContent(oPhant);
}
oContent.content = oPhant.getBase();
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathPhantPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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();
} 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 c_oAscTopBot.Bot:
props.pos = LOCATION_BOT;
break;
case c_oAscTopBot.Top:
props.pos = LOCATION_TOP;
break;
default:
props.pos = LOCATION_BOT;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathRad = function (type, length, props, oParent, oRad, oContent, oDeg) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.RadPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathRadPr(t, l, props);
});
oRad.content = new CRadical(props);
if (oParent) {
oParent.addElementToContent(oRad.content);
}
oDeg.content = oRad.content.getDegree();
oContent.content = oRad.content.getBase();
} else {
if (c_oSer_OMathContentType.Deg === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oDeg.content);
});
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadMathRadPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} else {
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;
if (c_oSer_OMathBottomNodesValType.Val == type) {
props.rSpRule = this.stream.GetULongLE();
}
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 c_oAscScript.DoubleStruck:
props.scr = TXT_DOUBLE_STRUCK;
break;
case c_oAscScript.Fraktur:
props.scr = TXT_FRAKTUR;
break;
case c_oAscScript.Monospace:
props.scr = TXT_MONOSPACE;
break;
case c_oAscScript.Roman:
props.scr = TXT_ROMAN;
break;
case c_oAscScript.SansSerif:
props.scr = TXT_SANS_SERIF;
break;
case c_oAscScript.Script:
props.scr = TXT_SCRIPT;
break;
default:
props.scr = TXT_ROMAN;
}
} 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 c_oAscShp.Centered:
props.shp = DELIMITER_SHAPE_CENTERED;
break;
case c_oAscShp.Match:
props.shp = DELIMITER_SHAPE_MATH;
break;
default:
props.shp = DELIMITER_SHAPE_CENTERED;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathSPre = function (type, length, props, oParent, oContent, oSub, oSup) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.SPrePr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathSPrePr(t, l, props);
});
props.type = DEGREE_PreSubSup;
var oSPre = new CDegreeSubSup(props);
if (oParent) {
oParent.addElementToContent(oSPre);
}
oSub.content = oSPre.getLowerIterator();
oSup.content = oSPre.getUpperIterator();
oContent.content = oSPre.getBase();
} else {
if (c_oSer_OMathContentType.Sub === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oSub.content);
});
} else {
if (c_oSer_OMathContentType.Sup === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oSup.content);
});
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
return res;
};
this.ReadMathSPrePr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathSSub = function (type, length, props, oParent, oContent, oSub) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.SSubPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathSSubPr(t, l, props);
});
props.type = DEGREE_SUBSCRIPT;
var oSSub = new CDegree(props);
if (oParent) {
oParent.addElementToContent(oSSub);
}
oSub.content = oSSub.getLowerIterator();
oContent.content = oSSub.getBase();
} else {
if (c_oSer_OMathContentType.Sub === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oSub.content);
});
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadMathSSubPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathSSubSup = function (type, length, props, oParent, oContent, oSub, oSup) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.SSubSupPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathSSubSupPr(t, l, props);
});
props.type = DEGREE_SubSup;
var oSSubSup = new CDegreeSubSup(props);
if (oParent) {
oParent.addElementToContent(oSSubSup);
}
oSub.content = oSSubSup.getLowerIterator();
oSup.content = oSSubSup.getUpperIterator();
oContent.content = oSSubSup.getBase();
} else {
if (c_oSer_OMathContentType.Sub === type) {
if (undefined == oContent.content) {
props.type = DEGREE_SubSup;
var oSSubSup = new CDegreeSubSup(props);
if (oParent) {
oParent.addElementToContent(oSSubSup);
}
oSub.content = oSSubSup.getLowerIterator();
oSup.content = oSSubSup.getUpperIterator();
oContent.content = oSSubSup.getBase();
}
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oSub.content);
});
} else {
if (c_oSer_OMathContentType.Sup === type) {
if (undefined == oContent.content) {
props.type = DEGREE_SubSup;
var oSSubSup = new CDegreeSubSup(props);
if (oParent) {
oParent.addElementToContent(oSSubSup);
}
oSub.content = oSSubSup.getLowerIterator();
oSup.content = oSSubSup.getUpperIterator();
oContent.content = oSSubSup.getBase();
}
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oSup.content);
});
} else {
if (c_oSer_OMathContentType.Element === type) {
if (undefined == oContent.content) {
props.type = DEGREE_SubSup;
var oSSubSup = new CDegreeSubSup(props);
if (oParent) {
oParent.addElementToContent(oSSubSup);
}
oSub.content = oSSubSup.getLowerIterator();
oSup.content = oSSubSup.getUpperIterator();
oContent.content = oSSubSup.getBase();
}
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
return res;
};
this.ReadMathSSubSupPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.AlnScr === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathAlnScr(t, l, props);
});
} else {
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
return res;
};
this.ReadMathSSup = function (type, length, props, oParent, oContent, oSup) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathContentType.SSupPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathSSupPr(t, l, props);
});
props.type = DEGREE_SUPERSCRIPT;
var oSSup = new CDegree(props);
if (oParent) {
oParent.addElementToContent(oSSup);
}
oSup.conten = oSSup.getUpperIterator();
oContent.content = oSSup.getBase();
} else {
if (c_oSer_OMathContentType.Sup === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oSup.conten);
});
} else {
if (c_oSer_OMathContentType.Element === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathArg(t, l, oContent.content);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadMathSSupPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesType.CtrlPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathCtrlPr(t, l, props);
});
} 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 c_oAscSty.Bold:
props.sty = STY_BOLD;
break;
case c_oAscSty.BoldItalic:
props.sty = STY_BI;
break;
case c_oAscSty.Italic:
props.sty = STY_ITALIC;
break;
case c_oAscSty.Plain:
props.sty = STY_PLAIN;
break;
default:
props.sty = STY_ITALIC;
}
} 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 c_oAscFType.Bar:
props.type = BAR_FRACTION;
break;
case c_oAscFType.Lin:
props.type = LINEAR_FRACTION;
break;
case c_oAscFType.NoBar:
props.type = NO_BAR_FRACTION;
break;
case c_oAscFType.Skw:
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 c_oAscTopBot.Bot:
props.vertJc = VJUST_BOT;
break;
case c_oAscTopBot.Top:
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;
};
}
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 = [];
for (var i = 0; i < _count; i++) {
var _at = this.stream.GetUChar();
if (_at != g_nodeAttributeStart) {
break;
}
var _f_i = {};
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);
res = c_oSerConstants.ReadUnknown;
} 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 = {};
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 = [];
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;
var struct;
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 = {};
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 {
if (c_oSer_SettingsType.MathPr === type) {
res = this.bcr.Read1(length, function (t, l) {
return oThis.ReadMathPr(t, l, g_oMathSettings);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
return res;
};
this.ReadMathPr = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_MathPrType.BrkBin === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathBrkBin(t, l, props);
});
} else {
if (c_oSer_MathPrType.BrkBinSub === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathBrkBinSub(t, l, props);
});
} else {
if (c_oSer_MathPrType.DefJc === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathDefJc(t, l, props);
});
} else {
if (c_oSer_MathPrType.DispDef === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathDispDef(t, l, props);
});
} else {
if (c_oSer_MathPrType.InterSp === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathInterSp(t, l, props);
});
} else {
if (c_oSer_MathPrType.IntLim === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathIntLim(t, l, props);
});
} else {
if (c_oSer_MathPrType.IntraSp === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathIntraSp(t, l, props);
});
} else {
if (c_oSer_MathPrType.LMargin === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathLMargin(t, l, props);
});
} else {
if (c_oSer_MathPrType.MathFont === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathMathFont(t, l, props);
});
} else {
if (c_oSer_MathPrType.NaryLim === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathNaryLim(t, l, props);
});
} else {
if (c_oSer_MathPrType.PostSp === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathPostSp(t, l, props);
});
} else {
if (c_oSer_MathPrType.PreSp === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathPreSp(t, l, props);
});
} else {
if (c_oSer_MathPrType.RMargin === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathRMargin(t, l, props);
});
} else {
if (c_oSer_MathPrType.SmallFrac === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathSmallFrac(t, l, props);
});
} else {
if (c_oSer_MathPrType.WrapIndent === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathWrapIndent(t, l, props);
});
} else {
if (c_oSer_MathPrType.WrapRight === type) {
res = this.bcr.Read2(length, function (t, l) {
return oThis.ReadMathWrapRight(t, l, props);
});
} else {
res = c_oSerConstants.ReadUnknown;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return res;
};
this.ReadMathBrkBin = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
var brkBin = this.stream.GetUChar(length);
switch (brkBin) {
case c_oAscBrkBin.After:
props.brkBin = BREAK_AFTER;
break;
case c_oAscBrkBin.Before:
props.brkBin = BREAK_BEFORE;
break;
case c_oAscBrkBin.Repeat:
props.brkBin = BREAK_REPEAT;
break;
default:
props.brkBin = BREAK_REPEAT;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathBrkBinSub = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
var brkBinSub = this.stream.GetUChar(length);
switch (brkBinSub) {
case c_oAscBrkBinSub.PlusMinus:
props.brkBinSub = BREAK_PLUS_MIN;
break;
case c_oAscBrkBinSub.MinusPlus:
props.brkBinSub = BREAK_MIN_PLUS;
break;
case c_oAscBrkBinSub.MinusMinus:
props.brkBinSub = BREAK_MIN_MIN;
break;
default:
props.brkBinSub = BREAK_MIN_MIN;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathDefJc = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
var defJc = this.stream.GetUChar(length);
switch (defJc) {
case c_oAscMathJc.Center:
props.defJc = JC_CENTER;
break;
case c_oAscMathJc.CenterGroup:
props.defJc = JC_CENTERGROUP;
break;
case c_oAscMathJc.Left:
props.defJc = JC_LEFT;
break;
case c_oAscMathJc.Right:
props.defJc = JC_RIGHT;
break;
default:
props.defJc = JC_CENTERGROUP;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathDispDef = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.dispDef = this.stream.GetBool();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathInterSp = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.interSp = this.bcr.ReadDouble();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathMathFont = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.mathFont = this.stream.GetString2LE(length);
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathIntLim = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
var intLim = this.stream.GetUChar(length);
switch (intLim) {
case c_oAscLimLoc.SubSup:
props.intLim = NARY_SubSup;
break;
case c_oAscLimLoc.UndOvr:
props.intLim = NARY_UndOvr;
break;
default:
props.intLim = NARY_SubSup;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathIntraSp = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.intraSp = this.bcr.ReadDouble();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathLMargin = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.lMargin = this.bcr.ReadDouble();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathNaryLim = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
var naryLim = this.stream.GetUChar(length);
switch (naryLim) {
case c_oAscLimLoc.SubSup:
props.naryLim = NARY_SubSup;
break;
case c_oAscLimLoc.UndOvr:
props.naryLim = NARY_UndOvr;
break;
default:
props.naryLim = NARY_SubSup;
}
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathPostSp = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.postSp = this.bcr.ReadDouble();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathPreSp = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.preSp = this.bcr.ReadDouble();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathRMargin = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.rMargin = this.bcr.ReadDouble();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathSmallFrac = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.smallFrac = this.stream.GetBool();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathWrapIndent = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.wrapIndent = this.bcr.ReadDouble();
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
this.ReadMathWrapRight = function (type, length, props) {
var res = c_oSerConstants.ReadOk;
var oThis = this;
if (c_oSer_OMathBottomNodesValType.Val === type) {
props.wrapRight = this.stream.GetBool();
} 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 = {};
}
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 font_info = g_fontApplication.GetFontInfo(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 _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;
}
}
};
function OpenParStruct(oContainer, Content, paragraph) {
this.DocContent = Content;
this.paragraph = paragraph;
this.cur = {
pos: 0,
elem: oContainer
};
this.stack = [this.cur];
}
OpenParStruct.prototype = {
_addToContent: function (elem, pos, oItem) {
if (elem.Internal_Content_Add) {
elem.Internal_Content_Add(pos, oItem, false);
pos++;
} else {
if (elem.Add_ToContent) {
elem.Add_ToContent(pos, oItem, false);
pos++;
}
}
return pos;
},
_GetFromContent: function (elem, nIndex) {
return elem.Content[nIndex];
},
_GetContentLength: function (elem) {
return elem.Content.length;
},
_removeFromContent: function (elem, pos, count) {
if (elem.Remove_FromContent) {
elem.Remove_FromContent(pos, count);
}
},
addToContent: function (oItem) {
this.cur.pos = this._addToContent(this.cur.elem, this.cur.pos, oItem);
},
GetFromContent: function (nIndex) {
return this._GetFromContent(this.cur.elem, nIndex);
},
GetContentLength: function () {
return this._GetContentLength(this.cur.elem);
},
addElem: function (oElem) {
this.cur = {
pos: 0,
elem: oElem
};
this.stack.push(this.cur);
},
commitElem: function () {
var bRes = false;
if (this.stack.length > 1) {
var oPrevElem = this.stack.pop();
this.cur = this.stack[this.stack.length - 1];
if (oPrevElem.elem.Content && oPrevElem.elem.Content.length > 0) {
this.addToContent(oPrevElem.elem);
}
bRes = true;
}
return bRes;
},
commitAll: function () {
while (this.commitElem()) {}
}
};