/* * (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 * */ function CGraphicFrame(parent) { this.graphicObject = null; this.nvGraphicFramePr = null; this.spPr = new CSpPr(); this.recalcInfo = { recalculateTransform: true, recalculateSizes: true, recalculateNumbering: true, recalculateShapeHierarchy: true }; this.x = null; this.y = null; this.extX = null; this.extY = null; this.transform = new CMatrix(); this.compiledHierarchy = []; this.textPropsForRecalc = []; this.Lock = new CLock(); this.Id = g_oIdCounter.Get_NewId(); g_oTableId.Add(this, this.Id); this.stlesForParagraph = []; if (parent) { this.setParent(parent); var nv_sp_pr = new UniNvPr(); nv_sp_pr.cNvPr.id = ++parent.maxId; this.setNvSpPr(nv_sp_pr); } } CGraphicFrame.prototype = { getCurDocumentContent: function () { return this.graphicObject.CurCell ? this.graphicObject.CurCell.Content : null; }, setSpPr: function (spPr) { History.Add(this, { Type: historyitem_SetSetSpPr, oldPr: this.spPr, newPr: spPr }); this.spPr = spPr; }, copy: function (sp) { if (! (sp instanceof CGraphicFrame)) { sp = new CGraphicFrame(); } sp.setSpPr(this.spPr.createDuplicate()); if (this.nvGraphicFramePr) { sp.setNvSpPr(this.nvGraphicFramePr.createDuplicate()); } var table = this.graphicObject.Copy(sp); sp.setGraphicObject(table); return sp; }, isEmptyPlaceholder: function () { return false; }, getAllFonts: function (fonts) { if (this.graphicObject) { for (var i = 0; i < this.graphicObject.Content.length; ++i) { var row = this.graphicObject.Content[i]; var cells = row.Content; for (var j = 0; j < cells.length; ++j) { cells[j].Content.Document_Get_AllFontNames(fonts); } } delete fonts["+mj-lt"]; delete fonts["+mn-lt"]; delete fonts["+mj-ea"]; delete fonts["+mn-ea"]; delete fonts["+mj-cs"]; delete fonts["+mn-cs"]; } }, isSimpleObject: function () { return true; }, Cursor_MoveToStartPos: function () { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveToStartPos(); this.graphicObject.RecalculateCurPos(); } }, Cursor_MoveToEndPos: function () { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveToEndPos(); this.graphicObject.RecalculateCurPos(); } }, getSearchResults: function (str) { if (this.graphicObject instanceof CTable) { var ret = []; var rows = this.graphicObject.Content; for (var i = 0; i < rows.length; ++i) { var cells = rows[i].Content; for (var j = 0; j < cells.length; ++j) { var cell = cells[j]; var s_arr = cell.Content.getSearchResults(str); if (Array.isArray(s_arr) && s_arr.length > 0) { for (var t = 0; t < s_arr.length; ++t) { var s = {}; s.id = STATES_ID_TEXT_ADD; s.textObject = this; var TableState = new Object(); TableState.Selection = { Start: true, Use: true, StartPos: { Pos: { Row: i, Cell: j }, X: this.graphicObject.Selection.StartPos.X, Y: this.graphicObject.Selection.StartPos.Y }, EndPos: { Pos: { Row: i, Cell: j }, X: this.graphicObject.Selection.EndPos.X, Y: this.graphicObject.Selection.EndPos.Y }, Type: table_Selection_Text, Data: null, Type2: table_Selection_Common, Data2: null }; TableState.Selection.Data = new Array(); TableState.CurCell = { Row: i, Cell: j }; s_arr[t].push(TableState); s.textSelectionState = s_arr[t]; ret.push(s); } } } } return ret; } return []; }, hitInPath: function () { return false; }, setGraphicObject: function (graphicObject) { History.Add(this, { Type: historyitem_SetGraphicObject, oldPr: this.graphicObject, newPr: graphicObject }); this.graphicObject = graphicObject; }, setNvSpPr: function (pr) { History.Add(this, { Type: historyitem_SetSetNvSpPr, oldPr: this.nvGraphicFramePr, newPr: pr }); this.nvGraphicFramePr = pr; if (this.parent && pr && pr.cNvPr && isRealNumber(pr.cNvPr.id)) { if (pr.cNvPr.id > this.parent.maxId) { this.parent.maxId = pr.cNvPr.id + 1; } } }, paragraphFormatPaste: function (CopyTextPr, CopyParaPr, Bool) { if (isRealObject(this.graphicObject)) { this.graphicObject.Paragraph_Format_Paste(CopyTextPr, CopyParaPr, Bool); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, Paragraph_ClearFormatting: function () { if (isRealObject(this.graphicObject)) { this.graphicObject.Paragraph_ClearFormatting(); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, Set_Props: function (props) { if (this.graphicObject) { var bApplyToAll = this.parent.graphicObjects.State.textObject !== this; this.graphicObject.Set_Props(props, bApplyToAll); this.OnContentRecalculate(); editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, pointInSelectedText: function (x, y) { if (this.graphicObject) { var tx = this.invertTransform.TransformPointX(x, y); var ty = this.invertTransform.TransformPointY(x, y); return this.graphicObject.Selection_Check(tx, ty, this.parent.num); } return false; }, updateCursorType: function (x, y, e) { var tx = this.invertTransform.TransformPointX(x, y); var ty = this.invertTransform.TransformPointY(x, y); this.graphicObject.Update_CursorType(tx, ty, 0); }, sendMouseData: function () {}, Get_Id: function () { return this.Id; }, getIsSingleBody: function () { if (!this.isPlaceholder()) { return false; } if (this.getPlaceholderType() !== phType_body) { return false; } if (this.parent && this.parent.cSld && Array.isArray(this.parent.cSld.spTree)) { var sp_tree = this.parent.cSld.spTree; for (var i = 0; i < sp_tree.length; ++i) { if (sp_tree[i] !== this && sp_tree[i].getPlaceholderType && sp_tree[i].getPlaceholderType() === phType_body) { return true; } } } return true; }, checkNotNullTransform: function () { if (this.spPr.xfrm && this.spPr.xfrm.isNotNull()) { return true; } if (this.isPlaceholder()) { var ph_type = this.getPlaceholderType(); var ph_index = this.getPlaceholderIndex(); var b_is_single_body = this.getIsSingleBody(); switch (this.parent.kind) { case SLIDE_KIND: var placeholder = this.parent.Layout.getMatchingShape(ph_type, ph_index, b_is_single_body); if (placeholder && placeholder.spPr && placeholder.spPr.xfrm && placeholder.spPr.xfrm.isNotNull()) { return true; } placeholder = this.parent.Layout.Master.getMatchingShape(ph_type, ph_index, b_is_single_body); return placeholder && placeholder.spPr && placeholder.spPr.xfrm && placeholder.spPr.xfrm.isNotNull(); case LAYOUT_KIND: var placeholder = this.parent.Master.getMatchingShape(ph_type, ph_index, b_is_single_body); return placeholder && placeholder.spPr && placeholder.spPr.xfrm && placeholder.spPr.xfrm.isNotNull(); } } return false; }, getHierarchy: function () { if (this.recalcInfo.recalculateShapeHierarchy) { this.compiledHierarchy.length = 0; var hierarchy = this.compiledHierarchy; if (this.isPlaceholder()) { var ph_type = this.getPlaceholderType(); var ph_index = this.getPlaceholderIndex(); var b_is_single_body = this.getIsSingleBody(); switch (this.parent.kind) { case SLIDE_KIND: hierarchy.push(this.parent.Layout.getMatchingShape(ph_type, ph_index, b_is_single_body)); hierarchy.push(this.parent.Layout.Master.getMatchingShape(ph_type, ph_index, b_is_single_body)); break; case LAYOUT_KIND: hierarchy.push(this.parent.Master.getMatchingShape(ph_type, ph_index, b_is_single_body)); break; } } this.recalcInfo.recalculateShapeHierarchy = true; } return this.compiledHierarchy; }, recalculate: function () { if (isRealObject(this.graphicObject) && isRealObject(this.parent) && (Array.isArray(this.graphicObject.Content) && this.graphicObject.Content.length > 0)) { if (this.recalcInfo.recalculateNumbering) { var rows = this.graphicObject.Content; for (var i = 0; i < rows.length; ++i) { var row = rows[i]; var cells = row.Content; for (var j = 0; j < cells.length; ++j) { var cell = cells[j]; cell.Content.RecalculateNumbering(); } } } this.graphicObject.X = 0; this.graphicObject.Y = 0; this.graphicObject.PageNum = 0; var parent_object = this.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)) { 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; this.graphicObject.Recalculate_Page(0); } if (this.recalcInfo.recalculateSizes) { this.recalculateSizes(); this.recalcInfo.recalculateSizes = false; } if (this.recalcInfo.recalculateTransform) { this.recalculateTransform(); this.recalcInfo.recalculateTransform = false; } }, onParagraphChanged: function () { this.recalcInfo.recalculateSizes = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, recalculateSizes: function () { this.graphicObject.XLimit -= this.graphicObject.X; this.graphicObject.YLimit -= this.graphicObject.Y; this.graphicObject.X = 0; this.graphicObject.Y = 0; this.graphicObject.X_origin = 0; var _page_bounds = this.graphicObject.Get_PageBounds(0); this.spPr.xfrm.extY = _page_bounds.Bottom - _page_bounds.Top; this.spPr.xfrm.extX = _page_bounds.Right - _page_bounds.Left; }, Selection_Is_OneElement: function () { return true; }, recalculateCurPos: function () { this.graphicObject.RecalculateCurPos(); }, isShape: function () { return false; }, isImage: function () { return false; }, isGroup: function () { return false; }, isChart: function () { return false; }, isTable: function () { return this.graphicObject instanceof CTable; }, recalcAllColors: function () { this.recalcInfo.recalculateNumbering = true; this.stlesForParagraph = []; this.graphicObject.Recalc_CompiledPr(); }, recalcAll: function () { this.recalcInfo = { recalculateTransform: true, recalculateSizes: true, recalculateNumbering: true, recalculateShapeHierarchy: true }; this.stlesForParagraph = []; this.graphicObject.Recalc_CompiledPr(); }, Hyperlink_CanAdd: function (bCheck) { if (this.graphicObject) { return this.graphicObject.Hyperlink_CanAdd(bCheck); } return false; }, Hyperlink_Check: function (bCheck) { if (this.graphicObject) { return this.graphicObject.Hyperlink_Check(bCheck); } return false; }, Hyperlink_Add: function (HyperProps) { if (this.graphicObject) { this.graphicObject.Hyperlink_Add(HyperProps); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, Hyperlink_Modify: function (HyperProps) { if (this.graphicObject) { this.graphicObject.Hyperlink_Modify(HyperProps); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, Hyperlink_Remove: function () { if (this.graphicObject) { this.graphicObject.Hyperlink_Remove(); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, getTransformMatrix: function () { return this.transform; if (this.recalcInfo.recalculateTransform) { this.recalculateTransform(); this.recalcInfo.recalculateTransform = false; } return this.transform; }, OnContentReDraw: function () {}, applyAllTextProps: function (textPr) { if (this.graphicObject) { this.graphicObject.Set_ApplyToAll(true); this.graphicObject.Paragraph_Add(textPr); this.graphicObject.Set_ApplyToAll(false); this.recalcInfo.recalculateSizes = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, getRectBounds: function () { var transform = this.getTransformMatrix(); var w = this.extX; var h = this.extY; var rect_points = [{ x: 0, y: 0 }, { x: w, y: 0 }, { x: w, y: h }, { x: 0, y: h }]; var min_x, max_x, min_y, max_y; min_x = transform.TransformPointX(rect_points[0].x, rect_points[0].y); min_y = transform.TransformPointY(rect_points[0].x, rect_points[0].y); max_x = min_x; max_y = min_y; var cur_x, cur_y; for (var i = 1; i < 4; ++i) { cur_x = transform.TransformPointX(rect_points[i].x, rect_points[i].y); cur_y = transform.TransformPointY(rect_points[i].x, rect_points[i].y); if (cur_x < min_x) { min_x = cur_x; } if (cur_x > max_x) { max_x = cur_x; } if (cur_y < min_y) { min_y = cur_y; } if (cur_y > max_y) { max_y = cur_y; } } return { minX: min_x, maxX: max_x, minY: min_y, maxY: max_y }; }, changeSize: function (kw, kh) {}, getTransform: function () { if (this.recalcInfo.recalculateTransform) { this.recalculateTransform(); this.recalcInfo.recalculateTransform = false; } return { x: this.x, y: this.y, extX: this.extX, extY: this.extY, rot: this.rot, flipH: this.flipH, flipV: this.flipV }; }, setXfrm: function (offX, offY, extX, extY, rot, flipH, flipV) { if (this.spPr.xfrm.isNotNull()) { if (isRealNumber(offX) && isRealNumber(offY)) { this.setOffset(offX, offY); } if (isRealNumber(extX) && isRealNumber(extY)) { this.setExtents(extX, extY); } if (isRealNumber(rot)) { this.setRotate(rot); } if (isRealBool(flipH) && isRealBool(flipV)) { this.setFlips(flipH, flipV); } } else { var transform = this.getTransform(); if (isRealNumber(offX) && isRealNumber(offY)) { this.setOffset(offX, offY); } else { this.setOffset(transform.x, transform.y); } if (isRealNumber(extX) && isRealNumber(extY)) { this.setExtents(extX, extY); } else { this.setExtents(transform.extX, transform.extY); } if (isRealNumber(rot)) { this.setRotate(rot); } else { this.setRotate(transform.rot); } if (isRealBool(flipH) && isRealBool(flipV)) { this.setFlips(flipH, flipV); } else { this.setFlips(transform.flipH, transform.flipV); } } }, setRotate: function (rot) { var xfrm = this.spPr.xfrm; History.Add(this, { Type: historyitem_SetShapeRot, oldRot: xfrm.rot, newRot: rot }); this.recalcInfo.recalculateTransform = true; xfrm.rot = rot; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, setOffset: function (offX, offY) { History.Add(this, { Type: historyitem_SetShapeOffset, oldOffsetX: this.spPr.xfrm.offX, newOffsetX: offX, oldOffsetY: this.spPr.xfrm.offY, newOffsetY: offY }); this.spPr.xfrm.offX = offX; this.spPr.xfrm.offY = offY; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, setExtents: function (extX, extY) { History.Add(this, { Type: historyitem_SetShapeExtents, oldExtentX: this.spPr.xfrm.extX, newExtentX: extX, oldExtentY: this.spPr.xfrm.extY, newExtentY: extY }); this.spPr.xfrm.extX = extX; this.spPr.xfrm.extY = extY; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, setFlips: function (flipH, flipV) { History.Add(this, { Type: historyitem_SetShapeFlips, oldFlipH: this.spPr.xfrm.flipH, newFlipH: flipH, oldFlipV: this.spPr.xfrm.flipV, newFlipV: flipV }); this.spPr.xfrm.flipH = flipH; this.spPr.xfrm.flipV = flipV; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, canRotate: function () { return false; }, canResize: function () { return false; }, canMove: function () { return true; }, canGroup: function () { return true; }, canChangeAdjustments: function () { return true; }, createRotateTrack: function () { return new RotateTrackShapeImage(this); }, createResizeTrack: function (cardDirection) { return new ResizeTrackShapeImage(this, cardDirection); }, createMoveTrack: function () { return new MoveShapeImageTrack(this); }, getSnapArrays: function (snapX, snapY) { var transform = this.getTransformMatrix(); snapX.push(transform.tx); snapX.push(transform.tx + this.extX * 0.5); snapX.push(transform.tx + this.extX); snapY.push(transform.ty); snapY.push(transform.ty + this.extY * 0.5); snapY.push(transform.ty + this.extY); }, createRotateInGroupTrack: function () { return new RotateTrackShapeImageInGroup(this); }, createResizeInGroupTrack: function (cardDirection) { return new ResizeTrackShapeImageInGroup(this, cardDirection); }, createMoveInGroupTrack: function () { return new MoveShapeImageTrackInGroup(this); }, hitInInnerArea: function (x, y) { var invert_transform = this.getInvertTransform(); var x_t = invert_transform.TransformPointX(x, y); var y_t = invert_transform.TransformPointY(x, y); return x_t > 0 && x_t < this.extX && y_t > 0 && y_t < this.extY; }, hitInTextRect: function (x, y) { return this.hitInInnerArea(x, y); }, getInvertTransform: function () { if (this.recalcInfo.recalculateTransform) { this.recalculateTransform(); } return this.invertTransform; }, hitInBoundingRect: function (x, y) { var invert_transform = this.getInvertTransform(); var x_t = invert_transform.TransformPointX(x, y); var y_t = invert_transform.TransformPointY(x, y); var _hit_context = this.getParentObjects().presentation.DrawingDocument.CanvasHitContext; return (HitInLine(_hit_context, x_t, y_t, 0, 0, this.extX, 0) || HitInLine(_hit_context, x_t, y_t, this.extX, 0, this.extX, this.extY) || HitInLine(_hit_context, x_t, y_t, this.extX, this.extY, 0, this.extY) || HitInLine(_hit_context, x_t, y_t, 0, this.extY, 0, 0)); }, Document_UpdateRulersState: function (margins) { if (this.graphicObject) { this.graphicObject.Document_UpdateRulersState(this.parent.num); } }, Get_PageLimits: function (PageIndex) { return { X: 0, Y: 0, XLimit: Page_Width, YLimit: Page_Height }; }, getParentObjects: function () { var parents = { slide: null, layout: null, master: null, theme: null }; switch (this.parent.kind) { case SLIDE_KIND: parents.slide = this.parent; parents.layout = this.parent.Layout; parents.master = this.parent.Layout.Master; parents.theme = this.parent.Layout.Master.Theme; parents.presentation = this.parent.Layout.Master.presentation; break; case LAYOUT_KIND: parents.layout = this.parent; parents.master = this.parent.Master; parents.theme = this.parent.Master.Theme; parents.presentation = this.parent.Master.presentation; break; case MASTER_KIND: parents.master = this.parent; parents.theme = this.parent.Theme; parents.presentation = this.parent.presentation; break; } return parents; }, Is_HdrFtr: function (bool) { if (bool) { return null; } return false; }, Is_TableCellContent: function () { return false; }, Is_InTable: function () { return null; }, selectionSetStart: function (e, x, y, slideIndex) { if (isRealObject(this.graphicObject)) { var tx, ty; tx = this.invertTransform.TransformPointX(x, y); ty = this.invertTransform.TransformPointY(x, y); if (g_mouse_event_type_down === e.Type) { if (this.graphicObject.Is_TableBorder(tx, ty, 0)) { History.Create_NewPoint(); } } this.graphicObject.Selection_SetStart(tx, ty, 0, e); this.graphicObject.RecalculateCurPos(); return; } }, isTableBorder: function (x, y) { var tx, ty; tx = this.invertTransform.TransformPointX(x, y); ty = this.invertTransform.TransformPointY(x, y); return this.graphicObject.Is_TableBorder(tx, ty, 0) != null; }, selectionSetEnd: function (e, x, y, slideIndex) { if (isRealObject(this.graphicObject)) { var tx, ty; tx = this.invertTransform.TransformPointX(x, y); ty = this.invertTransform.TransformPointY(x, y); this.graphicObject.Selection_SetEnd(tx, ty, 0, e); if (g_mouse_event_type_up === e.Type) { editor.WordControl.m_oLogicDocument.Recalculate(); } } }, updateSelectionState: function () { if (isRealObject(this.graphicObject)) { var drawingDocument = this.parent.presentation.DrawingDocument; var Doc = this.graphicObject; if (true === Doc.Is_SelectionUse() && !Doc.Selection_IsEmpty()) { drawingDocument.UpdateTargetTransform(this.transform); drawingDocument.TargetEnd(); drawingDocument.SelectEnabled(true); drawingDocument.SelectClear(); Doc.Selection_Draw_Page(this.parent.num); drawingDocument.SelectShow(); } else { drawingDocument.UpdateTargetTransform(this.transform); drawingDocument.TargetShow(); drawingDocument.SelectEnabled(false); } } else { this.parent.presentation.DrawingDocument.UpdateTargetTransform(null); this.parent.presentation.DrawingDocument.TargetEnd(); this.parent.presentation.DrawingDocument.SelectEnabled(false); this.parent.presentation.DrawingDocument.SelectClear(); this.parent.presentation.DrawingDocument.SelectShow(); } }, updateInterfaceTextState: function () { if (this.graphicObject !== null && typeof this.graphicObject === "object" && typeof this.graphicObject.Document_UpdateInterfaceState === "function") { return this.graphicObject.Document_UpdateInterfaceState(); } }, drawAdjustments: function () {}, recalculateTransform: function () { if (!isRealObject(this.group)) { if (this.spPr.xfrm.isNotNull()) { var xfrm = this.spPr.xfrm; this.x = xfrm.offX; this.y = xfrm.offY; this.extX = xfrm.extX; this.extY = xfrm.extY; this.rot = isRealNumber(xfrm.rot) ? xfrm.rot : 0; this.flipH = xfrm.flipH === true; this.flipV = xfrm.flipV === true; } else { if (this.isPlaceholder()) { var hierarchy = this.getHierarchy(); for (var i = 0; i < hierarchy.length; ++i) { var hierarchy_sp = hierarchy[i]; if (isRealObject(hierarchy_sp) && hierarchy_sp.spPr.xfrm.isNotNull()) { var xfrm = hierarchy_sp.spPr.xfrm; this.x = xfrm.offX; this.y = xfrm.offY; this.extX = xfrm.extX; this.extY = xfrm.extY; this.rot = isRealNumber(xfrm.rot) ? xfrm.rot : 0; this.flipH = xfrm.flipH === true; this.flipV = xfrm.flipV === true; break; } } if (i === hierarchy.length) { this.x = 0; this.y = 0; this.extX = 5; this.extY = 5; this.rot = 0; this.flipH = false; this.flipV = false; } } else { this.x = 0; this.y = 0; this.extX = 5; this.extY = 5; this.rot = 0; this.flipH = false; this.flipV = false; } } } else { var xfrm; if (this.spPr.xfrm.isNotNull()) { xfrm = this.spPr.xfrm; } else { if (this.isPlaceholder()) { var hierarchy = this.getHierarchy(); for (var i = 0; i < hierarchy.length; ++i) { var hierarchy_sp = hierarchy[i]; if (isRealObject(hierarchy_sp) && hierarchy_sp.spPr.xfrm.isNotNull()) { xfrm = hierarchy_sp.spPr.xfrm; break; } } if (i === hierarchy.length) { xfrm = new CXfrm(); xfrm.offX = 0; xfrm.offX = 0; xfrm.extX = 5; xfrm.extY = 5; } } else { xfrm = new CXfrm(); xfrm.offX = 0; xfrm.offY = 0; xfrm.extX = 5; xfrm.extY = 5; } } var scale_scale_coefficients = this.group.getResultScaleCoefficients(); this.x = scale_scale_coefficients.cx * (xfrm.offX - this.group.spPr.xfrm.chOffX); this.y = scale_scale_coefficients.cy * (xfrm.offY - this.group.spPr.xfrm.chOffY); this.extX = scale_scale_coefficients.cx * xfrm.extX; this.extY = scale_scale_coefficients.cy * xfrm.extY; this.rot = isRealNumber(xfrm.rot) ? xfrm.rot : 0; this.flipH = xfrm.flipH === true; this.flipV = xfrm.flipV === true; } this.transform.Reset(); var hc = this.extX * 0.5; var vc = this.extY * 0.5; global_MatrixTransformer.TranslateAppend(this.transform, -hc, -vc); if (this.flipH) { global_MatrixTransformer.ScaleAppend(this.transform, -1, 1); } if (this.flipV) { global_MatrixTransformer.ScaleAppend(this.transform, 1, -1); } global_MatrixTransformer.RotateRadAppend(this.transform, -this.rot); global_MatrixTransformer.TranslateAppend(this.transform, this.x + hc, this.y + vc); if (isRealObject(this.group)) { global_MatrixTransformer.MultiplyAppend(this.transform, this.group.getTransformMatrix()); } this.invertTransform = global_MatrixTransformer.Invert(this.transform); }, select: function (drawingObjectsController) { this.selected = true; var selected_objects; if (!isRealObject(this.group)) { selected_objects = drawingObjectsController.selectedObjects; } else { selected_objects = this.group.getMainGroup().selectedObjects; } for (var i = 0; i < selected_objects.length; ++i) { if (selected_objects[i] === this) { break; } } if (i === selected_objects.length) { selected_objects.push(this); } }, deselect: function (drawingObjectsController) { this.selected = false; var selected_objects; if (!isRealObject(this.group)) { selected_objects = drawingObjectsController.selectedObjects; } else { selected_objects = this.group.getMainGroup().selectedObjects; } for (var i = 0; i < selected_objects.length; ++i) { if (selected_objects[i] === this) { selected_objects.splice(i, 1); break; } } return this; }, draw: function (graphics) { if (this.graphicObject !== null && typeof this.graphicObject === "object" && this.graphicObject.Draw) { graphics.transform3(this.transform); graphics.SetIntegerGrid(true); this.graphicObject.Draw(0, graphics); if (locktype_None != this.Lock.Get_Type()) { graphics.DrawLockObjectRect(this.Lock.Get_Type(), 0, 0, this.extX, this.extY); } graphics.reset(); graphics.SetIntegerGrid(true); } }, Select: function () {}, Set_CurrentElement: function () {}, OnContentRecalculate: function () { this.recalcInfo.recalculateSizes = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, getTextSelectionState: function () { return this.graphicObject.Get_SelectionState(); }, setTextSelectionState: function (Sate) { return this.graphicObject.Set_SelectionState(Sate, Sate.length - 1); }, getStylesForParagraph: function (level) { if (level == undefined) { level = 0; } if (this.stlesForParagraph[level]) { return this.stlesForParagraph[level]; } var Styles = new CStyles(); var theme = null, layout = null, master = null, presentation; switch (this.parent.kind) { case SLIDE_KIND: layout = this.parent.Layout; if (layout != null) { master = layout.Master; if (master != null) { theme = master.Theme; presentation = master.presentation; } } break; case LAYOUT_KIND: layout = this.parent; if (layout != null) { master = layout.Master; if (master != null) { theme = master.Theme; presentation = master.presentation; } } break; case MASTER_KIND: master = this.parent; if (master != null) { theme = master.Theme; presentation = master.presentation; } break; } var isPlaceholder = this.isPlaceholder(); if (isPlaceholder) { var phId = this.nvGraphicFramePr.nvPr.ph.idx, phType = this.nvGraphicFramePr.nvPr.ph.type; var b_is_single_body = this.getIsSingleBody(); var layoutShape = null, masterShape = null; if (layout != null) { layoutShape = layout.getMatchingShape(phType, phId, b_is_single_body); } if (master != null) { masterShape = master.getMatchingShape(phType, phId, b_is_single_body); } } var defaultStyle = null, masterStyle = null, masterShapeStyle = null, layoutShapeStyle = null, slideShapeStyle = null; if (presentation != null && presentation.defaultTextStyle != null && presentation.defaultTextStyle.levels[level] != null) { defaultStyle = new CStyle("defaultStyle", null, null, null); defaultStyle.ParaPr = clone(presentation.defaultTextStyle.levels[level].pPr); defaultStyle.TextPr = clone(presentation.defaultTextStyle.levels[level].rPr); if (defaultStyle.TextPr != undefined) { if (defaultStyle.TextPr.FontFamily && defaultStyle.TextPr.FontFamily.Name) { if (isThemeFont(defaultStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { defaultStyle.TextPr.FontFamily.themeFont = defaultStyle.TextPr.FontFamily.Name; defaultStyle.TextPr.FontFamily.Name = getFontInfo(defaultStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } } if (defaultStyle.TextPr.unifill && defaultStyle.TextPr.unifill.fill) { defaultStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = defaultStyle.TextPr.unifill.getRGBAColor(); defaultStyle.TextPr.Color = new CDocumentColor(_rgba.R, _rgba.G, _rgba.B); } if (defaultStyle.TextPr.FontSize != undefined) { defaultStyle.TextPr.themeFontSize = defaultStyle.TextPr.FontSize; } } } if (master && master.txStyles) { if (isPlaceholder) { switch (phType) { case phType_ctrTitle: case phType_title: if (master.txStyles.titleStyle && master.txStyles.titleStyle.levels[level]) { masterStyle = new CStyle("masterStyle", null, null, null); masterStyle.ParaPr = clone(master.txStyles.titleStyle.levels[level].pPr); masterStyle.TextPr = clone(master.txStyles.titleStyle.levels[level].rPr); } break; case phType_body: case phType_subTitle: case phType_obj: if (master.txStyles.bodyStyle && master.txStyles.bodyStyle.levels[level]) { masterStyle = new CStyle("masterStyle", null, null, null); masterStyle.ParaPr = clone(master.txStyles.bodyStyle.levels[level].pPr); masterStyle.TextPr = clone(master.txStyles.bodyStyle.levels[level].rPr); } break; default: if (master.txStyles.otherStyle && master.txStyles.otherStyle.levels[level]) { masterStyle = new CStyle("masterStyle", null, null, null); masterStyle.ParaPr = clone(master.txStyles.otherStyle.levels[level].pPr); masterStyle.TextPr = clone(master.txStyles.otherStyle.levels[level].rPr); } break; } } else { if (master.txStyles.otherStyle && master.txStyles.otherStyle.levels[level]) { masterStyle = new CStyle("masterStyle", null, null, null); masterStyle.ParaPr = clone(master.txStyles.otherStyle.levels[level].pPr); masterStyle.TextPr = clone(master.txStyles.otherStyle.levels[level].rPr); } } if (masterStyle && masterStyle.TextPr) { if (masterStyle.TextPr.FontFamily && masterStyle.TextPr.FontFamily.Name) { if (masterStyle.TextPr.FontFamily && isThemeFont(masterStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { masterStyle.TextPr.FontFamily.themeFont = masterStyle.TextPr.FontFamily.Name; masterStyle.TextPr.FontFamily.Name = getFontInfo(masterStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } } if (masterStyle.TextPr.unifill && masterStyle.TextPr.unifill.fill) { masterStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = masterStyle.TextPr.unifill.getRGBAColor(); masterStyle.TextPr.Color = new CDocumentColor(_rgba.R, _rgba.G, _rgba.B); } if (masterStyle.TextPr.FontSize != undefined) { masterStyle.TextPr.themeFontSize = masterStyle.TextPr.FontSize; } } } if (isPlaceholder) { if (masterShape && masterShape.txBody && masterShape.txBody.lstStyle && masterShape.txBody.lstStyle.levels[level]) { masterShapeStyle = new CStyle("masterShapeStyle", null, null, null); masterShapeStyle.ParaPr = clone(masterShape.txBody.lstStyle.levels[level].pPr); masterShapeStyle.TextPr = clone(masterShape.txBody.lstStyle.levels[level].rPr); if (masterShapeStyle.TextPr) { if (masterShapeStyle.TextPr.FontFamily && isThemeFont(masterShapeStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { masterShapeStyle.TextPr.FontFamily.themeFont = masterShapeStyle.TextPr.FontFamily.Name; masterShapeStyle.TextPr.FontFamily.Name = getFontInfo(masterShapeStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } if (masterShapeStyle.TextPr.unifill && masterShapeStyle.TextPr.unifill.fill) { masterShapeStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = masterShapeStyle.TextPr.unifill.getRGBAColor(); masterShapeStyle.TextPr.Color = new CDocumentColor(_rgba.R, _rgba.G, _rgba.B); } } } if (layoutShape && layoutShape.txBody && layoutShape.txBody.lstStyle && layoutShape.txBody.lstStyle.levels[level]) { layoutShapeStyle = new CStyle("layoutShapeStyle", null, null, null); layoutShapeStyle.ParaPr = clone(layoutShape.txBody.lstStyle.levels[level].pPr); layoutShapeStyle.TextPr = clone(layoutShape.txBody.lstStyle.levels[level].rPr); if (layoutShapeStyle.TextPr && layoutShapeStyle.TextPr.FontFamily && isThemeFont(layoutShapeStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { layoutShapeStyle.TextPr.FontFamily.themeFont = layoutShapeStyle.TextPr.FontFamily.Name; layoutShapeStyle.TextPr.FontFamily.Name = getFontInfo(layoutShapeStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } if (layoutShapeStyle && layoutShapeStyle.TextPr && layoutShapeStyle.TextPr.unifill) { layoutShapeStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = layoutShapeStyle.TextPr.unifill.getRGBAColor(); layoutShapeStyle.TextPr.Color = new CDocumentColor(_rgba.R, _rgba.G, _rgba.B); } } } if (this.txBody && this.txBody.lstStyle && this.txBody.lstStyle.levels[level]) { slideShapeStyle = new CStyle("slideShapeStyle", null, null, null); slideShapeStyle.ParaPr = clone(this.txBody.lstStyle.levels[level].pPr); slideShapeStyle.TextPr = clone(this.txBody.lstStyle.levels[level].rPr); if (slideShapeStyle.TextPr && slideShapeStyle.TextPr.FontFamily && isThemeFont(slideShapeStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { slideShapeStyle.TextPr.FontFamily.themeFont = slideShapeStyle.TextPr.FontFamily.Name; slideShapeStyle.TextPr.FontFamily.Name = getFontInfo(slideShapeStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } if (slideShapeStyle && slideShapeStyle.TextPr && slideShapeStyle.TextPr.unifill && slideShapeStyle.TextPr.unifill.fill) { slideShapeStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = slideShapeStyle.TextPr.unifill.getRGBAColor(); slideShapeStyle.TextPr.Color = { r: _rgba.R, g: _rgba.G, b: _rgba.B, a: _rgba.A }; } } if (isPlaceholder) { if (defaultStyle) { Styles.Style[Styles.Id] = defaultStyle; defaultStyle.BasedOn = null; ++Styles.Id; } if (masterStyle) { Styles.Style[Styles.Id] = masterStyle; masterStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } } else { if (masterStyle) { Styles.Style[Styles.Id] = masterStyle; masterStyle.BasedOn = null; ++Styles.Id; } if (defaultStyle) { Styles.Style[Styles.Id] = defaultStyle; defaultStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } } if (masterShapeStyle) { Styles.Style[Styles.Id] = masterShapeStyle; masterShapeStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } if (layoutShapeStyle) { Styles.Style[Styles.Id] = layoutShapeStyle; layoutShapeStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } if (slideShapeStyle) { Styles.Style[Styles.Id] = slideShapeStyle; slideShapeStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } this.stlesForParagraph[level] = Styles; return Styles; }, isPlaceholder: function () { return this.nvGraphicFramePr && this.nvGraphicFramePr.nvPr && this.nvGraphicFramePr.nvPr.ph !== null; }, getPhType: function () { if (this.isPlaceholder()) { return this.nvGraphicFramePr.nvPr.ph.type; } return null; }, getPhIndex: function () { if (this.isPlaceholder()) { return this.nvGraphicFramePr.nvPr.ph.idx; } return null; }, getPlaceholderType: function () { return this.getPhType(); }, getPlaceholderIndex: function () { return this.getPhIndex(); }, setParent: function (parent) { History.Add(this, { Type: historyitem_SetShapeParent, Old: this.parent, New: parent }); this.parent = parent; }, paragraphAdd: function (paraItem, bRecalculate) { this.graphicObject.Paragraph_Add(paraItem, false); this.recalcInfo.recalculateSizes = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, remove: function (Count, bOnlyText, bRemoveOnlySelection) { this.graphicObject.Remove(Count, bOnlyText, bRemoveOnlySelection); this.recalcInfo.recalculateSizes = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, addNewParagraph: function () { this.graphicObject.Add_NewParagraph(false); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; }, setParagraphAlign: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ParagraphAlign(val); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransform = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, applyAllAlign: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ApplyToAll(true); this.graphicObject.Set_ParagraphAlign(val); this.graphicObject.Set_ApplyToAll(false); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, setParagraphSpacing: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ParagraphSpacing(val); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, applyAllSpacing: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ApplyToAll(true); this.graphicObject.Set_ParagraphSpacing(val); this.graphicObject.Set_ApplyToAll(false); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, setParagraphNumbering: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ParagraphNumbering(val); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, applyAllNumbering: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ApplyToAll(true); this.graphicObject.Set_ParagraphNumbering(val); this.graphicObject.Set_ApplyToAll(false); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, setParagraphIndent: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ParagraphIndent(val); editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, applyAllIndent: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ApplyToAll(true); this.graphicObject.Set_ParagraphIndent(val); this.graphicObject.Set_ApplyToAll(false); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, Paragraph_IncDecFontSize: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Paragraph_IncDecFontSize(val); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, Paragraph_IncDecFontSizeAll: function (val) { if (isRealObject(this.graphicObject)) { this.graphicObject.Set_ApplyToAll(true); this.graphicObject.Paragraph_IncDecFontSize(val); this.graphicObject.Set_ApplyToAll(false); this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } }, Cursor_MoveLeft: function (AddToSelect, Word) { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveLeft(AddToSelect, Word); this.graphicObject.RecalculateCurPos(); } }, Cursor_MoveRight: function (AddToSelect, Word) { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveRight(AddToSelect, Word); this.graphicObject.RecalculateCurPos(); } }, Cursor_MoveUp: function (AddToSelect) { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveUp(AddToSelect); this.graphicObject.RecalculateCurPos(); } }, Cursor_MoveDown: function (AddToSelect) { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveDown(AddToSelect); this.graphicObject.RecalculateCurPos(); } }, Cursor_MoveEndOfLine: function (AddToSelect) { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveEndOfLine(AddToSelect); this.graphicObject.RecalculateCurPos(); } }, Cursor_MoveStartOfLine: function (AddToSelect) { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveStartOfLine(AddToSelect); this.graphicObject.RecalculateCurPos(); } }, Cursor_MoveAt: function (X, Y, AddToSelect) { if (isRealObject(this.graphicObject)) { this.graphicObject.Cursor_MoveAt(X, Y, AddToSelect); this.graphicObject.RecalculateCurPos(); } }, Get_Styles: function (level, bTablesStyleId, bParagraph) { if (level == undefined) { level = 0; } var Styles = new CStyles(); if (!this.parent) { return Styles; } var theme = null, layout = null, master = null, presentation; switch (this.parent.kind) { case SLIDE_KIND: layout = this.parent.Layout; if (layout != null) { master = layout.Master; if (master != null) { theme = master.Theme; presentation = master.presentation; } } break; case LAYOUT_KIND: layout = this.parent; if (layout != null) { master = layout.Master; if (master != null) { theme = master.Theme; presentation = master.presentation; } } break; case MASTER_KIND: master = this.parent; if (master != null) { theme = master.Theme; presentation = master.presentation; } break; } if (bParagraph && false) { var isPlaceholder = this.isPlaceholder(); if (isPlaceholder) { var phId = this.nvGraphicFramePr.nvPr.ph.idx, phType = this.nvGraphicFramePr.nvPr.ph.type; var b_is_single_body = this.getIsSingleBody(); var layoutShape = null, masterShape = null; if (layout != null) { layoutShape = layout.getMatchingShape(phType, phId, b_is_single_body); } if (master != null) { masterShape = master.getMatchingShape(phType, phId, b_is_single_body); } } var defaultStyle = null, masterStyle = null, masterShapeStyle = null, layoutShapeStyle = null, slideShapeStyle = null; if (presentation != null && presentation.defaultTextStyle != null && presentation.defaultTextStyle.levels[level] != null) { defaultStyle = new CStyle("defaultStyle", null, null, null); defaultStyle.ParaPr = clone(presentation.defaultTextStyle.levels[level].pPr); defaultStyle.TextPr = clone(presentation.defaultTextStyle.levels[level].rPr); if (defaultStyle.TextPr != undefined) { if (defaultStyle.TextPr.FontFamily && defaultStyle.TextPr.FontFamily.Name) { if (isThemeFont(defaultStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { defaultStyle.TextPr.FontFamily.themeFont = defaultStyle.TextPr.FontFamily.Name; defaultStyle.TextPr.FontFamily.Name = getFontInfo(defaultStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } } if (defaultStyle.TextPr.unifill && defaultStyle.TextPr.unifill.fill) { defaultStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = defaultStyle.TextPr.unifill.getRGBAColor(); defaultStyle.TextPr.Color = { r: _rgba.R, g: _rgba.G, b: _rgba.B, a: _rgba.A }; } if (defaultStyle.TextPr.FontSize != undefined) { defaultStyle.TextPr.themeFontSize = defaultStyle.TextPr.FontSize; } } } if (master && master.txStyles) { if (isPlaceholder) { switch (phType) { case phType_ctrTitle: case phType_title: if (master.txStyles.titleStyle && master.txStyles.titleStyle.levels[level]) { masterStyle = new CStyle("masterStyle", null, null, null); masterStyle.ParaPr = clone(master.txStyles.titleStyle.levels[level].pPr); masterStyle.TextPr = clone(master.txStyles.titleStyle.levels[level].rPr); } break; case phType_body: case phType_subTitle: case phType_obj: case null: if (master.txStyles.bodyStyle && master.txStyles.bodyStyle.levels[level]) { masterStyle = new CStyle("masterStyle", null, null, null); masterStyle.ParaPr = clone(master.txStyles.bodyStyle.levels[level].pPr); masterStyle.TextPr = clone(master.txStyles.bodyStyle.levels[level].rPr); } break; default: if (master.txStyles.otherStyle && master.txStyles.otherStyle.levels[level]) { masterStyle = new CStyle("masterStyle", null, null, null); masterStyle.ParaPr = clone(master.txStyles.otherStyle.levels[level].pPr); masterStyle.TextPr = clone(master.txStyles.otherStyle.levels[level].rPr); } break; } } else { if (master.txStyles.otherStyle && master.txStyles.otherStyle.levels[level]) { masterStyle = new CStyle("masterStyle", null, null, null); masterStyle.ParaPr = clone(master.txStyles.otherStyle.levels[level].pPr); masterStyle.TextPr = clone(master.txStyles.otherStyle.levels[level].rPr); } } if (masterStyle && masterStyle.TextPr) { if (masterStyle.TextPr.FontFamily && masterStyle.TextPr.FontFamily.Name) { if (masterStyle.TextPr.FontFamily && isThemeFont(masterStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { masterStyle.TextPr.FontFamily.themeFont = masterStyle.TextPr.FontFamily.Name; masterStyle.TextPr.FontFamily.Name = getFontInfo(masterStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } } if (masterStyle.TextPr.unifill && masterStyle.TextPr.unifill.fill) { masterStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = masterStyle.TextPr.unifill.getRGBAColor(); masterStyle.TextPr.Color = { r: _rgba.R, g: _rgba.G, b: _rgba.B, a: _rgba.A }; } if (masterStyle.TextPr.FontSize != undefined) { masterStyle.TextPr.themeFontSize = masterStyle.TextPr.FontSize; } } } if (isPlaceholder) { if (masterShape && masterShape.txBody && masterShape.txBody.lstStyle && masterShape.txBody.lstStyle.levels[level]) { masterShapeStyle = new CStyle("masterShapeStyle", null, null, null); masterShapeStyle.ParaPr = clone(masterShape.txBody.lstStyle.levels[level].pPr); masterShapeStyle.TextPr = clone(masterShape.txBody.lstStyle.levels[level].rPr); if (masterShapeStyle.TextPr) { if (masterShapeStyle.TextPr.FontFamily && isThemeFont(masterShapeStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { masterShapeStyle.TextPr.FontFamily.themeFont = masterShapeStyle.TextPr.FontFamily.Name; masterShapeStyle.TextPr.FontFamily.Name = getFontInfo(masterShapeStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } if (masterShapeStyle.TextPr.unifill && masterShapeStyle.TextPr.unifill.fill) { masterShapeStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = masterShapeStyle.TextPr.unifill.getRGBAColor(); masterShapeStyle.TextPr.Color = { r: _rgba.R, g: _rgba.G, b: _rgba.B, a: _rgba.A }; } } } if (layoutShape && layoutShape.txBody && layoutShape.txBody.lstStyle && layoutShape.txBody.lstStyle.levels[level]) { layoutShapeStyle = new CStyle("layoutShapeStyle", null, null, null); layoutShapeStyle.ParaPr = clone(layoutShape.txBody.lstStyle.levels[level].pPr); layoutShapeStyle.TextPr = clone(layoutShape.txBody.lstStyle.levels[level].rPr); if (layoutShapeStyle.TextPr && layoutShapeStyle.TextPr.FontFamily && isThemeFont(layoutShapeStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { layoutShapeStyle.TextPr.FontFamily.themeFont = layoutShapeStyle.TextPr.FontFamily.Name; layoutShapeStyle.TextPr.FontFamily.Name = getFontInfo(layoutShapeStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } if (layoutShapeStyle && layoutShapeStyle.TextPr && layoutShapeStyle.TextPr.unifill && layoutShapeStyle.TextPr.unifill.fill) { layoutShapeStyle.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = layoutShapeStyle.unifill.getRGBAColor(); layoutShapeStyle.TextPr.Color = { r: _rgba.R, g: _rgba.G, b: _rgba.B, a: _rgba.A }; } } } if (this.txBody && this.txBody.lstStyle && this.txBody.lstStyle.levels[level]) { slideShapeStyle = new CStyle("slideShapeStyle", null, null, null); slideShapeStyle.ParaPr = clone(this.txBody.lstStyle.levels[level].pPr); slideShapeStyle.TextPr = clone(this.txBody.lstStyle.levels[level].rPr); if (slideShapeStyle.TextPr && slideShapeStyle.TextPr.FontFamily && isThemeFont(slideShapeStyle.TextPr.FontFamily.Name) && theme && theme.themeElements.fontScheme) { slideShapeStyle.TextPr.FontFamily.themeFont = slideShapeStyle.TextPr.FontFamily.Name; slideShapeStyle.TextPr.FontFamily.Name = getFontInfo(slideShapeStyle.TextPr.FontFamily.Name)(theme.themeElements.fontScheme); } if (slideShapeStyle && slideShapeStyle.TextPr && slideShapeStyle.TextPr.unifill) { slideShapeStyle.TextPr.unifill.calculate(theme, this.parent, layout, master, { R: 0, G: 0, B: 0, A: 0 }); var _rgba = slideShapeStyle.TextPr.unifill.getRGBAColor(); slideShapeStyle.TextPr.Color = { r: _rgba.R, g: _rgba.G, b: _rgba.B, a: _rgba.A }; } } if (isPlaceholder) { if (defaultStyle) { Styles.Style[Styles.Id] = defaultStyle; defaultStyle.BasedOn = null; ++Styles.Id; } if (masterStyle) { Styles.Style[Styles.Id] = masterStyle; masterStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } } else { if (masterStyle) { Styles.Style[Styles.Id] = masterStyle; masterStyle.BasedOn = null; ++Styles.Id; } if (defaultStyle) { Styles.Style[Styles.Id] = defaultStyle; defaultStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } } if (masterShapeStyle) { Styles.Style[Styles.Id] = masterShapeStyle; masterShapeStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } if (layoutShapeStyle) { Styles.Style[Styles.Id] = layoutShapeStyle; layoutShapeStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } if (slideShapeStyle) { Styles.Style[Styles.Id] = slideShapeStyle; slideShapeStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } if (this.style && this.style.fontRef) { var refStyle = new CStyle("refStyle", null, null, null); refStyle.ParaPr = {}; refStyle.TextPr = {}; switch (this.style.fontRef.idx) { case fntStyleInd_major: refStyle.TextPr.FontFamily = { Name: getFontInfo("+mj-lt")(theme.themeElements.fontScheme) }; break; case fntStyleInd_minor: refStyle.TextPr.FontFamily = { Name: getFontInfo("+mn-lt")(theme.themeElements.fontScheme) }; break; default: break; } if (this.style.fontRef.Color != null && this.style.fontRef.Color.color != null) { var unifill = new CUniFill(); unifill.fill = new CSolidFill(); unifill.fill.color = this.style.fontRef.Color; refStyle.TextPr.unifill = unifill; } else { refStyle.TextPr.unifill = null; } Styles.Style[Styles.Id] = refStyle; refStyle.BasedOn = Styles.Id - 1; ++Styles.Id; } return Styles; } if (typeof bTablesStyleId === "number") { if (presentation !== null && typeof presentation === "object") { if (Array.isArray(presentation.globalTableStyles) && presentation.globalTableStyles[bTablesStyleId] instanceof CStyle) { Styles.Style[Styles.Id] = presentation.globalTableStyles[bTablesStyleId]; ++Styles.Id; } } } return Styles; }, Get_StartPage_Absolute: function () { return this.parent.num; }, Get_PageContentStartPos: function () { if (this.parent.kind == SLIDE_KIND) { return this.parent.Layout.Master.presentation.Get_PageContentStartPos(this.parent.num); } return { X: this.pH + this.ext.cx, XLimit: this.ext.cx, Y: this.pV + this.ext.cy, YLimit: this.ext.cy, MaxTopBorder: 0 }; }, getParagraphParaPr: function () { if (this.graphicObject !== null && typeof this.graphicObject === "object" && typeof this.graphicObject.Set_ApplyToAll === "function" && typeof this.graphicObject.Get_Paragraph_ParaPr === "function") { var _ret_para_pr; this.graphicObject.Set_ApplyToAll(true); _ret_para_pr = this.graphicObject.Get_Paragraph_ParaPr(); this.graphicObject.Set_ApplyToAll(false); return _ret_para_pr; } }, getParagraphTextPr: function () { if (this.graphicObject !== null && typeof this.graphicObject === "object" && typeof this.graphicObject.Set_ApplyToAll === "function" && typeof this.graphicObject.Get_Paragraph_TextPr === "function") { var _ret_para_pr; this.graphicObject.Set_ApplyToAll(true); _ret_para_pr = this.graphicObject.Get_Paragraph_TextPr(); this.graphicObject.Set_ApplyToAll(false); return _ret_para_pr; } }, getTextPr: function () { return this.graphicObject.Get_Paragraph_TextPr(); }, getParaPr: function () { return this.graphicObject.Get_Paragraph_ParaPr(); }, hitToHandles: function () { return -1; }, hitToAdjustment: function () { return { hit: false }; }, setGroup: function (group) { History.Add(this, { Type: historyitem_SetSpGroup, oldPr: this.group, newPr: group }); this.group = group; }, Refresh_RecalcData: function () {}, Undo: function (data) { switch (data.Type) { case historyitem_SetSetSpPr: this.spPr = data.oldPr; break; case historyitem_SetSetNvSpPr: this.nvGraphicFramePr = data.oldPr; break; case historyitem_SetGraphicObject: this.graphicObject = data.oldPr; break; case historyitem_SetShapeRot: this.spPr.xfrm.rot = data.oldRot; this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetShapeOffset: this.spPr.xfrm.offX = data.oldOffsetX; this.spPr.xfrm.offY = data.oldOffsetY; this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetShapeExtents: this.spPr.xfrm.extX = data.oldExtentX; this.spPr.xfrm.extY = data.oldExtentY; this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateGeometry = true; break; case historyitem_SetShapeFlips: this.spPr.xfrm.flipH = data.oldFlipH; this.spPr.xfrm.flipV = data.oldFlipV; this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; this.recalcInfo.recalculateContent = true; break; case historyitem_SetShapeSetFill: if (isRealObject(data.oldFill)) { this.spPr.Fill = data.oldFill.createDuplicate(); } else { this.spPr.Fill = null; } this.recalcInfo.recalculateFill = true; this.recalcInfo.recalculateBrush = true; this.recalcInfo.recalculateTransparent = true; break; case historyitem_SetShapeSetLine: if (isRealObject(data.oldLine)) { this.spPr.ln = data.oldLine.createDuplicate(); } else { this.spPr.ln = null; } this.recalcInfo.recalculateLine = true; this.recalcInfo.recalculatePen = true; editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; break; case historyitem_SetShapeSetGeometry: if (isRealObject(data.oldGeometry)) { this.spPr.geometry = data.oldGeometry.createDuplicate(); this.spPr.geometry.Init(5, 5); } else { this.spPr.geometry = null; } this.recalcInfo.recalculateGeometry = true; break; case historyitem_SetShapeBodyPr: this.txBody.bodyPr = data.oldBodyPr.createDuplicate(); this.txBody.recalcInfo.recalculateBodyPr = true; this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetSpGroup: this.group = data.oldPr; break; case historyitem_SetShapeParent: this.parent = data.Old; break; } if (isRealObject(this.parent) && isRealObject(this.graphicObject) && (Array.isArray(this.graphicObject.Content) && this.graphicObject.Content.length > 0)) { editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } else { delete editor.WordControl.m_oLogicDocument.recalcMap[this.Id]; } }, Redo: function (data) { switch (data.Type) { case historyitem_SetSetSpPr: this.spPr = data.newPr; break; case historyitem_SetSetNvSpPr: this.nvGraphicFramePr = data.newPr; break; case historyitem_SetGraphicObject: this.graphicObject = data.newPr; if (this.graphicObject && this.graphicObject.Recalc_CompiledPr) { this.graphicObject.Recalc_CompiledPr(); } break; case historyitem_SetShapeRot: this.spPr.xfrm.rot = data.newRot; this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetShapeOffset: this.spPr.xfrm.offX = data.newOffsetX; this.spPr.xfrm.offY = data.newOffsetY; this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetShapeExtents: this.spPr.xfrm.extX = data.newExtentX; this.spPr.xfrm.extY = data.newExtentY; this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateGeometry = true; break; case historyitem_SetShapeFlips: this.spPr.xfrm.flipH = data.newFlipH; this.spPr.xfrm.flipV = data.newFlipV; this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; this.recalcInfo.recalculateContent = true; break; case historyitem_SetShapeSetFill: if (isRealObject(data.newFill)) { this.spPr.Fill = data.newFill.createDuplicate(); } this.recalcInfo.recalculateFill = true; this.recalcInfo.recalculateBrush = true; this.recalcInfo.recalculateTransparent = true; break; case historyitem_SetShapeSetLine: if (isRealObject(data.newLine)) { this.spPr.ln = data.newLine.createDuplicate(); } else { this.spPr.ln = null; } this.recalcInfo.recalculateLine = true; this.recalcInfo.recalculatePen = true; break; case historyitem_SetShapeSetGeometry: if (isRealObject(data.newGeometry)) { this.spPr.geometry = data.newGeometry.createDuplicate(); this.spPr.geometry.Init(5, 5); } else { this.spPr.geometry = null; } this.recalcInfo.recalculateGeometry = true; break; case historyitem_SetShapeBodyPr: this.txBody.bodyPr = data.newBodyPr.createDuplicate(); this.txBody.recalcInfo.recalculateBodyPr = true; this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetSpGroup: this.group = data.newPr; break; case historyitem_SetShapeParent: this.parent = data.New; break; } if (isRealObject(this.parent) && isRealObject(this.graphicObject) && (Array.isArray(this.graphicObject.Content) && this.graphicObject.Content.length > 0)) { editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } else { delete editor.WordControl.m_oLogicDocument.recalcMap[this.Id]; } }, Save_Changes: function (data, w) { w.WriteLong(historyitem_type_GraphicFrame); w.WriteLong(data.Type); var bool; switch (data.Type) { case historyitem_SetSetSpPr: w.WriteBool(isRealObject(data.newPr)); if (isRealObject(data.newPr)) { data.newPr.Write_ToBinary2(w); } break; case historyitem_SetSetNvSpPr: w.WriteBool(isRealObject(data.newPr)); if (isRealObject(data.newPr)) { data.newPr.Write_ToBinary2(w); } break; case historyitem_SetGraphicObject: w.WriteBool(isRealObject(data.newPr)); if (isRealObject(data.newPr)) { w.WriteString2(data.newPr.Get_Id()); } break; case historyitem_SetShapeRot: w.WriteDouble(data.newRot); break; case historyitem_SetShapeOffset: w.WriteDouble(data.newOffsetX); w.WriteDouble(data.newOffsetY); w.WriteBool(isRealObject(editor) && isRealObject(editor.WordControl) && isRealObject(editor.WordControl.m_oLogicDocument)); if (isRealObject(editor) && isRealObject(editor.WordControl) && isRealObject(editor.WordControl.m_oLogicDocument)) { w.WriteDouble(editor.WordControl.m_oLogicDocument.Width); w.WriteDouble(editor.WordControl.m_oLogicDocument.Height); } break; case historyitem_SetShapeExtents: w.WriteDouble(data.newExtentX); w.WriteDouble(data.newExtentY); w.WriteBool(isRealObject(editor) && isRealObject(editor.WordControl) && isRealObject(editor.WordControl.m_oLogicDocument)); if (isRealObject(editor) && isRealObject(editor.WordControl) && isRealObject(editor.WordControl.m_oLogicDocument)) { w.WriteDouble(editor.WordControl.m_oLogicDocument.Width); w.WriteDouble(editor.WordControl.m_oLogicDocument.Height); } break; case historyitem_SetShapeFlips: w.WriteBool(data.newFlipH); w.WriteBool(data.newFlipV); break; case historyitem_SetShapeSetFill: w.WriteBool(isRealObject(data.newFill)); if (isRealObject(data.newFill)) { data.newFill.Write_ToBinary2(w); } break; case historyitem_SetShapeSetLine: w.WriteBool(isRealObject(data.newLine)); if (isRealObject(data.newLine)) { data.newLine.Write_ToBinary2(w); } break; case historyitem_SetShapeSetGeometry: w.WriteBool(isRealObject(data.newGeometry)); if (isRealObject(data.newGeometry)) { data.newGeometry.Write_ToBinary2(w); } break; case historyitem_SetShapeBodyPr: data.newBodyPr.Write_ToBinary2(w); break; case historyitem_SetSpGroup: w.WriteBool(isRealObject(data.newPr)); if (isRealObject(data.newPr)) { w.WriteString2(data.newPr.Get_Id()); } break; case historyitem_SetShapeParent: w.WriteBool(isRealObject(data.New)); if (isRealObject(data.New)) { w.WriteString2(data.New.Id); } break; } }, Load_Changes: function (r) { if (r.GetLong() === historyitem_type_GraphicFrame) { switch (r.GetLong()) { case historyitem_SetSetSpPr: this.spPr = new CSpPr(); if (r.GetBool()) { this.spPr.Read_FromBinary2(r); } break; case historyitem_SetSetNvSpPr: if (r.GetBool()) { this.nvGraphicFramePr = new UniNvPr(); this.nvGraphicFramePr.Read_FromBinary2(r); } else { this.nvGraphicFramePr = null; } break; case historyitem_SetGraphicObject: if (r.GetBool()) { this.graphicObject = g_oTableId.Get_ById(r.GetString2()); if (this.graphicObject && this.graphicObject.Recalc_CompiledPr) { this.graphicObject.Recalc_CompiledPr(); } } else { this.graphicObject = null; } break; case historyitem_SetShapeRot: this.spPr.xfrm.rot = r.GetDouble(); this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetShapeOffset: this.spPr.xfrm.offX = r.GetDouble(); this.spPr.xfrm.offY = r.GetDouble(); if (r.GetBool()) { var p_width = r.GetDouble(); var p_height = r.GetDouble(); if (isRealObject(editor) && isRealObject(editor.WordControl) && isRealObject(editor.WordControl.m_oLogicDocument)) { var kw = editor.WordControl.m_oLogicDocument.Width / p_width; var kh = editor.WordControl.m_oLogicDocument.Height / p_height; this.spPr.xfrm.offX *= kw; this.spPr.xfrm.offY *= kh; } } this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetShapeExtents: this.spPr.xfrm.extX = r.GetDouble(); this.spPr.xfrm.extY = r.GetDouble(); if (r.GetBool()) { var p_width = r.GetDouble(); var p_height = r.GetDouble(); if (isRealObject(editor) && isRealObject(editor.WordControl) && isRealObject(editor.WordControl.m_oLogicDocument)) { var kw = editor.WordControl.m_oLogicDocument.Width / p_width; var kh = editor.WordControl.m_oLogicDocument.Height / p_height; this.spPr.xfrm.extX *= kw; this.spPr.xfrm.extY *= kh; } } this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateGeometry = true; break; case historyitem_SetShapeFlips: this.spPr.xfrm.flipH = r.GetBool(); this.spPr.xfrm.flipV = r.GetBool(); this.recalcInfo.recalculateTransform = true; this.recalcInfo.recalculateTransformText = true; this.recalcInfo.recalculateContent = true; break; case historyitem_SetShapeSetFill: if (r.GetBool()) { this.spPr.Fill = new CUniFill(); this.spPr.Fill.Read_FromBinary2(r); } this.recalcInfo.recalculateFill = true; this.recalcInfo.recalculateBrush = true; this.recalcInfo.recalculateTransparent = true; break; case historyitem_SetShapeSetLine: if (r.GetBool()) { this.spPr.ln = new CLn(); this.spPr.ln.Read_FromBinary2(r); } this.recalcInfo.recalculateLine = true; this.recalcInfo.recalculatePen = true; break; case historyitem_SetShapeSetGeometry: if (r.GetBool()) { this.spPr.geometry = new Geometry(); this.spPr.geometry.Read_FromBinary2(r); this.spPr.geometry.Init(5, 5); } else { this.spPr.geometry = null; } this.recalcInfo.recalculateGeometry = true; break; case historyitem_SetShapeBodyPr: this.txBody.bodyPr = new CBodyPr(); this.txBody.bodyPr.Read_FromBinary2(r); this.txBody.recalcInfo.recalculateBodyPr = true; this.recalcInfo.recalculateContent = true; this.recalcInfo.recalculateTransformText = true; break; case historyitem_SetSpGroup: if (r.GetBool()) { this.group = g_oTableId.Get_ById(r.GetString2()); } else { this.group = null; } break; case historyitem_SetShapeParent: if (r.GetBool()) { this.parent = g_oTableId.Get_ById(r.GetString2()); } break; } editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; if (isRealObject(this.parent) && isRealObject(this.graphicObject) && (Array.isArray(this.graphicObject.Content) && this.graphicObject.Content.length > 0)) { editor.WordControl.m_oLogicDocument.recalcMap[this.Id] = this; } else { delete editor.WordControl.m_oLogicDocument.recalcMap[this.Id]; } } }, Write_ToBinary2: function (w) { w.WriteLong(historyitem_type_GraphicFrame); w.WriteString2(this.Id); }, Read_FromBinary2: function (r) { this.Id = r.GetString2(); } };