704 lines
28 KiB
JavaScript
704 lines
28 KiB
JavaScript
/*
|
|
* (c) Copyright Ascensio System SIA 2010-2015
|
|
*
|
|
* This program is a free software product. You can redistribute it and/or
|
|
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
|
* version 3 as published by the Free Software Foundation. In accordance with
|
|
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
|
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
|
* of any third-party rights.
|
|
*
|
|
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
|
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
|
*
|
|
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
|
* EU, LV-1021.
|
|
*
|
|
* The interactive user interfaces in modified source and object code versions
|
|
* of the Program must display Appropriate Legal Notices, as required under
|
|
* Section 5 of the GNU AGPL version 3.
|
|
*
|
|
* Pursuant to Section 7(b) of the License you must retain the original Product
|
|
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
|
* grant you any rights under trademark law for use of our trademarks.
|
|
*
|
|
* All the Product's GUI elements, including illustrations and icon sets, as
|
|
* well as technical writing content are licensed under the terms of the
|
|
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
|
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
|
*
|
|
*/
|
|
"use strict";
|
|
function SlideLayout() {
|
|
this.kind = LAYOUT_KIND;
|
|
this.cSld = new CSld();
|
|
this.clrMap = null;
|
|
this.hf = new HF();
|
|
this.matchingName = "";
|
|
this.preserve = false;
|
|
this.showMasterPhAnim = false;
|
|
this.type = null;
|
|
this.userDrawn = true;
|
|
this.ImageBase64 = "";
|
|
this.Width64 = 0;
|
|
this.Height64 = 0;
|
|
this.Width = 254;
|
|
this.Height = 190.5;
|
|
this.Master = null;
|
|
this.maxId = 1000;
|
|
this.recalcInfo = {
|
|
recalculateBackground: true,
|
|
recalculateSpTree: true
|
|
};
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
SlideLayout.prototype = {
|
|
getObjectType: function () {
|
|
return historyitem_type_SlideLayout;
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_SlideLayoutSetSize:
|
|
this.Width = data.oldW;
|
|
this.Height = data.oldH;
|
|
break;
|
|
case historyitem_SlideLayoutSetMaster:
|
|
this.Master = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetMatchingName:
|
|
this.matchingName = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetType:
|
|
this.type = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetBg:
|
|
this.cSld.Bg = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetCSldName:
|
|
this.cSld.name = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetShow:
|
|
this.show = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetShowPhAnim:
|
|
this.showMasterPhAnim = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetShowMasterSp:
|
|
this.showMasterSp = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetClrMapOverride:
|
|
this.clrMap = data.oldPr;
|
|
break;
|
|
case historyitem_SlideLayoutAddToSpTree:
|
|
this.cSld.spTree.splice(data.Pos, 1);
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_SlideLayoutSetSize:
|
|
this.Width = data.newW;
|
|
this.Height = data.newH;
|
|
break;
|
|
case historyitem_SlideLayoutSetMaster:
|
|
this.Master = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetMatchingName:
|
|
this.matchingName = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetType:
|
|
this.type = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetBg:
|
|
this.cSld.Bg = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetCSldName:
|
|
this.cSld.name = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetShow:
|
|
this.show = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetShowPhAnim:
|
|
this.showMasterPhAnim = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetShowMasterSp:
|
|
this.showMasterSp = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutSetClrMapOverride:
|
|
this.clrMap = data.newPr;
|
|
break;
|
|
case historyitem_SlideLayoutAddToSpTree:
|
|
this.cSld.spTree.splice(data.Pos, 0, data.Item);
|
|
break;
|
|
}
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_SlideLayoutSetSize:
|
|
writeDouble(w, data.newW);
|
|
writeDouble(w, data.newH);
|
|
break;
|
|
case historyitem_SlideLayoutSetMaster:
|
|
case historyitem_SlideLayoutSetClrMapOverride:
|
|
writeObject(w, data.newPr);
|
|
break;
|
|
case historyitem_SlideLayoutSetMatchingName:
|
|
case historyitem_SlideLayoutSetCSldName:
|
|
writeString(w, data.newPr);
|
|
break;
|
|
case historyitem_SlideLayoutSetType:
|
|
writeLong(w, data.newPr);
|
|
break;
|
|
case historyitem_SlideLayoutSetBg:
|
|
data.newPr.Write_ToBinary(w);
|
|
break;
|
|
case historyitem_SlideLayoutSetShow:
|
|
case historyitem_SlideLayoutSetShowPhAnim:
|
|
case historyitem_SlideLayoutSetShowMasterSp:
|
|
writeBool(w, data.newPr);
|
|
break;
|
|
case historyitem_SlideLayoutAddToSpTree:
|
|
writeLong(w, data.Pos);
|
|
writeObject(w, data.Item);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_SlideLayoutSetSize:
|
|
this.Width = readDouble(r);
|
|
this.Height = readDouble(r);
|
|
break;
|
|
case historyitem_SlideLayoutSetMaster:
|
|
this.Master = readObject(r);
|
|
break;
|
|
case historyitem_SlideLayoutSetMatchingName:
|
|
this.matchingName = readString(r);
|
|
break;
|
|
case historyitem_SlideLayoutSetType:
|
|
this.type = readLong(r);
|
|
break;
|
|
case historyitem_SlideLayoutSetBg:
|
|
this.cSld.Bg = new CBg();
|
|
this.cSld.Bg.Read_FromBinary(r);
|
|
var Fill;
|
|
if (this.cSld.Bg.bgPr && this.cSld.Bg.bgPr.Fill) {
|
|
Fill = this.cSld.Bg.bgPr.Fill;
|
|
}
|
|
if (typeof CollaborativeEditing !== "undefined") {
|
|
if (Fill && Fill.fill && Fill.fill.type === FILL_TYPE_BLIP && typeof Fill.fill.RasterImageId === "string" && Fill.fill.RasterImageId.length > 0) {
|
|
var full_image_src_func;
|
|
if (typeof _getFullImageSrc === "function") {
|
|
full_image_src_func = _getFullImageSrc;
|
|
}
|
|
if (full_image_src_func) {
|
|
CollaborativeEditing.Add_NewImage(full_image_src_func(Fill.fill.RasterImageId));
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case historyitem_SlideLayoutSetCSldName:
|
|
this.cSld.name = readString(r);
|
|
break;
|
|
case historyitem_SlideLayoutSetShow:
|
|
this.show = readBool(r);
|
|
break;
|
|
case historyitem_SlideLayoutSetShowPhAnim:
|
|
this.showMasterPhAnim = readBool(r);
|
|
break;
|
|
case historyitem_SlideLayoutSetShowMasterSp:
|
|
this.showMasterSp = readBool(r);
|
|
break;
|
|
case historyitem_SlideLayoutSetClrMapOverride:
|
|
this.clrMap = readObject(r);
|
|
break;
|
|
case historyitem_SlideLayoutAddToSpTree:
|
|
var Pos = readLong(r);
|
|
var Item = readObject(r);
|
|
this.cSld.spTree.splice(Pos, 0, Item);
|
|
break;
|
|
}
|
|
},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(historyitem_type_SlideLayout);
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
setMaster: function (master) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetMaster,
|
|
oldPr: this.Master,
|
|
newPr: master
|
|
});
|
|
this.Master = master;
|
|
},
|
|
setMatchingName: function (name) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetMatchingName,
|
|
oldPr: this.matchingName,
|
|
newPr: name
|
|
});
|
|
this.matchingName = name;
|
|
},
|
|
setType: function (type) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetType,
|
|
oldPr: this.type,
|
|
newPr: type
|
|
});
|
|
this.type = type;
|
|
},
|
|
changeBackground: function (bg) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetBg,
|
|
oldPr: this.cSld.Bg,
|
|
newPr: bg
|
|
});
|
|
this.cSld.Bg = bg;
|
|
},
|
|
setCSldName: function (name) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetCSldName,
|
|
oldPr: this.cSld.name,
|
|
newPr: name
|
|
});
|
|
this.cSld.name = name;
|
|
},
|
|
setShow: function (bShow) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetShow,
|
|
oldPr: this.show,
|
|
newPr: bShow
|
|
});
|
|
this.show = bShow;
|
|
},
|
|
setShowPhAnim: function (bShow) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetShowPhAnim,
|
|
oldPr: this.showMasterPhAnim,
|
|
newPr: bShow
|
|
});
|
|
this.showMasterPhAnim = bShow;
|
|
},
|
|
setShowMasterSp: function (bShow) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetShowMasterSp,
|
|
oldPr: this.showMasterSp,
|
|
newPr: bShow
|
|
});
|
|
this.showMasterSp = bShow;
|
|
},
|
|
setClMapOverride: function (clrMap) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetClrMapOverride,
|
|
oldClrMap: this.clrMap,
|
|
newClrMap: clrMap
|
|
});
|
|
this.clrMap = clrMap;
|
|
},
|
|
shapeAdd: function (pos, item) {
|
|
this.checkDrawingUniNvPr(item);
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutAddToSpTree,
|
|
Pos: pos,
|
|
Item: item
|
|
});
|
|
this.cSld.spTree.splice(pos, 0, item);
|
|
},
|
|
setSlideSize: function (w, h) {
|
|
History.Add(this, {
|
|
Type: historyitem_SlideLayoutSetSize,
|
|
oldW: this.Width,
|
|
oldH: this.Height,
|
|
newW: w,
|
|
newH: h
|
|
});
|
|
this.Width = w;
|
|
this.Height = h;
|
|
},
|
|
changeSize: Slide.prototype.changeSize,
|
|
checkDrawingUniNvPr: Slide.prototype.checkDrawingUniNvPr,
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
draw: function (graphics) {
|
|
for (var i = 0; i < this.cSld.spTree.length; ++i) {
|
|
if (!this.cSld.spTree[i].isPlaceholder()) {
|
|
this.cSld.spTree[i].draw(graphics);
|
|
}
|
|
}
|
|
},
|
|
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.getPhType();
|
|
if (! (typeof(_cur_type) == "number")) {
|
|
_cur_type = phType_body;
|
|
}
|
|
if (typeof _ph_types_array[_cur_type] == "number") {
|
|
++_ph_types_array[_cur_type];
|
|
}
|
|
}
|
|
}
|
|
var _weight = Math.pow(_ph_multiplier, _weight_body) * _ph_types_array[phType_body] + Math.pow(_ph_multiplier, _weight_chart) * _ph_types_array[phType_chart] + Math.pow(_ph_multiplier, _weight_clipArt) * _ph_types_array[phType_clipArt] + Math.pow(_ph_multiplier, _weight_ctrTitle) * _ph_types_array[phType_ctrTitle] + Math.pow(_ph_multiplier, _weight_dgm) * _ph_types_array[phType_dgm] + Math.pow(_ph_multiplier, _weight_media) * _ph_types_array[phType_media] + Math.pow(_ph_multiplier, _weight_obj) * _ph_types_array[phType_obj] + Math.pow(_ph_multiplier, _weight_pic) * _ph_types_array[phType_pic] + Math.pow(_ph_multiplier, _weight_subTitle) * _ph_types_array[phType_subTitle] + Math.pow(_ph_multiplier, _weight_tbl) * _ph_types_array[phType_tbl] + Math.pow(_ph_multiplier, _weight_title) * _ph_types_array[phType_title];
|
|
for (var _index = 0; _index < 18; ++_index) {
|
|
if (_weight >= _arr_lt_types_weight[_index] && _weight <= _arr_lt_types_weight[_index + 1]) {
|
|
if (Math.abs(_arr_lt_types_weight[_index] - _weight) <= Math.abs(_arr_lt_types_weight[_index + 1] - _weight)) {
|
|
this.calculatedType = _global_layout_summs_array["_" + _arr_lt_types_weight[_index]];
|
|
return;
|
|
} else {
|
|
this.calculatedType = _global_layout_summs_array["_" + _arr_lt_types_weight[_index + 1]];
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
this.calculatedType = _global_layout_summs_array["_" + _arr_lt_types_weight[18]];
|
|
},
|
|
recalculate: 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].recalculate();
|
|
}
|
|
}
|
|
},
|
|
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].recalculate();
|
|
}
|
|
}
|
|
},
|
|
checkSlideSize: Slide.prototype.checkSlideSize,
|
|
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();
|
|
}
|
|
}
|
|
},
|
|
getMatchingShape: Slide.prototype.getMatchingShape,
|
|
getAllImages: function (images) {
|
|
if (this.cSld.Bg && this.cSld.Bg.bgPr && this.cSld.Bg.bgPr.Fill && this.cSld.Bg.bgPr.Fill.fill instanceof CBlipFill && typeof this.cSld.Bg.bgPr.Fill.fill.RasterImageId === "string") {
|
|
images[_getFullImageSrc(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);
|
|
}
|
|
}
|
|
},
|
|
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);
|
|
}
|
|
}
|
|
},
|
|
Refresh_RecalcData: function () {},
|
|
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 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 CComment(undefined, null);
|
|
comment.setPosition(_wc.x / 25.4, _wc.y / 25.4);
|
|
_comments.push(comment);
|
|
}
|
|
} else {
|
|
var commentData = new 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 = [];
|
|
}
|
|
};
|
|
function CLayoutThumbnailDrawer() {
|
|
this.CanvasImage = null;
|
|
this.IsRetina = false;
|
|
this.WidthMM = 0;
|
|
this.HeightMM = 0;
|
|
this.WidthPx = 0;
|
|
this.HeightPx = 0;
|
|
this.DrawingDocument = null;
|
|
this.GetThumbnail = function (_layout, use_background, use_master_shapes, use_layout_shapes) {
|
|
_layout.recalculate2();
|
|
var h_px = 67;
|
|
var w_px = (this.WidthMM * h_px / this.HeightMM) >> 0;
|
|
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 CGraphics();
|
|
g.init(_ctx, w_px, h_px, this.WidthMM, this.HeightMM);
|
|
g.m_oFontManager = g_fontManager;
|
|
g.transform(1, 0, 0, 1, 0, 0);
|
|
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 CUniFill();
|
|
_back_fill.fill = new CSolidFill();
|
|
_back_fill.fill.color = new CUniColor();
|
|
_back_fill.fill.color.color = new 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 == true || _layout.showMasterSp == undefined) {
|
|
_master.draw(g);
|
|
}
|
|
}
|
|
for (var i = 0; i < _layout.cSld.spTree.length; i++) {
|
|
var _sp_elem = _layout.cSld.spTree[i];
|
|
if (!_sp_elem.isPlaceholder()) {
|
|
if (use_layout_shapes !== false) {
|
|
_sp_elem.draw(g);
|
|
}
|
|
} else {
|
|
var _ph_type = _sp_elem.getPlaceholderType();
|
|
var _usePH = true;
|
|
switch (_ph_type) {
|
|
case phType_dt:
|
|
case phType_ftr:
|
|
case phType_hdr:
|
|
case phType_sldNum:
|
|
_usePH = false;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (!_usePH) {
|
|
continue;
|
|
}
|
|
_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);
|
|
}
|
|
}
|
|
}
|
|
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 "";
|
|
};
|
|
} |