DocumentServer/OfficeWeb/sdk/PowerPoint/Editor/Format/TextBody.js
nikolay ivanov a8be6b9e72 init repo
2014-07-05 18:22:49 +00:00

782 lines
32 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2014
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
var field_type_slidenum = 0;
var field_type_datetime = 1;
var field_type_datetime1 = 2;
var field_type_datetime2 = 3;
var field_type_datetime3 = 4;
var field_type_datetime4 = 5;
var field_type_datetime5 = 6;
var field_type_datetime6 = 7;
var field_type_datetime7 = 8;
var field_type_datetime8 = 9;
var field_type_datetime9 = 10;
var field_type_datetime10 = 11;
var field_type_datetime11 = 12;
var field_type_datetime12 = 13;
var field_type_datetime13 = 14;
var pHText = [];
pHText[0] = [];
pHText[0][phType_body] = "Slide text";
pHText[0][phType_chart] = "Chart";
pHText[0][phType_clipArt] = "ClipArt";
pHText[0][phType_ctrTitle] = "Slide title";
pHText[0][phType_dgm] = "Diagram";
pHText[0][phType_dt] = "Date and time";
pHText[0][phType_ftr] = "Footer";
pHText[0][phType_hdr] = "Header";
pHText[0][phType_media] = "Media";
pHText[0][phType_obj] = "Slide text";
pHText[0][phType_pic] = "Picture";
pHText[0][phType_sldImg] = "Image";
pHText[0][phType_sldNum] = "Slide number";
pHText[0][phType_subTitle] = "Slide subtitle";
pHText[0][phType_tbl] = "Table";
pHText[0][phType_title] = "Slide title";
var field_months = [];
field_months[0] = [];
field_months[0][0] = "января";
field_months[0][1] = "февраля";
field_months[0][2] = "марта";
field_months[0][3] = "апреля";
field_months[0][4] = "мая";
field_months[0][5] = "июня";
field_months[0][6] = "июля";
field_months[0][7] = "августа";
field_months[0][8] = "сентября";
field_months[0][9] = "октября";
field_months[0][10] = "ноября";
field_months[0][11] = "декабря";
var nOTClip = 0;
var nOTEllipsis = 1;
var nOTOwerflow = 2;
var nTextATB = 0;
var nTextATCtr = 1;
var nTextATDist = 2;
var nTextATJust = 3;
var nTextATT = 4;
var nVertTTeaVert = 0;
var nVertTThorz = 1;
var nVertTTmongolianVert = 2;
var nVertTTvert = 3;
var nVertTTvert270 = 4;
var nVertTTwordArtVert = 5;
var nVertTTwordArtVertRtl = 6;
var nTWTNone = 0;
var nTWTSquare = 1;
function CTextBody(shape) {
this.bodyPr = new CBodyPr();
this.lstStyle = new TextListStyle();
this.content2 = null;
this.compiledBodyPr = new CBodyPr();
this.recalcInfo = {
recalculateBodyPr: true,
recalculateContent2: true
};
this.textPropsForRecalc = [];
this.bRecalculateNumbering = true;
this.Id = g_oIdCounter.Get_NewId();
g_oTableId.Add(this, this.Id);
if (isRealObject(shape)) {
this.setShape(shape);
this.setDocContent(new CDocumentContent(this, editor.WordControl.m_oLogicDocument.DrawingDocument, 0, 0, 0, 20000, false, false));
}
}
CTextBody.prototype = {
getSearchResults: function (str) {
return this.content != null ? this.content.getSearchResults(str) : [];
},
Get_Id: function () {
return this.Id;
},
setLstStyle: function (lstStyle) {
History.Add(this, {
Type: historyitem_SetLstStyle,
oldPr: this.lstStyle,
newPr: lstStyle
});
this.lstStyle = lstStyle;
},
setShape: function (shape) {
History.Add(this, {
Type: historyitem_SetShape,
oldPr: this.shape,
newPr: shape
});
this.shape = shape;
},
setDocContent: function (docContent) {
History.Add(this, {
Type: historyitem_SetDocContent,
oldPr: this.content,
newPr: docContent
});
this.content = docContent;
},
Write_ToBinary2: function (w) {
w.WriteLong(historyitem_type_TextBody);
w.WriteString2(this.Id);
},
Read_FromBinary2: function (r) {
this.Id = r.GetString2();
},
recalculate: function () {},
recalcAll: function () {
this.recalcInfo = {
recalculateBodyPr: true,
recalculateContent2: true
};
this.bRecalculateNumbering = true;
var content = this.content;
for (var i = 0; i < content.Content.length; ++i) {
content.Content[i].Recalc_CompiledPr();
content.Content[i].RecalcInfo.Recalc_0_Type = pararecalc_0_All;
}
this.arrStyles = [];
content.arrStyles = [];
},
recalcColors: function () {
this.content.recalcColors();
},
recalculateBodyPr: function () {
if (this.recalcInfo.recalculateBodyPr) {
this.compiledBodyPr.setDefault();
if (this.shape.isPlaceholder()) {
var hierarchy = this.shape.getHierarchy();
for (var i = hierarchy.length - 1; i > -1; --i) {
if (isRealObject(hierarchy[i]) && isRealObject(hierarchy[i].txBody) && isRealObject(hierarchy[i].txBody.bodyPr)) {
this.compiledBodyPr.merge(hierarchy[i].txBody.bodyPr);
}
}
}
if (isRealObject(this.bodyPr)) {
this.compiledBodyPr.merge(this.bodyPr);
}
}
},
Refresh_RecalcData: function () {},
updateSelectionState: function (drawingDocument) {
var Doc = this.content;
if (true === Doc.Is_SelectionUse() && !Doc.Selection_IsEmpty()) {
drawingDocument.UpdateTargetTransform(this.shape.transformText);
drawingDocument.TargetEnd();
drawingDocument.SelectEnabled(true);
drawingDocument.SelectClear();
this.content.Selection_Draw_Page(this.shape.parent ? this.shape.parent.num : this.shape.chartGroup.parent.num);
drawingDocument.SelectShow();
} else {
drawingDocument.UpdateTargetTransform(this.shape.transformText);
drawingDocument.TargetShow();
drawingDocument.SelectEnabled(false);
}
},
isEmpty: function () {
return this.content.Is_Empty();
},
OnContentReDraw: function () {},
calculateContent: function () {
var parent_object = this.shape.getParentObjects();
for (var i = 0; i < this.textPropsForRecalc.length; ++i) {
var props = this.textPropsForRecalc[i].Value;
if (props && props.FontFamily && typeof props.FontFamily.Name === "string" && isThemeFont(props.FontFamily.Name)) {
props.FontFamily.themeFont = props.FontFamily.Name;
props.FontFamily.Name = getFontInfo(props.FontFamily.Name)(parent_object.theme.themeElements.fontScheme);
}
var TextPr = props;
var parents = parent_object;
if (isRealObject(TextPr) && isRealObject(TextPr.unifill) && isRealObject(TextPr.unifill.fill)) {
TextPr.unifill.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
R: 0,
G: 0,
B: 0,
A: 255
});
var _rgba = TextPr.unifill.getRGBAColor();
TextPr.Color = new CDocumentColor(_rgba.R, _rgba.G, _rgba.B);
}
if (isRealObject(props.FontFamily) && typeof props.FontFamily.Name === "string") {
TextPr.RFonts.Ascii = {
Name: TextPr.FontFamily.Name,
Index: -1
};
TextPr.RFonts.CS = {
Name: TextPr.FontFamily.Name,
Index: -1
};
TextPr.RFonts.HAnsi = {
Name: TextPr.FontFamily.Name,
Index: -1
};
}
}
this.textPropsForRecalc.length = 0;
if (this.bRecalculateNumbering) {
this.content.RecalculateNumbering();
this.bRecalculateNumbering = false;
}
this.content.Set_StartPage(0);
if (this.textFieldFlag) {
this.textFieldFlag = false;
if (this.shape && this.shape.isPlaceholder()) {
var _ph_type = this.shape.getPlaceholderType();
switch (_ph_type) {
case phType_dt:
var _cur_date = new Date();
var _cur_year = _cur_date.getFullYear();
var _cur_month = _cur_date.getMonth();
var _cur_month_day = _cur_date.getDate();
var _cur_week_day = _cur_date.getDay();
var _cur_hour = _cur_date.getHours();
var _cur_minute = _cur_date.getMinutes();
var _cur_second = _cur_date.getSeconds();
var _text_string = "";
switch (this.fieldType) {
default:
_text_string += (_cur_month_day > 9 ? _cur_month_day : "0" + _cur_month_day) + "." + ((_cur_month + 1) > 9 ? (_cur_month + 1) : "0" + (_cur_month + 1)) + "." + _cur_year;
break;
}
var par = this.content.Content[0];
var EndPos = par.Internal_GetEndPos();
var _history_status = History.Is_On();
if (_history_status) {
History.TurnOff();
}
for (var _text_index = 0; _text_index < _text_string.length; ++_text_index) {
if (_text_string[_text_index] != " ") {
par.Internal_Content_Add(EndPos, new ParaText(_text_string[_text_index]));
} else {
par.Internal_Content_Add(EndPos, new ParaSpace(1));
}++EndPos;
}
if (_history_status) {
History.TurnOn();
}
this.calculateContent();
break;
case phType_sldNum:
if (this.shape.parent instanceof Slide) {
var _text_string = "" + (this.shape.parent.num + 1);
par = this.content.Content[0];
EndPos = par.Internal_GetEndPos();
_history_status = History.Is_On();
if (_history_status) {
History.TurnOff();
}
for (_text_index = 0; _text_index < _text_string.length; ++_text_index) {
if (_text_string[_text_index] != " ") {
par.Internal_Content_Add(EndPos, new ParaText(_text_string[_text_index]));
} else {
par.Internal_Content_Add(EndPos, new ParaSpace(1));
}++EndPos;
}
if (_history_status) {
History.TurnOn();
}
this.calculateContent();
}
break;
}
}
}
if (this.bodyPr.textFit !== null && typeof this.bodyPr.textFit === "object") {
if (this.bodyPr.textFit.type === text_fit_NormAuto) {
var text_fit = this.bodyPr.textFit;
var font_scale, spacing_scale;
if (!isNaN(text_fit.fontScale) && typeof text_fit.fontScale === "number") {
font_scale = text_fit.fontScale / 100000;
}
if (!isNaN(text_fit.lnSpcReduction) && typeof text_fit.lnSpcReduction === "number") {
spacing_scale = text_fit.lnSpcReduction / 100000;
}
if (!isNaN(font_scale) && typeof font_scale === "number" || !isNaN(spacing_scale) && typeof spacing_scale === "number") {
var pars = this.content.Content;
for (var index = 0; index < pars.length; ++index) {
var parg = pars[index];
if (!isNaN(spacing_scale) && typeof spacing_scale === "number") {
var spacing = parg.Pr.Spacing;
var spacing2 = parg.Get_CompiledPr(false).ParaPr;
parg.Recalc_CompiledPr();
var spc = (spacing2.Line * spacing_scale);
if (!isNaN(spc) && typeof spc === "number") {
spacing.Line = spc;
}
spc = (spacing2.Before * spacing_scale);
if (!isNaN(spc) && typeof spc === "number") {
spacing.Before = spc;
}
spc = (spacing2.After * spacing_scale);
if (!isNaN(spc) && typeof spc === "number") {
spacing.After = spc;
}
}
if (!isNaN(font_scale) && typeof font_scale === "number") {
var par_font_size = parg.Get_CompiledPr(false).TextPr.FontSize;
parg.Recalc_CompiledPr();
for (var r = 0; r < parg.Content.length; ++r) {
var item = parg.Content[r];
if (item.Type === para_TextPr) {
var value = item.Value;
if (!isNaN(value.FontSize) && typeof value.FontSize === "number") {
value.FontSize = (value.FontSize * font_scale) >> 0;
}
}
}
var result_par_text_pr_font_size = (par_font_size * font_scale) >> 0;
if (!isNaN(result_par_text_pr_font_size) && typeof result_par_text_pr_font_size === "number") {
var b_insert_text_pr = false,
pos = -1;
for (var p = 0; p < parg.Content.length; ++p) {
if (parg.Content[p].Type === para_TextPr) {
if (! (!isNaN(parg.Content[p].Value.FontSize) && typeof parg.Content[p].Value.FontSize === "number")) {
parg.Content[p].Value.FontSize = result_par_text_pr_font_size;
}
break;
}
if (parg.Content[p].Type === para_Text) {
b_insert_text_pr = true;
pos = p;
break;
}
}
if (b_insert_text_pr) {
var history_is_on = History.Is_On();
if (history_is_on) {
History.TurnOff();
}
parg.Internal_Content_Add(p, new ParaTextPr({
FontSize: result_par_text_pr_font_size
}));
if (history_is_on) {
History.TurnOn();
}
}
}
}
}
}
}
this.bodyPr.textFit = null;
this.calculateContent();
return;
}
this.bodyPr.normAutofit = false;
var _l, _t, _r, _b;
var _body_pr = this.getBodyPr();
var sp = this.shape;
if (isRealObject(sp.spPr.geometry) && isRealObject(sp.spPr.geometry.rect)) {
var _rect = sp.spPr.geometry.rect;
_l = _rect.l + _body_pr.lIns;
_t = _rect.t + _body_pr.tIns;
_r = _rect.r - _body_pr.rIns;
_b = _rect.b - _body_pr.bIns;
} else {
_l = _body_pr.lIns;
_t = _body_pr.tIns;
_r = sp.extX - _body_pr.rIns;
_b = sp.extY - _body_pr.bIns;
}
if (_body_pr.upright === false) {
var _content_width;
if (! (_body_pr.vert === nVertTTvert || _body_pr.vert === nVertTTvert270)) {
_content_width = _r - _l;
this.contentWidth = _content_width;
this.contentHeight = _b - _t;
} else {
_content_width = _b - _t;
this.contentWidth = _content_width;
this.contentHeight = _r - _l;
}
} else {
var _full_rotate = sp.getFullRotate();
if ((_full_rotate >= 0 && _full_rotate < Math.PI * 0.25) || (_full_rotate > 3 * Math.PI * 0.25 && _full_rotate < 5 * Math.PI * 0.25) || (_full_rotate > 7 * Math.PI * 0.25 && _full_rotate < 2 * Math.PI)) {
if (! (_body_pr.vert === nVertTTvert || _body_pr.vert === nVertTTvert270)) {
_content_width = _r - _l;
this.contentWidth = _content_width;
this.contentHeight = _b - _t;
} else {
_content_width = _b - _t;
this.contentWidth = _content_width;
this.contentHeight = _r - _l;
}
} else {
if (! (_body_pr.vert === nVertTTvert || _body_pr.vert === nVertTTvert270)) {
_content_width = _b - _t;
this.contentWidth = _content_width;
this.contentHeight = _r - _l;
} else {
_content_width = _r - _l;
this.contentWidth = _content_width;
this.contentHeight = _b - _t;
}
}
}
this.content.Reset(0, 0, _content_width, 20000);
this.content.Recalculate_Page(0, true);
this.contentHeight = this.getSummaryHeight();
if (this.recalcInfo.recalculateContent2) {
var _history_is_on = History.Is_On();
if (_history_is_on) {
History.TurnOff();
}
if (this.shape.isPlaceholder()) {
var text = pHText[0][this.shape.nvSpPr.nvPr.ph.type] != undefined ? pHText[0][this.shape.nvSpPr.nvPr.ph.type] : pHText[0][phType_body];
this.content2 = new CDocumentContent(this, editor.WordControl.m_oDrawingDocument, 0, 0, 0, 0, false, false);
this.content2.Content.length = 0;
var par = new Paragraph(editor.WordControl.m_oDrawingDocument, this.content2, 0, 0, 0, 0, 0);
var EndPos = 0;
for (var key = 0; key < text.length; ++key) {
par.Internal_Content_Add(EndPos++, CreateParaContentFromString(text[key]));
}
if (this.content && this.content.Content[0]) {
if (this.content.Content[0].Pr) {
par.Pr = this.content.Content[0].Pr.Copy();
}
if (this.content.Content[0].rPr) {
par.rPr = clone(this.content.Content[0].rPr);
}
}
this.content2.Internal_Content_Add(0, par);
this.content2.RecalculateNumbering();
this.content2.Set_StartPage(0);
if (_body_pr.upright === false) {
var _content_width;
if (! (_body_pr.vert === nVertTTvert || _body_pr.vert === nVertTTvert270)) {
_content_width = _r - _l;
this.contentWidth2 = _content_width;
this.contentHeight2 = _b - _t;
} else {
_content_width = _b - _t;
this.contentWidth2 = _content_width;
this.contentHeight2 = _r - _l;
}
} else {
var _full_rotate = sp.getFullRotate();
if ((_full_rotate >= 0 && _full_rotate < Math.PI * 0.25) || (_full_rotate > 3 * Math.PI * 0.25 && _full_rotate < 5 * Math.PI * 0.25) || (_full_rotate > 7 * Math.PI * 0.25 && _full_rotate < 2 * Math.PI)) {
if (! (_body_pr.vert === nVertTTvert || _body_pr.vert === nVertTTvert270)) {
_content_width = _r - _l;
this.contentWidth2 = _content_width;
this.contentHeight2 = _b - _t;
} else {
_content_width = _b - _t;
this.contentWidth2 = _content_width;
this.contentHeight2 = _r - _l;
}
} else {
if (! (_body_pr.vert === nVertTTvert || _body_pr.vert === nVertTTvert270)) {
_content_width = _b - _t;
this.contentWidth2 = _content_width;
this.contentHeight2 = _r - _l;
} else {
_content_width = _r - _l;
this.contentWidth2 = _content_width;
this.contentHeight2 = _b - _t;
}
}
}
this.content2.Reset(0, 0, _content_width, 20000);
this.content2.Recalculate_Page(0, true);
this.contentHeight2 = this.getSummaryHeight2();
}
if (_history_is_on) {
History.TurnOn();
}
this.recalcInfo.recalculateContent2 = false;
}
},
copy: function (txBody) {
txBody.setDocContent(this.content.Copy(txBody));
},
updateCursorType: function (x, y, e) {
if (this.shape && this.shape.invertTransformText) {
var tx = this.shape.invertTransformText.TransformPointX(x, y);
var ty = this.shape.invertTransformText.TransformPointY(x, y);
this.content.Update_CursorType(tx, ty, 0);
}
},
Get_StartPage_Absolute: function () {
return isRealObject(this.shape) && isRealObject(this.shape.parent) && isRealNumber(this.shape.parent.num) ? this.shape.parent.num : (this.shape.chartGroup ? this.shape.chartGroup.parent.num : 0);
},
Is_HdrFtr: function () {
return false;
},
Get_PageContentStartPos: function (pageNum) {
return {
X: 0,
Y: 0,
XLimit: this.contentWidth,
YLimit: 20000
};
},
Get_Numbering: function () {
return new CNumbering();
},
getBodyPr: function () {
if (this.recalcInfo.recalculateBodyPr) {
this.recalculateBodyPr();
this.recalcInfo.recalculateBodyPr = false;
}
return this.compiledBodyPr;
},
onParagraphChanged: function () {
if (this.shape) {
this.shape.onParagraphChanged();
}
},
getSummaryHeight: function () {
return this.content.Get_SummaryHeight();
},
getSummaryHeight2: function () {
return this.content2 ? this.content2.Get_SummaryHeight() : 0;
},
getCompiledBodyPr: function () {
this.recalculateBodyPr();
return this.compiledBodyPr;
},
addPhContent: function (phType) {},
Get_TableStyleForPara: function () {
return null;
},
draw: function (graphics) {
if ((!this.content || this.content.Is_Empty()) && this.content2 != null && !this.shape.addTextFlag && (this.shape.isEmptyPlaceholder ? this.shape.isEmptyPlaceholder() : false)) {
if (graphics.IsNoDrawingEmptyPlaceholder !== true && graphics.IsNoDrawingEmptyPlaceholderText !== true) {
if (graphics.IsNoSupportTextDraw) {
var _w2 = this.content2.XLimit;
var _h2 = this.content2.Get_SummaryHeight();
graphics.rect(this.content2.X, this.content2.Y, _w2, _h2);
}
this.content2.Draw(0, graphics);
}
} else {
if (this.content) {
if (graphics.IsNoSupportTextDraw) {
var _w = this.content.XLimit;
var _h = this.content.Get_SummaryHeight();
graphics.rect(this.content.X, this.content.Y, _w, _h);
}
this.content.Draw(0, graphics);
}
}
},
Get_Styles: function (level) {
return this.shape.Get_Styles(level);
},
Is_Cell: function () {
return false;
},
OnContentRecalculate: function () {},
Set_CurrentElement: function () {},
writeToBinary: function (w) {
this.bodyPr.Write_ToBinary2(w);
writeToBinaryDocContent(this.content, w);
},
getMargins: function () {
var _parent_transform = this.shape.transform;
var _l;
var _r;
var _b;
var _t;
var _body_pr = this.getBodyPr();
var sp = this.shape;
if (isRealObject(sp.spPr.geometry) && isRealObject(sp.spPr.geometry.rect)) {
var _rect = sp.spPr.geometry.rect;
_l = _rect.l + _body_pr.lIns;
_t = _rect.t + _body_pr.tIns;
_r = _rect.r - _body_pr.rIns;
_b = _rect.b - _body_pr.bIns;
} else {
_l = _body_pr.lIns;
_t = _body_pr.tIns;
_r = sp.extX - _body_pr.rIns;
_b = sp.extY - _body_pr.bIns;
}
var x_lt, y_lt, x_rb, y_rb;
x_lt = _parent_transform.TransformPointX(_l, _t);
y_lt = _parent_transform.TransformPointY(_l, _t);
x_rb = _parent_transform.TransformPointX(_r, _b);
y_rb = _parent_transform.TransformPointY(_r, _b);
var hc = (_r - _l) / 2;
var vc = (_b - _t) / 2;
var xc = (x_lt + x_rb) / 2;
var yc = (y_lt + y_rb) / 2;
var tx = xc - hc;
var ty = yc - vc;
return {
L: xc - hc,
T: yc - vc,
R: xc + hc,
B: yc + vc,
textMatrix: this.shape.transform
};
},
readFromBinary: function (r, drawingDocument) {
var bodyPr = new CBodyPr();
bodyPr.Read_FromBinary2(r);
if (isRealObject(this.parent) && this.parent.setBodyPr) {
this.parent.setBodyPr(bodyPr);
}
var is_on = History.Is_On();
if (is_on) {
History.TurnOff();
}
var dc = new CDocumentContent(this, editor.WordControl.m_oDrawingDocument, 0, 0, 0, 0, false, false);
readFromBinaryDocContent(dc, r);
if (is_on) {
History.TurnOn();
}
for (var i = 0; i < dc.Content.length; ++i) {
if (i > 0) {
this.content.Add_NewParagraph();
}
var par = dc.Content[i];
for (var j = 0; j < par.Content.length; ++j) {
if (! (par.Content[j] instanceof ParaEnd || par.Content[j] instanceof ParaEmpty || par.Content[j] instanceof ParaNumbering) && par.Content[j].Copy) {
this.content.Paragraph_Add(par.Content[j].Copy());
}
}
}
},
Undo: function (data) {
switch (data.Type) {
case historyitem_SetShape:
this.shape = data.oldPr;
break;
case historyitem_SetDocContent:
this.content = data.oldPr;
break;
case historyitem_SetLstStyle:
this.lstStyle = data.oldPr;
break;
}
},
Redo: function (data) {
switch (data.Type) {
case historyitem_SetShape:
this.shape = data.newPr;
break;
case historyitem_SetDocContent:
this.content = data.newPr;
break;
case historyitem_SetLstStyle:
this.lstStyle = data.newPr;
break;
}
},
Save_Changes: function (data, w) {
w.WriteLong(historyitem_type_TextBody);
w.WriteLong(data.Type);
switch (data.Type) {
case historyitem_SetShape:
case historyitem_SetDocContent:
w.WriteBool(isRealObject(data.newPr));
if (isRealObject(data.newPr)) {
w.WriteString2(data.newPr.Get_Id());
}
break;
case historyitem_SetLstStyle:
w.WriteBool(isRealObject(data.newPr));
if (isRealObject(data.newPr)) {
data.newPr.Write_ToBinary2(w);
}
break;
}
},
Load_Changes: function (r) {
if (r.GetLong() === historyitem_type_TextBody) {
var type = r.GetLong();
switch (type) {
case historyitem_SetShape:
if (r.GetBool()) {
this.shape = g_oTableId.Get_ById(r.GetString2());
}
break;
case historyitem_SetDocContent:
if (r.GetBool()) {
this.content = g_oTableId.Get_ById(r.GetString2());
}
break;
case historyitem_SetLstStyle:
if (r.GetBool()) {
this.lstStyle = new TextListStyle();
this.lstStyle.Read_FromBinary2(r);
} else {
this.lstStyle = null;
}
break;
}
}
},
getSelectedTextHtml: function () {},
Refresh_RecalcData2: function () {},
getRectWidth: function (maxWidth) {
var body_pr = this.getBodyPr();
var r_ins = body_pr.rIns;
var l_ins = body_pr.lIns;
var max_content_width = maxWidth - r_ins - l_ins;
this.content.RecalculateNumbering();
this.content.Reset(0, 0, max_content_width, 20000);
this.content.Recalculate_Page(0, true);
var max_width = 0;
for (var i = 0; i < this.content.Content.length; ++i) {
var par = this.content.Content[i];
for (var j = 0; j < par.Lines.length; ++j) {
if (par.Lines[j].Ranges[0].W > max_width) {
max_width = par.Lines[j].Ranges[0].W;
}
}
}
return max_width + 2 + r_ins + l_ins;
},
getRectHeight: function (maxHeight, width) {
this.content.RecalculateNumbering();
this.content.Reset(0, 0, width, 20000);
this.content.Recalculate_Page(0, true);
var content_height = this.getSummaryHeight();
var t_ins = isRealNumber(this.bodyPr.tIns) ? this.bodyPr.tIns : 1.27;
var b_ins = isRealNumber(this.bodyPr.bIns) ? this.bodyPr.bIns : 1.27;
return content_height + t_ins + b_ins;
}
};
function CreateParaContentFromString(str) {
if (str == "\t") {
return new ParaTab();
} else {
if (str == "\n") {
return new ParaNewLine(break_Line);
} else {
if (str != " ") {
return new ParaText(str);
} else {
return new ParaSpace(1);
}
}
}
}