Files
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

1503 lines
58 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2024
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
// Import
var History = AscCommon.History;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetMaster] = AscDFH.CChangesDrawingsObject;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetHF] = AscDFH.CChangesDrawingsObject;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetMatchingName] = AscDFH.CChangesDrawingsString;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetType] = AscDFH.CChangesDrawingsLong;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetBg] = AscDFH.CChangesDrawingsObjectNoId;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetCSldName] = AscDFH.CChangesDrawingsString;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetShow] = AscDFH.CChangesDrawingsBool;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetPreserve] = AscDFH.CChangesDrawingsBool;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetShowPhAnim] = AscDFH.CChangesDrawingsBool;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetShowMasterSp] = AscDFH.CChangesDrawingsBool;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetClrMapOverride] = AscDFH.CChangesDrawingsObject;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutAddToSpTree] = AscDFH.CChangesDrawingsContent;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetSize] = AscDFH.CChangesDrawingsObjectNoId;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutRemoveFromSpTree] = AscDFH.CChangesDrawingsContent;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetTransition] = AscDFH.CChangesDrawingsObjectNoId;
AscDFH.changesFactory[AscDFH.historyitem_SlideLayoutSetTiming] = AscDFH.CChangesDrawingsObject;
AscDFH.drawingsConstructorsMap[AscDFH.historyitem_SlideLayoutSetBg] = AscFormat.CBg;
AscDFH.drawingsConstructorsMap[AscDFH.historyitem_SlideLayoutSetSize] = AscFormat.CDrawingBaseCoordsWritable;
AscDFH.drawingsConstructorsMap[AscDFH.historyitem_SlideLayoutSetTransition] = Asc.CAscSlideTransition;
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetMaster] = function(oClass, value){oClass.Master = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetHF] = function(oClass, value){oClass.hf = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetMatchingName] = function(oClass, value){oClass.matchingName = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetType] = function(oClass, value){oClass.type = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetBg] = function(oClass, value, FromLoad){
oClass.cSld.Bg = value;
if(FromLoad){
var Fill;
if(oClass.cSld.Bg && oClass.cSld.Bg.bgPr && oClass.cSld.Bg.bgPr.Fill)
{
Fill = oClass.cSld.Bg.bgPr.Fill;
}
if(typeof AscCommon.CollaborativeEditing !== "undefined")
{
if(Fill && Fill.fill && Fill.fill.type === Asc.c_oAscFill.FILL_TYPE_BLIP && typeof Fill.fill.RasterImageId === "string" && Fill.fill.RasterImageId.length > 0)
{
AscCommon.CollaborativeEditing.Add_NewImage(Fill.fill.RasterImageId);
}
}
}
};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetCSldName] = function(oClass, value){oClass.cSld.name = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetShow] = function(oClass, value){oClass.show = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetShowPhAnim] = function(oClass, value){oClass.showMasterPhAnim = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetShowMasterSp] = function(oClass, value){oClass.showMasterSp = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetClrMapOverride] = function(oClass, value){oClass.clrMap = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetSize] = function(oClass, value){oClass.Width = value.a; oClass.Height = value.b;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetTiming] = function(oClass, value){oClass.timing = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetTransition] = function(oClass, value){oClass.transition = value;};
AscDFH.drawingsChangesMap[AscDFH.historyitem_SlideLayoutSetPreserve] = function(oClass, value){oClass.preserve = value;};
AscDFH.drawingContentChanges[AscDFH.historyitem_SlideLayoutAddToSpTree] = function(oClass){
oClass.recalcInfo.recalculateBounds = true;
return oClass.cSld.spTree;
};
AscDFH.drawingContentChanges[AscDFH.historyitem_SlideLayoutRemoveFromSpTree] = function(oClass){
oClass.recalcInfo.recalculateBounds = true;
return oClass.cSld.spTree;
};
function SlideLayout()
{
AscFormat.CBaseFormatObject.call(this);
this.kind = AscFormat.TYPE_KIND.LAYOUT;
this.cSld = new AscFormat.CSld(this);
this.clrMap = null; // override ClrMap
this.hf = null;
this.matchingName = "";
this.preserve = false;
this.showMasterPhAnim = false;
this.showMasterSp = true;
this.type = null;
this.userDrawn = true;
this.timing = null;
this.transition = null;
this.ImageBase64 = "";
this.Width64 = 0;
this.Height64 = 0;
this.Width = 254;
this.Height = 190.5;
this.Master = null;
this.m_oContentChanges = new AscCommon.CContentChanges(); // список изменений(добавление/удаление элементов)
this.bounds = new AscFormat.CGraphicBounds(0.0, 0.0, 0.0, 0.0);
this.recalcInfo =
{
recalculateBackground: true,
recalculateSpTree: true,
recalculateBounds: true
};
this.lastRecalcSlideIndex = -1;
this.presentation = editor && editor.WordControl && editor.WordControl.m_oLogicDocument;
this.graphicObjects = new AscFormat.DrawingObjectsController(this);
this.deleteLock = new PropLocker(this.Id);
this.backgroundLock = new PropLocker(this.Id);
this.timingLock = new PropLocker(this.Id);
this.transitionLock = new PropLocker(this.Id);
this.layoutLock = new PropLocker(this.Id);
this.showLock = new PropLocker(this.Id);
}
AscFormat.InitClass(SlideLayout, AscFormat.CBaseFormatObject, AscDFH.historyitem_type_SlideLayout);
SlideLayout.prototype.getDrawingDocument = function() {
return editor.WordControl.m_oLogicDocument.DrawingDocument;
};
SlideLayout.prototype.OnUpdateOverlay = function()
{
this.presentation.DrawingDocument.m_oWordControl.OnUpdateOverlay();
};
SlideLayout.prototype.getNum = function () {
let aSlides = this.presentation.GetAllSlides();
for(let nIdx = 0; nIdx < aSlides.length; ++nIdx) {
if(aSlides[nIdx] === this)
return nIdx;
}
return -1;
};
SlideLayout.prototype.drawSelect = function(_type)
{
if (_type === undefined)
{
this.graphicObjects.drawTextSelection(this.getNum());
this.graphicObjects.drawSelect(0, this.presentation.DrawingDocument);
}
else if (_type == 1)
this.graphicObjects.drawTextSelection(this.getNum());
else if (_type == 2)
this.graphicObjects.drawSelect(0, this.presentation.DrawingDocument);
};
SlideLayout.prototype.showDrawingObjects = function()
{
editor.WordControl.m_oDrawingDocument.OnRecalculateSlide(this.getNum());
};
SlideLayout.prototype.sendGraphicObjectProps = function()
{
editor.WordControl.m_oLogicDocument.Document_UpdateInterfaceState();
};
SlideLayout.prototype.getDrawingsForController = function(){
return this.cSld.spTree;
};
SlideLayout.prototype.getTheme = function(){
return this.Master && this.Master.getTheme();
};
SlideLayout.prototype.getName = function () {
if (isNotEmptyString(this.cSld.name))
return this.cSld.name;
function isNotEmptyString(str) {
return typeof str === 'string' && str.length > 0;
}
const typeNamesMap = {
0: 'Blank', // blank
1: 'Chart', // chart
2: 'Chart and Text', // chartAndTx
3: 'Clip Art and Text', // clipArtAndTx
4: 'Clip Art and Vertical Text', // clipArtAndVertTx
5: 'Custom', // cust
6: 'Diagram', // dgm
7: 'Four Objects', // fourObj
8: 'Media and Text', // mediaAndTx
9: 'Title and Object', // obj
10: 'Object and Two Object', // objAndTwoObj
11: 'Object and Text', // objAndTx
12: 'Object', // objOnly
13: 'Object over Tex', // objOverTx
14: 'Title, Object, and Caption', // objTx
15: 'Picture and Caption', // picTx
16: 'Section Header', // secHead
17: 'Table', // tbl
18: 'Title', // title
19: 'Title Only', // titleOnly
20: 'Two Column Text', // twoColTx
21: 'Two Objects', // twoObj
22: 'Two Objects and Object', // twoObjAndObj
23: 'Two Objects and Text', // twoObjAndTx
24: 'Two Objects over Text', // twoObjOverTx
25: 'Two Text and Two Objects', // twoTxTwoObj
26: 'Text', // tx
27: 'Text and Chart', // txAndChart
28: 'Text and Clip Art', // txAndClipArt
29: 'Text and Media', // txAndMedia
30: 'Text and Object', // txAndObj
31: 'Text and Two Objects', // txAndTwoObj
32: 'Text over Object', // txOverObj
33: 'Vertical Title and Text', // vertTitleAndTx
34: 'Vertical Title and Text Over Chart', // vertTitleAndTxOverChart
35: 'Vertical Text', // vertTx
};
const type = this.getType();
for (let key in c_oAscSlideLayoutType) {
if (c_oAscSlideLayoutType[key] === type) {
return typeNamesMap[type];
}
}
return 'Text';
};
SlideLayout.prototype.setName = function (sName) {
this.setCSldName(sName);
};
SlideLayout.prototype.getType = function () {
return AscFormat.isRealNumber(this.type)
? this.type
: (this.calculateType(), this.calculatedType);
}
SlideLayout.prototype.getColorMap = function() {
if(this.Master) {
if(this.Master.clrMap) {
return this.Master.clrMap;
}
}
return AscFormat.GetDefaultColorMap();
};
SlideLayout.prototype.getMaster = function(){
return this.getParentObjects().master;
};
SlideLayout.prototype.isAnimated = function () {
return false;
};
SlideLayout.prototype.isLockedObject = function () {
return false;
};
SlideLayout.prototype.createDuplicate = function(IdMap)
{
var oIdMap = IdMap || {};
var oPr = new AscFormat.CCopyObjectProperties();
oPr.idMap = oIdMap;
var copy = new SlideLayout();
if(typeof this.cSld.name === "string" && this.cSld.name.length > 0)
{
copy.setCSldName(this.cSld.name);
}
if(this.cSld.Bg)
{
copy.changeBackground(this.cSld.Bg.createFullCopy());
}
for(var i = 0; i < this.cSld.spTree.length; ++i)
{
var _copy;
_copy = this.cSld.spTree[i].copy(oPr);
oIdMap[this.cSld.spTree[i].Id] = _copy.Id;
copy.shapeAdd(copy.cSld.spTree.length, _copy);
copy.cSld.spTree[copy.cSld.spTree.length - 1].setParent2(copy);
}
if(this.clrMap){
copy.setClMapOverride(this.clrMap.createDuplicate());
}
if(copy.matchingName !== this.matchingName){
copy.setMatchingName(this.matchingName);
}
if(copy.showMasterPhAnim !== this.showMasterPhAnim) {
copy.setShowPhAnim(this.showMasterPhAnim);
}
if(copy.showMasterSp !== this.showMasterSp) {
copy.setShowMasterSp(this.showMasterSp);
}
if(this.type !== copy.type){
copy.setType(this.type);
}
if(this.timing) {
copy.setTiming(this.timing.createDuplicate(oIdMap));
}
copy.setSlideSize(this.Width, this.Height);
copy.setPreserve(this.preserve);
return copy;
};
SlideLayout.prototype.setMaster = function(master)
{
History.Add(new AscDFH.CChangesDrawingsObject(this, AscDFH.historyitem_SlideLayoutSetMaster, this.Master, master));
this.Master = master;
};
SlideLayout.prototype.setMatchingName = function(name)
{
History.Add(new AscDFH.CChangesDrawingsString(this, AscDFH.historyitem_SlideLayoutSetMatchingName, this.matchingName, name));
this.matchingName = name;
};
SlideLayout.prototype.setHF = function (pr)
{
History.Add(new AscDFH.CChangesDrawingsObject(this, AscDFH.historyitem_SlideLayoutSetHF, this.hf, pr));
this.hf = pr;
};
SlideLayout.prototype.setType = function(type)
{
History.Add(new AscDFH.CChangesDrawingsLong(this, AscDFH.historyitem_SlideLayoutSetType, this.type, type));
this.type = type;
};
SlideLayout.prototype.changeBackground = function(bg)
{
History.Add(new AscDFH.CChangesDrawingsObjectNoId(this, AscDFH.historyitem_SlideLayoutSetBg, this.cSld.Bg, bg));
this.cSld.Bg = bg;
this.recalcInfo.recalculateBackground = true;
};
SlideLayout.prototype.needRecalc = function()
{
return this.recalcInfo.recalculateBackground ||
this.recalcInfo.recalculateSpTree ||
this.recalcInfo.recalculateBounds;
};
SlideLayout.prototype.setCSldName = function(name)
{
History.Add(new AscDFH.CChangesDrawingsString(this, AscDFH.historyitem_SlideLayoutSetCSldName, this.cSld.name, name));
this.cSld.name = name;
};
SlideLayout.prototype.setShow = function(bShow)
{
History.Add(new AscDFH.CChangesDrawingsBool(this, AscDFH.historyitem_SlideLayoutSetShow, this.show, bShow));
this.show = bShow;
};
SlideLayout.prototype.setShowPhAnim = function(bShow)
{
History.Add(new AscDFH.CChangesDrawingsBool(this, AscDFH.historyitem_SlideLayoutSetShowPhAnim, this.showMasterPhAnim, bShow));
this.showMasterPhAnim = bShow;
};
SlideLayout.prototype.setShowMasterSp = function(bShow)
{
History.Add(new AscDFH.CChangesDrawingsBool(this, AscDFH.historyitem_SlideLayoutSetShowMasterSp, this.showMasterSp, bShow));
this.showMasterSp = bShow;
};
SlideLayout.prototype.setClMapOverride = function(clrMap)
{
History.Add(new AscDFH.CChangesDrawingsObject(this, AscDFH.historyitem_SlideLayoutSetClrMapOverride, this.clrMap, clrMap));
this.clrMap = clrMap;
};
SlideLayout.prototype.shapeAdd = function(pos, item)
{
let pos_ = pos;
if(!AscFormat.isRealNumber(pos)) {
pos_ = this.cSld.spTree.length;
}
this.checkDrawingUniNvPr(item);
History.Add(new AscDFH.CChangesDrawingsContent(this, AscDFH.historyitem_SlideLayoutAddToSpTree, pos_, [item], true));
this.cSld.spTree.splice(pos_, 0, item);
item.setParent2(this);
this.recalcInfo.recalculateSpTree = true;
};
SlideLayout.prototype.addToSpTreeToPos = function(pos, obj)
{
this.shapeAdd(pos, obj);
};
SlideLayout.prototype.shapeRemove = function (pos, count) {
History.Add(new AscDFH.CChangesDrawingsContent(this, AscDFH.historyitem_SlideLayoutRemoveFromSpTree, pos, this.cSld.spTree.slice(pos, pos + count), false));
this.cSld.spTree.splice(pos, count);
};
SlideLayout.prototype.setSlideSize = function(w, h)
{
History.Add(new AscDFH.CChangesDrawingsObjectNoId(this, AscDFH.historyitem_SlideLayoutSetSize, new AscFormat.CDrawingBaseCoordsWritable(this.Width, this.Height), new AscFormat.CDrawingBaseCoordsWritable(w, h)));
this.Width = w;
this.Height = h;
};
SlideLayout.prototype.applyTransition = function(transition) {
var oldTransition;
if(this.transition) {
oldTransition = this.transition.createDuplicate();
}
else {
oldTransition = null;
}
var oNewTransition;
if(transition) {
if(this.transition) {
oNewTransition = this.transition.createDuplicate();
}
else {
oNewTransition = new Asc.CAscSlideTransition();
oNewTransition.setDefaultParams();
}
oNewTransition.applyProps(transition);
}
else {
oNewTransition = null;
}
this.transition = oNewTransition;
History.Add(new AscDFH.CChangesDrawingsObjectNoId(this, AscDFH.historyitem_SlideLayoutSetTransition, oldTransition, oNewTransition));
};
SlideLayout.prototype.setTiming = function(oTiming)
{
History.Add(new AscDFH.CChangesDrawingsObject(this, AscDFH.historyitem_SlideLayoutSetTiming, this.timing, oTiming));
this.timing = oTiming;
if(this.timing)
{
this.timing.setParent(this);
}
};
SlideLayout.prototype.changeSize = Slide.prototype.changeSize;
SlideLayout.prototype.getAllRasterImages = Slide.prototype.getAllRasterImages;
SlideLayout.prototype.Reassign_ImageUrls = Slide.prototype.Reassign_ImageUrls;
SlideLayout.prototype.checkDrawingUniNvPr = Slide.prototype.checkDrawingUniNvPr;
SlideLayout.prototype.handleAllContents = Slide.prototype.handleAllContents;
SlideLayout.prototype.getAllRasterImagesForDraw = Slide.prototype.getAllRasterImagesForDraw;
SlideLayout.prototype.checkImageDraw = Slide.prototype.checkImageDraw;
SlideLayout.prototype.openChartEditor = Slide.prototype.openChartEditor;
SlideLayout.prototype.openOleEditor = Slide.prototype.openOleEditor;
SlideLayout.prototype.recalculateBackground = function()
{
var _back_fill = null;
var RGBA = {R:0, G:0, B:0, A:255};
var _layout = this;
var _master = _layout.Master;
var _theme = _master.Theme;
if (this.cSld.Bg != null)
{
if (null != this.cSld.Bg.bgPr)
_back_fill = this.cSld.Bg.bgPr.Fill;
else if(this.cSld.Bg.bgRef != null)
{
this.cSld.Bg.bgRef.Color.Calculate(_theme, this, _layout, _master, RGBA);
RGBA = this.cSld.Bg.bgRef.Color.RGBA;
_back_fill = _theme.themeElements.fmtScheme.GetFillStyle(this.cSld.Bg.bgRef.idx, this.cSld.Bg.bgRef.Color);
}
}
else
{
if (_layout != null)
{
if (_layout.cSld.Bg != null)
{
if (null != _layout.cSld.Bg.bgPr)
_back_fill = _layout.cSld.Bg.bgPr.Fill;
else if(_layout.cSld.Bg.bgRef != null)
{
_layout.cSld.Bg.bgRef.Color.Calculate(_theme, this, _layout, _master, RGBA);
RGBA = _layout.cSld.Bg.bgRef.Color.RGBA;
_back_fill = _theme.themeElements.fmtScheme.GetFillStyle(_layout.cSld.Bg.bgRef.idx, _layout.cSld.Bg.bgRef.Color);
}
}
else if (_master != null)
{
if (_master.cSld.Bg != null)
{
if (null != _master.cSld.Bg.bgPr)
_back_fill = _master.cSld.Bg.bgPr.Fill;
else if(_master.cSld.Bg.bgRef != null)
{
_master.cSld.Bg.bgRef.Color.Calculate(_theme, this, _layout, _master, RGBA);
RGBA = _master.cSld.Bg.bgRef.Color.RGBA;
_back_fill = _theme.themeElements.fmtScheme.GetFillStyle(_master.cSld.Bg.bgRef.idx, _master.cSld.Bg.bgRef.Color);
}
}
else
{
_back_fill = new AscFormat.CUniFill();
_back_fill.fill = new AscFormat.CSolidFill();
_back_fill.fill.color = new AscFormat.CUniColor();
_back_fill.fill.color.color = new AscFormat.CRGBColor();
_back_fill.fill.color.color.RGBA = {R:255, G:255, B:255, A:255};
}
}
}
}
if (_back_fill != null)
_back_fill.calculate(_theme, this, _layout, _master, RGBA);
this.backgroundFill = _back_fill;
};
SlideLayout.prototype.drawNoPlaceholders = function(graphics, slide) {
if(slide) {
if(AscFormat.isRealNumber(slide.num) && slide.num !== this.lastRecalcSlideIndex) {
this.lastRecalcSlideIndex = slide.num;
this.cSld.refreshAllContentsFields(true);
}
}
else {
if(-1 !== this.lastRecalcSlideIndex){
this.lastRecalcSlideIndex = -1;
this.cSld.refreshAllContentsFields(true);
}
}
this.recalculate();
DrawBackground(graphics, this.backgroundFill, this.Width, this.Height);
if(this.showMasterSp) {
this.Master.drawNoPlaceholdersShapesOnly(graphics, this);
}
this.cSld.forEachSp(function(oSp) {
if ( !AscCommon.IsHiddenObj(oSp) && !oSp.isPlaceholder()) {
oSp.draw(graphics);
}
});
};
SlideLayout.prototype.drawNoPlaceholdersShapesOnly = function(graphics, slide) {
if(slide) {
if(AscFormat.isRealNumber(slide.num) && slide.num !== this.lastRecalcSlideIndex) {
this.lastRecalcSlideIndex = slide.num;
this.cSld.refreshAllContentsFields(true);
}
}
else {
if(-1 !== this.lastRecalcSlideIndex){
this.lastRecalcSlideIndex = -1;
this.cSld.refreshAllContentsFields(true);
}
}
this.recalculate();
this.cSld.forEachSp(function(oSp) {
if ( !AscCommon.IsHiddenObj(oSp) && !oSp.isPlaceholder()) {
oSp.draw(graphics);
}
});
};
SlideLayout.prototype.draw = function (graphics, slide) {
if(slide){
if(AscFormat.isRealNumber(slide.num) && slide.num !== this.lastRecalcSlideIndex){
this.lastRecalcSlideIndex = slide.num;
this.cSld.refreshAllContentsFields(true);
}
}
else {
if(-1 !== this.lastRecalcSlideIndex){
this.lastRecalcSlideIndex = -1;
this.cSld.refreshAllContentsFields(true);
}
}
this.recalculate();
DrawBackground(graphics, this.backgroundFill, this.Width, this.Height);
if(this.showMasterSp) {
this.Master.drawNoPlaceholdersShapesOnly(graphics, this);
}
this.cSld.forEachSp(function(oSp) {
if (!AscCommon.IsHiddenObj(oSp)) {
oSp.draw(graphics);
}
});
if(!slide) {
this.drawViewPrMarks(graphics);
}
};
SlideLayout.prototype.calculateType = function()
{
if(this.type !== null)
{
this.calculatedType = this.type;
return;
}
var _ph_types_array = [];
var _matchedLayoutTypes = [];
for(var _ph_type_index = 0; _ph_type_index < 16; ++_ph_type_index)
{
_ph_types_array[_ph_type_index] = 0;
}
for(var _layout_type_index = 0; _layout_type_index < 36; ++_layout_type_index)
{
_matchedLayoutTypes[_layout_type_index] = false;
}
var _shapes = this.cSld.spTree;
var _shape_index;
var _shape;
for(_shape_index = 0; _shape_index < _shapes.length; ++_shape_index)
{
_shape = _shapes[_shape_index];
if(_shape.isPlaceholder())
{
var _cur_type = _shape.getPlaceholderType();
if(!(typeof(_cur_type) == "number"))
{
_cur_type = AscFormat.phType_body;
}
if(typeof _ph_types_array[_cur_type] == "number")
{
++_ph_types_array[_cur_type];
}
}
}
var _weight = Math.pow(AscFormat._ph_multiplier, AscFormat._weight_body)*_ph_types_array[AscFormat.phType_body] + Math.pow(AscFormat._ph_multiplier, AscFormat._weight_chart)*_ph_types_array[AscFormat.phType_chart] +
Math.pow(AscFormat._ph_multiplier, AscFormat._weight_clipArt)*_ph_types_array[AscFormat.phType_clipArt] + Math.pow(AscFormat._ph_multiplier, AscFormat._weight_ctrTitle)*_ph_types_array[AscFormat.phType_ctrTitle] +
Math.pow(AscFormat._ph_multiplier, AscFormat._weight_dgm)*_ph_types_array[AscFormat.phType_dgm] + Math.pow(AscFormat._ph_multiplier, AscFormat._weight_media)*_ph_types_array[AscFormat.phType_media] +
Math.pow(AscFormat._ph_multiplier, AscFormat._weight_obj)*_ph_types_array[AscFormat.phType_obj] + Math.pow(AscFormat._ph_multiplier, AscFormat._weight_pic)*_ph_types_array[AscFormat.phType_pic] +
Math.pow(AscFormat._ph_multiplier, AscFormat._weight_subTitle)*_ph_types_array[AscFormat.phType_subTitle] + Math.pow(AscFormat._ph_multiplier, AscFormat._weight_tbl)*_ph_types_array[AscFormat.phType_tbl] +
Math.pow(AscFormat._ph_multiplier, AscFormat._weight_title)*_ph_types_array[AscFormat.phType_title];
for(var _index = 0; _index < 18; ++_index)
{
if(_weight >= AscFormat._arr_lt_types_weight[_index] && _weight <= AscFormat._arr_lt_types_weight[_index+1])
{
if(Math.abs(AscFormat._arr_lt_types_weight[_index]-_weight) <= Math.abs(AscFormat._arr_lt_types_weight[_index + 1]-_weight))
{
this.calculatedType = AscFormat._global_layout_summs_array["_" + AscFormat._arr_lt_types_weight[_index]];
return;
}
else
{
this.calculatedType = AscFormat._global_layout_summs_array["_" + AscFormat._arr_lt_types_weight[_index+1]];
return;
}
}
}
this.calculatedType = AscFormat._global_layout_summs_array["_" + AscFormat._arr_lt_types_weight[18]];
};
SlideLayout.prototype.recalculate = function()
{
if(!this.Master)
return;
var _shapes = this.cSld.spTree;
var _shape_index;
var _shape_count = _shapes.length;
var bRecalculateBounds = this.recalcInfo.recalculateBounds;
if(bRecalculateBounds){
this.bounds.reset(this.Width + 100.0, this.Height + 100.0, -100.0, -100.0);
}
var bChecked = false;
for(_shape_index = 0; _shape_index < _shape_count; ++_shape_index)
{
if(!_shapes[_shape_index].isPlaceholder() || true){
_shapes[_shape_index].recalculate();
if(bRecalculateBounds){
this.bounds.checkByOther(_shapes[_shape_index].bounds);
}
bChecked = true;
}
}
if(bRecalculateBounds){
if(bChecked){
this.bounds.checkWH();
if(this.bounds.w < 0 || this.bounds.h < 0){
this.bounds.reset(0.0, 0.0, 0.0, 0.0);
}
}
else{
this.bounds.reset(0.0, 0.0, 0.0, 0.0);
}
this.recalcInfo.recalculateBounds = false;
}
if(this.recalcInfo.recalculateBackground) {
this.recalculateBackground();
this.recalcInfo.recalculateBackground = false;
}
if(this.recalcInfo.recalculateSpTree) {
for(let i = 0; i < this.cSld.spTree.length; ++i)
this.cSld.spTree[i].recalculate();
this.recalcInfo.recalculateSpTree = false;
}
};
SlideLayout.prototype.recalculate2 = function()
{
var _shapes = this.cSld.spTree;
var _shape_index;
var _shape_count = _shapes.length;
for(_shape_index = 0; _shape_index < _shape_count; ++_shape_index)
{
if(_shapes[_shape_index].isPlaceholder && _shapes[_shape_index].isPlaceholder())
_shapes[_shape_index].recalculate();
}
};
SlideLayout.prototype.checkSlideSize = Slide.prototype.checkSlideSize;
SlideLayout.prototype.checkSlideColorScheme = function()
{
this.recalcInfo.recalculateSpTree = true;
this.recalcInfo.recalculateBackground = true;
for(var i = 0; i < this.cSld.spTree.length; ++i)
{
if(!this.cSld.spTree[i].isPlaceholder())
{
this.cSld.spTree[i].handleUpdateFill();
this.cSld.spTree[i].handleUpdateLn();
}
}
};
SlideLayout.prototype.CheckCorrect = function(){
if(!this.Master){
return false;
}
return true;
};
SlideLayout.prototype.getMatchingShape = Slide.prototype.getMatchingShape;
SlideLayout.prototype.getAllImages = function(images)
{
if(this.cSld.Bg && this.cSld.Bg.bgPr && this.cSld.Bg.bgPr.Fill && this.cSld.Bg.bgPr.Fill.fill instanceof AscFormat.CBlipFill && typeof this.cSld.Bg.bgPr.Fill.fill.RasterImageId === "string" )
{
images[AscCommon.getFullImageSrc2(this.cSld.Bg.bgPr.Fill.fill.RasterImageId)] = true;
}
for(var i = 0; i < this.cSld.spTree.length; ++i)
{
if(typeof this.cSld.spTree[i].getAllImages === "function")
{
this.cSld.spTree[i].getAllImages(images);
}
}
};
SlideLayout.prototype.getAllFonts = function(fonts)
{
for(var i = 0; i < this.cSld.spTree.length; ++i)
{
if(typeof this.cSld.spTree[i].getAllFonts === "function")
this.cSld.spTree[i].getAllFonts(fonts);
}
};
SlideLayout.prototype.createFontMap = function (oFontsMap, oCheckedMap, isNoPh) {
if(oCheckedMap[this.Get_Id()]) {
return;
}
var aSpTree = this.cSld.spTree;
var nSp, oSp, nSpCount = aSpTree.length;
for(nSp = 0; nSp < nSpCount; ++nSp) {
oSp = aSpTree[nSp];
if(isNoPh)
{
if(oSp.isPlaceholder())
{
continue;
}
}
oSp.createFontMap(oFontsMap);
}
oCheckedMap[this.Get_Id()] = this;
};
SlideLayout.prototype.addToRecalculate = function()
{
History.RecalcData_Add({Type: AscDFH.historyitem_recalctype_Drawing, Object: this});
};
SlideLayout.prototype.Refresh_RecalcData = function(data)
{
if(data)
{
switch(data.Type)
{
case AscDFH.historyitem_SlideLayoutAddToSpTree:
{
this.recalcInfo.recalculateBounds = true;
break;
}
case AscDFH.historyitem_SlideLayoutSetBg:
{
this.recalcInfo.recalculateBackground = true;
break;
}
}
this.addToRecalculate();
}
};
SlideLayout.prototype.Clear_ContentChanges = function () {
};
SlideLayout.prototype.Add_ContentChanges = function (Changes) {
};
SlideLayout.prototype.Refresh_ContentChanges = function () {
};
SlideLayout.prototype.scale = function (kw, kh) {
for(var i = 0; i < this.cSld.spTree.length; ++i)
{
this.cSld.spTree[i].changeSize(kw, kh);
}
};
SlideLayout.prototype.Load_Comments = function(authors)
{
var _comments_count = this.writecomments.length;
var _comments_id = [];
var _comments_data = [];
var _comments = [];
for (var i = 0; i < _comments_count; i++)
{
var _wc = this.writecomments[i];
if (0 == _wc.WriteParentAuthorId || 0 == _wc.WriteParentCommentId)
{
var commentData = new AscCommon.CCommentData();
commentData.m_sText = _wc.WriteText;
commentData.m_sUserId = ("" + _wc.WriteAuthorId);
commentData.m_sUserName = "";
commentData.m_sTime = _wc.WriteTime;
for (var k in authors)
{
if (_wc.WriteAuthorId == authors[k].Id)
{
commentData.m_sUserName = authors[k].Name;
break;
}
}
if ("" != commentData.m_sUserName)
{
_comments_id.push(_wc.WriteCommentId);
_comments_data.push(commentData);
var comment = new AscCommon.CComment(undefined, null);
comment.setPosition(_wc.x / 25.4, _wc.y / 25.4);
_comments.push(comment);
}
}
else
{
var commentData = new AscCommon.CCommentData();
commentData.m_sText = _wc.WriteText;
commentData.m_sUserId = ("" + _wc.WriteAuthorId);
commentData.m_sUserName = "";
commentData.m_sTime = _wc.WriteTime;
for (var k in authors)
{
if (_wc.WriteAuthorId == authors[k].Id)
{
commentData.m_sUserName = authors[k].Name;
break;
}
}
var _parent = null;
for (var j = 0; j < _comments_data.length; j++)
{
if ((("" + _wc.WriteParentAuthorId) == _comments_data[j].m_sUserId) && (_wc.WriteParentCommentId == _comments_id[j]))
{
_parent = _comments_data[j];
break;
}
}
if (null != _parent)
{
_parent.m_aReplies.push(commentData);
}
}
}
for (var i = 0; i < _comments.length; i++)
{
_comments[i].Set_Data(_comments_data[i]);
this.addComment(_comments[i]);
}
this.writecomments = [];
};
SlideLayout.prototype.copySelectedObjects = function () {
AscCommonSlide.Slide.prototype.copySelectedObjects.call(this);
};
SlideLayout.prototype.getPlaceholdersControls = function () {
return AscCommonSlide.Slide.prototype.getPlaceholdersControls.call(this);
};
SlideLayout.prototype.getDrawingObjects = function() {
return AscCommonSlide.Slide.prototype.getDrawingObjects.call(this);
};
SlideLayout.prototype.showChartSettings = function () {
return AscCommonSlide.Slide.prototype.showChartSettings.call(this);
};
SlideLayout.prototype.getParentObjects = function () {
return {
presentation: Asc.editor.private_GetLogicDocument(),
master: this.Master,
layout: this,
slide: null
};
};
SlideLayout.prototype.recalculateNotesShape = function () {
};
SlideLayout.prototype.getNotesHeight = function () {
return 0;
};
SlideLayout.prototype.recalcText = function() {
return AscCommonSlide.Slide.prototype.recalcText.call(this);
};
SlideLayout.prototype.removeFromSpTreeById = function(sId) {
return AscCommonSlide.Slide.prototype.removeFromSpTreeById.call(this, sId);
};
SlideLayout.prototype.removeFromSpTreeByPos = function(pos) {
return AscCommonSlide.Slide.prototype.removeFromSpTreeByPos.call(this, pos);
};
SlideLayout.prototype.isVisible = function(){
return true;
};
SlideLayout.prototype.getWorksheet = function(){
return null;
};
SlideLayout.prototype.convertPixToMM = function(pix) {
return editor.WordControl.m_oDrawingDocument.GetMMPerDot(pix);
};
SlideLayout.prototype.isSlide = function () {
return false;
};
SlideLayout.prototype.isLayout = function () {
return true;
};
SlideLayout.prototype.isMaster = function () {
return false;
};
SlideLayout.prototype.RestartSpellCheck = function()
{
Slide.prototype.RestartSpellCheck.call(this);
};
SlideLayout.prototype.Search = function(Engine, Type)
{
Slide.prototype.Search.call(this, Engine, Type);
};
SlideLayout.prototype.GetSearchElementId = function(isNext, StartPos)
{
return Slide.prototype.GetSearchElementId.call(this, isNext, StartPos);
};
SlideLayout.prototype.replaceSp = function(oPh, oObject)
{
return Slide.prototype.replaceSp.call(this, oPh, oObject);
};
SlideLayout.prototype.Get_ColorMap = function()
{
if(this.clrMap)
{
return this.clrMap;
}
else if(this.Master && this.Master.clrMap)
{
return this.Master.clrMap;
}
return AscFormat.GetDefaultColorMap();
};
SlideLayout.prototype.checkSlideTheme = function() {
return AscCommonSlide.Slide.prototype.checkSlideTheme.call(this);
};
SlideLayout.prototype.IsUseInDocument = function() {
let oMaster = this.Master;
if(!oMaster) return false;
if(!oMaster.IsUseInDocument()) return false;
for(let nLt = 0; nLt < oMaster.sldLayoutLst.length; ++nLt) {
if(oMaster.sldLayoutLst[nLt] === this) return true;
}
return false;
};
SlideLayout.prototype.IsUseInSlides = function() {
const oPresentation = this.presentation;
if (!oPresentation) {
return;
}
for (let i = 0; i < oPresentation.Slides.length; i += 1) {
const oSlide = oPresentation.Slides[i];
if (oSlide.Layout === this) {
return true;
}
}
return false;
};
SlideLayout.prototype.drawViewPrMarks = function(oGraphics) {
if(oGraphics.isSupportTextDraw && !oGraphics.isSupportTextDraw()) return;
return AscCommonSlide.Slide.prototype.drawViewPrMarks.call(this, oGraphics);
};
SlideLayout.prototype.checkPlaceholders = function(oPlaceholders) {
return AscCommonSlide.Slide.prototype.checkPlaceholders.call(this, oPlaceholders);
};
SlideLayout.prototype.removeAllInks = function() {
return AscCommonSlide.Slide.prototype.removeAllInks.call(this);
};
SlideLayout.prototype.getAllInks = function(arrInks) {
arrInks = arrInks || [];
return AscCommonSlide.Slide.prototype.getAllInks.call(this, arrInks);
};
SlideLayout.prototype.isPreserve = function() {
return this.preserve;
};
SlideLayout.prototype.setPreserve = function(bPr) {
History.Add(new AscDFH.CChangesDrawingsBool(this, AscDFH.historyitem_SlideLayoutSetPreserve, this.preserve, bPr));
this.preserve = bPr;
};
let LAYOUT_TYPE_MAP = {};
LAYOUT_TYPE_MAP["blank"] = AscFormat.nSldLtTBlank;
LAYOUT_TYPE_MAP["chart"] = AscFormat.nSldLtTChart;
LAYOUT_TYPE_MAP["chartAndTx"] = AscFormat.nSldLtTChartAndTx;
LAYOUT_TYPE_MAP["clipArtAndTx"] = AscFormat.nSldLtTClipArtAndTx;
LAYOUT_TYPE_MAP["clipArtAndVertTx"] = AscFormat.nSldLtTClipArtAndVertTx;
LAYOUT_TYPE_MAP["cust"] = AscFormat.nSldLtTCust;
LAYOUT_TYPE_MAP["dgm"] = AscFormat.nSldLtTDgm;
LAYOUT_TYPE_MAP["fourObj"] = AscFormat.nSldLtTFourObj;
LAYOUT_TYPE_MAP["mediaAndTx"] = AscFormat.nSldLtTMediaAndTx;
LAYOUT_TYPE_MAP["obj"] = AscFormat.nSldLtTObj;
LAYOUT_TYPE_MAP["objAndTwoObj"] = AscFormat.nSldLtTObjAndTwoObj;
LAYOUT_TYPE_MAP["objAndTx"] = AscFormat.nSldLtTObjAndTx;
LAYOUT_TYPE_MAP["objOnly"] = AscFormat.nSldLtTObjOnly;
LAYOUT_TYPE_MAP["objOverTx"] = AscFormat.nSldLtTObjOverTx;
LAYOUT_TYPE_MAP["objTx"] = AscFormat.nSldLtTObjTx;
LAYOUT_TYPE_MAP["picTx"] = AscFormat.nSldLtTPicTx;
LAYOUT_TYPE_MAP["secHead"] = AscFormat.nSldLtTSecHead;
LAYOUT_TYPE_MAP["tbl"] = AscFormat.nSldLtTTbl;
LAYOUT_TYPE_MAP["title"] = AscFormat.nSldLtTTitle;
LAYOUT_TYPE_MAP["titleOnly"] = AscFormat.nSldLtTTitleOnly;
LAYOUT_TYPE_MAP["twoColTx"] = AscFormat.nSldLtTTwoColTx;
LAYOUT_TYPE_MAP["twoObj"] = AscFormat.nSldLtTTwoObj;
LAYOUT_TYPE_MAP["twoObjAndObj"] = AscFormat.nSldLtTTwoObjAndObj;
LAYOUT_TYPE_MAP["twoObjAndTx"] = AscFormat.nSldLtTTwoObjAndTx;
LAYOUT_TYPE_MAP["twoObjOverTx"] = AscFormat.nSldLtTTwoObjOverTx;
LAYOUT_TYPE_MAP["twoTxTwoObj"] = AscFormat.nSldLtTTwoTxTwoObj;
LAYOUT_TYPE_MAP["tx"] = AscFormat.nSldLtTTx;
LAYOUT_TYPE_MAP["txAndChart"] = AscFormat.nSldLtTTxAndChart;
LAYOUT_TYPE_MAP["txAndClipArt"] = AscFormat.nSldLtTTxAndClipArt;
LAYOUT_TYPE_MAP["txAndMedia"] = AscFormat.nSldLtTTxAndMedia;
LAYOUT_TYPE_MAP["txAndObj"] = AscFormat.nSldLtTTxAndObj;
LAYOUT_TYPE_MAP["txAndTwoObj"] = AscFormat.nSldLtTTxAndTwoObj;
LAYOUT_TYPE_MAP["txOverObj"] = AscFormat.nSldLtTTxOverObj;
LAYOUT_TYPE_MAP["vertTitleAndTx"] = AscFormat.nSldLtTVertTitleAndTx;
LAYOUT_TYPE_MAP["vertTitleAndTxOverChart"] = AscFormat.nSldLtTVertTitleAndTxOverChart;
LAYOUT_TYPE_MAP["vertTx"] = AscFormat.nSldLtTVertTx;
let LAYOUT_TYPE_TO_STRING = {};
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTBlank] = "blank" ;
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTChart] = "chart";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTChartAndTx] = "chartAndTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTClipArtAndTx] = "clipArtAndTx"
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTClipArtAndVertTx] = "clipArtAndVertTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTCust] = "cust";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTDgm] = "dgm";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTFourObj] = "fourObj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTMediaAndTx] = "mediaAndTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTObj] = "obj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTObjAndTwoObj] = "objAndTwoObj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTObjAndTx] = "objAndTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTObjOnly] = "objOnly";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTObjOverTx] = "objOverTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTObjTx] = "objTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTPicTx] = "picTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTSecHead] = "secHead";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTbl] = "tbl";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTitle] = "title";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTitleOnly] = "titleOnly";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTwoColTx] = "twoColTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTwoObj] = "twoObj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTwoObjAndObj] = "twoObjAndObj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTwoObjAndTx] = "twoObjAndTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTwoObjOverTx] = "twoObjOverTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTwoTxTwoObj] = "twoTxTwoObj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTx] = "tx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTxAndChart] = "txAndChart";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTxAndClipArt] = "txAndClipArt";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTxAndMedia] = "txAndMedia";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTxAndObj] = "txAndObj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTxAndTwoObj] = "txAndTwoObj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTTxOverObj] = "txOverObj";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTVertTitleAndTx] = "vertTitleAndTx";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTVertTitleAndTxOverChart] = "vertTitleAndTxOverChart";
LAYOUT_TYPE_TO_STRING[AscFormat.nSldLtTVertTx] = "vertTx";
function DrawLineDash(g, x1, y1, x2, y2, w_dot, w_dist){
var len = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
if (len < 1)
len = 1;
var len_x1 = Math.abs(w_dot*(x2-x1)/len);
var len_y1 = Math.abs(w_dot*(y2-y1)/len);
var len_x2 = Math.abs(w_dist*(x2-x1)/len);
var len_y2 = Math.abs(w_dist*(y2-y1)/len);
if (len_x1 < 0.01 && len_y1 < 0.01)
return;
if (len_x2 < 0.01 && len_y2 < 0.01)
return;
if (x1 <= x2 && y1 <= y2)
{
for (var i = x1, j = y1; i <= x2 && j <= y2; i += len_x2, j += len_y2)
{
g._m(i, j);
i += len_x1;
j += len_y1;
if (i > x2)
i = x2;
if (j > y2)
j = y2;
g._l(i, j);
}
}
else if (x1 <= x2 && y1 > y2)
{
for (var i = x1, j = y1; i <= x2 && j >= y2; i += len_x2, j -= len_y2)
{
g._m(i, j);
i += len_x1;
j -= len_y1;
if (i > x2)
i = x2;
if (j < y2)
j = y2;
g._l(i, j);
}
}
else if (x1 > x2 && y1 <= y2)
{
for (var i = x1, j = y1; i >= x2 && j <= y2; i -= len_x2, j += len_y2)
{
g._m(i, j);
i -= len_x1;
j += len_y1;
if (i < x2)
i = x2;
if (j > y2)
j = y2;
g._l(i, j);
}
}
else
{
for (var i = x1, j = y1; i >= x2 && j >= y2; i -= len_x2, j -= len_y2)
{
g._m(i, j);
i -= len_x1;
j -= len_y1;
if (i < x2)
i = x2;
if (j < y2)
j = y2;
g._l(i, j);
}
}
}
function DrawNativeDashRect(g, transform, extX, extY) {
var x1, y1, x2, y2, x3, y3, x4, y4;
x1 = transform.TransformPointX(0, 0);
y1 = transform.TransformPointY(0, 0);
x2 = transform.TransformPointX(extX, 0);
y2 = transform.TransformPointY(extX, 0);
x3 = transform.TransformPointX(extX, extY);
y3 = transform.TransformPointY(extX, extY);
x4 = transform.TransformPointX(0, extY);
y4 = transform.TransformPointY(0, extY);
g.p_width(1500);
g.p_color(128, 128, 128, 255);
g._s();
g._m(x1, y1);
g._l(x2, y2);
g._l(x3, y3);
g._l(x4, y4);
g._z();
g.ds();
g._e();
var w_dot = 5;
var w_dist = 5;
g._s();
g.p_color(255, 255, 255, 255);
DrawLineDash(g, x1, y1, x2, y2, w_dot, w_dist);
DrawLineDash(g, x2, y2, x3, y3, w_dot, w_dist);
DrawLineDash(g, x3, y3, x4, y4, w_dot, w_dist);
DrawLineDash(g, x4, y4, x1, y1, w_dot, w_dist);
g.ds();
g._e();
}
function CLayoutThumbnailDrawer()
{
this.CanvasImage = null;
this.WidthMM = 0;
this.HeightMM = 0;
this.WidthPx = 0;
this.HeightPx = 0;
this.DrawingDocument = null;
this.Draw = function (g, _layout, use_background, use_master_shapes, use_layout_shapes) {
// background
var _back_fill = null;
var RGBA = {R:0, G:0, B:0, A:255};
var _master = _layout.Master;
var _theme = _master.Theme;
if (_layout != null)
{
if (_layout.cSld.Bg != null)
{
if (null != _layout.cSld.Bg.bgPr)
_back_fill = _layout.cSld.Bg.bgPr.Fill;
else if(_layout.cSld.Bg.bgRef != null)
{
_layout.cSld.Bg.bgRef.Color.Calculate(_theme, null, _layout, _master, RGBA);
RGBA = _layout.cSld.Bg.bgRef.Color.RGBA;
_back_fill = _theme.themeElements.fmtScheme.GetFillStyle(_layout.cSld.Bg.bgRef.idx);
}
}
else if (_master != null)
{
if (_master.cSld.Bg != null)
{
if (null != _master.cSld.Bg.bgPr)
_back_fill = _master.cSld.Bg.bgPr.Fill;
else if(_master.cSld.Bg.bgRef != null)
{
_master.cSld.Bg.bgRef.Color.Calculate(_theme, null, _layout, _master, RGBA);
RGBA = _master.cSld.Bg.bgRef.Color.RGBA;
_back_fill = _theme.themeElements.fmtScheme.GetFillStyle(_master.cSld.Bg.bgRef.idx);
}
}
else
{
_back_fill = new AscFormat.CUniFill();
_back_fill.fill = new AscFormat.CSolidFill();
_back_fill.fill.color = new AscFormat.CUniColor();
_back_fill.fill.color.color = new AscFormat.CRGBColor();
_back_fill.fill.color.color.RGBA = {R:255, G:255, B:255, A:255};
}
}
}
if (_back_fill != null)
_back_fill.calculate(_theme, null, _layout, _master, RGBA);
if (use_background !== false)
DrawBackground(g, _back_fill, this.WidthMM, this.HeightMM);
var _sx = g.m_oCoordTransform.sx;
var _sy = g.m_oCoordTransform.sy;
if (use_master_shapes !== false)
{
if (_layout.showMasterSp)
{
if(_master.needRecalc && _master.needRecalc())
{
_master.recalculate();
}
_master.drawNoPlaceholdersShapesOnly(g);
}
}
for (var i = 0; i < _layout.cSld.spTree.length; i++)
{
var _sp_elem = _layout.cSld.spTree[i];
_sp_elem.recalculate();
if(_sp_elem.isPlaceholder && _sp_elem.isPlaceholder() && !AscCommon.IsHiddenObj(_sp_elem))
{
var _ph_type = _sp_elem.getPlaceholderType();
var _usePH = true;
switch (_ph_type)
{
case AscFormat.phType_dt:
case AscFormat.phType_ftr:
case AscFormat.phType_hdr:
case AscFormat.phType_sldNum:
{
_usePH = false;
break;
}
default:
break;
}
if (!_usePH)
continue;
_sp_elem.draw(g);
if(!_sp_elem.pen || !_sp_elem.pen.Fill || _sp_elem.pen.isNoFillLine())
{
if(!window["NATIVE_EDITOR_ENJINE"])
{
var _ctx = g.m_oContext;
_ctx.globalAlpha = 1;
var _matrix = _sp_elem.transform;
var _x = 1;
var _y = 1;
var _r = Math.max(_sp_elem.extX - 1, 1);
var _b = Math.max(_sp_elem.extY - 1, 1);
var _isIntegerGrid = g.GetIntegerGrid();
if (!_isIntegerGrid)
g.SetIntegerGrid(true);
if (_matrix)
{
var _x1 = _sx * _matrix.TransformPointX(_x, _y);
var _y1 = _sy * _matrix.TransformPointY(_x, _y);
var _x2 = _sx * _matrix.TransformPointX(_r, _y);
var _y2 = _sy * _matrix.TransformPointY(_r, _y);
var _x3 = _sx * _matrix.TransformPointX(_x, _b);
var _y3 = _sy * _matrix.TransformPointY(_x, _b);
var _x4 = _sx * _matrix.TransformPointX(_r, _b);
var _y4 = _sy * _matrix.TransformPointY(_r, _b);
if (Math.abs(_matrix.shx) < 0.001 && Math.abs(_matrix.shy) < 0.001)
{
_x = _x1;
if (_x > _x2)
_x = _x2;
if (_x > _x3)
_x = _x3;
_r = _x1;
if (_r < _x2)
_r = _x2;
if (_r < _x3)
_r = _x3;
_y = _y1;
if (_y > _y2)
_y = _y2;
if (_y > _y3)
_y = _y3;
_b = _y1;
if (_b < _y2)
_b = _y2;
if (_b < _y3)
_b = _y3;
_x >>= 0;
_y >>= 0;
_r >>= 0;
_b >>= 0;
_ctx.lineWidth = 1;
_ctx.strokeStyle = "#FFFFFF";
_ctx.beginPath();
_ctx.strokeRect(_x + 0.5, _y + 0.5, _r - _x, _b - _y);
_ctx.strokeStyle = "#000000";
_ctx.beginPath();
this.DrawingDocument.AutoShapesTrack.AddRectDashClever(_ctx, _x, _y, _r, _b, 2, 2, true);
_ctx.beginPath();
}
else
{
_ctx.lineWidth = 1;
_ctx.strokeStyle = "#000000";
_ctx.beginPath();
_ctx.moveTo(_x1, _y1);
_ctx.lineTo(_x2, _y2);
_ctx.lineTo(_x4, _y4);
_ctx.lineTo(_x3, _y3);
_ctx.closePath();
_ctx.stroke();
_ctx.strokeStyle = "#FFFFFF";
_ctx.beginPath();
this.DrawingDocument.AutoShapesTrack.AddRectDash(_ctx, _x1, _y1, _x2, _y2, _x3, _y3, _x4, _y4, 2, 2, true);
_ctx.beginPath();
}
}
else
{
_x = (_sx * _x) >> 0;
_y = (_sy * _y) >> 0;
_r = (_sx * _r) >> 0;
_b = (_sy * _b) >> 0;
_ctx.lineWidth = 1;
_ctx.strokeStyle = "#000000";
_ctx.beginPath();
_ctx.strokeRect(_x + 0.5, _y + 0.5, _r - _x, _b - _y);
_ctx.strokeStyle = "#FFFFFF";
_ctx.beginPath();
this.DrawingDocument.AutoShapesTrack.AddRectDashClever(_ctx, _x, _y, _r, _b, 2, 2, true);
_ctx.beginPath();
}
if (!_isIntegerGrid)
g.SetIntegerGrid(true);
}
else
{
DrawNativeDashRect(g, _sp_elem.transform, _sp_elem.extX, _sp_elem.extY);
}
}
}
else
{
_sp_elem.draw(g);
}
}
};
this.GetThumbnail = function(_layout, use_background, use_master_shapes, use_layout_shapes)
{
_layout.recalculate2();
var h_px = AscCommon.GlobalSkin.THEMES_LAYOUT_THUMBNAIL_HEIGHT;
var w_px = (this.WidthMM * h_px / this.HeightMM) >> 0;
w_px = (w_px >> 2) << 2;
h_px = AscCommon.AscBrowser.convertToRetinaValue(h_px, true);
w_px = AscCommon.AscBrowser.convertToRetinaValue(w_px, true);
this.WidthPx = w_px;
this.HeightPx = h_px;
if (this.CanvasImage == null)
this.CanvasImage = document.createElement('canvas');
this.CanvasImage.width = w_px;
this.CanvasImage.height = h_px;
var _ctx = this.CanvasImage.getContext('2d');
var g = new AscCommon.CGraphics();
g.IsThumbnail = true;
g.init(_ctx, w_px, h_px, this.WidthMM, this.HeightMM);
g.m_oFontManager = AscCommon.g_fontManager;
g.transform(1,0,0,1,0,0);
g.isSupportTextDraw = function() {return false;};
this.Draw(g, _layout, use_background, use_master_shapes, use_layout_shapes);
try
{
return this.CanvasImage.toDataURL("image/png");
}
catch (err)
{
this.CanvasImage = null;
if (undefined === use_background && undefined === use_master_shapes && undefined == use_layout_shapes)
return this.GetThumbnail(_layout, true, true, false);
else if (use_background && use_master_shapes && !use_layout_shapes)
return this.GetThumbnail(_layout, true, false, false);
else if (use_background && !use_master_shapes && !use_layout_shapes)
return this.GetThumbnail(_layout, false, false, false);
}
return "";
}
}
//--------------------------------------------------------export----------------------------------------------------
window['AscCommonSlide'] = window['AscCommonSlide'] || {};
window['AscCommonSlide'].SlideLayout = SlideLayout;
window['AscCommonSlide'].LAYOUT_TYPE_MAP = LAYOUT_TYPE_MAP;
window['AscCommonSlide'].LAYOUT_TYPE_TO_STRING = LAYOUT_TYPE_TO_STRING;