DocumentServer/OfficeWeb/sdk/Common/Charts/DrawingObjects.js
2015-04-28 17:59:00 +03:00

3561 lines
150 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";
if (!window["Asc"]) {
window["Asc"] = {};
}
function isObject(what) {
return ((what != null) && (typeof(what) == "object"));
}
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
function isNullOrEmptyString(str) {
return (str == undefined) || (str == null) || (str == "");
}
function DrawingBounds(minX, maxX, minY, maxY) {
this.minX = minX;
this.maxX = maxX;
this.minY = minY;
this.maxY = maxY;
}
function getFullImageSrc(src) {
if (0 != src.indexOf("http:") && 0 != src.indexOf("data:") && 0 != src.indexOf("https:") && 0 != src.indexOf("ftp:") && 0 != src.indexOf("file:")) {
var api = window["Asc"]["editor"];
if (api) {
if (0 == src.indexOf(g_sResourceServiceLocalUrl + api.documentId)) {
return src;
}
return g_sResourceServiceLocalUrl + api.documentId + "/media/" + src;
} else {
if (editor) {
if (0 == src.indexOf(editor.DocumentUrl)) {
return src;
}
return editor.DocumentUrl + "media/" + src;
} else {
return src;
}
}
} else {
return src;
}
}
function getCurrentTime() {
var currDate = new Date();
return currDate.getTime();
}
function roundPlus(x, n) {
if (isNaN(x) || isNaN(n)) {
return false;
}
var m = Math.pow(10, n);
return Math.round(x * m) / m;
}
function CCellObjectInfo() {
this.col = 0;
this.row = 0;
this.colOff = 0;
this.rowOff = 0;
this.colOffPx = 0;
this.rowOffPx = 0;
}
function asc_CChartStyle() {
this.style = null;
this.imageUrl = null;
}
asc_CChartStyle.prototype = {
asc_getStyle: function () {
return this.style;
},
asc_setStyle: function (style) {
this.style = style;
},
asc_getImageUrl: function () {
return this.imageUrl;
},
asc_setImageUrl: function (imageUrl) {
this.imageUrl = imageUrl;
}
};
window["Asc"].asc_CChartStyle = asc_CChartStyle;
window["Asc"]["asc_CChartStyle"] = asc_CChartStyle;
var prot = asc_CChartStyle.prototype;
prot["asc_getStyle"] = prot.asc_getStyle;
prot["asc_setStyle"] = prot.asc_setStyle;
prot["asc_getImageUrl"] = prot.asc_getImageUrl;
prot["asc_setImageUrl"] = prot.asc_setImageUrl;
function asc_CChartTranslate() {
this.title = "Diagram Title";
this.xAxis = "X Axis";
this.yAxis = "Y Axis";
this.series = "Series";
}
asc_CChartTranslate.prototype = {
asc_getTitle: function () {
return this.title;
},
asc_setTitle: function (val) {
this.title = val;
},
asc_getXAxis: function () {
return this.xAxis;
},
asc_setXAxis: function (val) {
this.xAxis = val;
},
asc_getYAxis: function () {
return this.yAxis;
},
asc_setYAxis: function (val) {
this.yAxis = val;
},
asc_getSeries: function () {
return this.series;
},
asc_setSeries: function (val) {
this.series = val;
}
};
window["Asc"].asc_CChartTranslate = asc_CChartTranslate;
window["Asc"]["asc_CChartTranslate"] = asc_CChartTranslate;
prot = asc_CChartTranslate.prototype;
prot["asc_getTitle"] = prot.asc_getTitle;
prot["asc_setTitle"] = prot.asc_setTitle;
prot["asc_getXAxis"] = prot.asc_getXAxis;
prot["asc_setXAxis"] = prot.asc_setXAxis;
prot["asc_getYAxis"] = prot.asc_getYAxis;
prot["asc_setYAxis"] = prot.asc_setYAxis;
prot["asc_getSeries"] = prot.asc_getSeries;
prot["asc_setSeries"] = prot.asc_setSeries;
function asc_CChartBinary(chart) {
this["binary"] = null;
if (chart && chart.getObjectType() === historyitem_type_ChartSpace) {
var writer = new BinaryChartWriter(new CMemory(false)),
pptx_writer;
writer.WriteCT_ChartSpace(chart);
this["binary"] = writer.memory.pos + ";" + writer.memory.GetBase64Memory();
if (chart.theme) {
pptx_writer = new CBinaryFileWriter();
pptx_writer.WriteTheme(chart.theme);
this["themeBinary"] = pptx_writer.pos + ";" + pptx_writer.GetBase64Memory();
}
if (chart.colorMapOverride) {
pptx_writer = new CBinaryFileWriter();
pptx_writer.WriteRecord1(1, chart.colorMapOverride, pptx_writer.WriteClrMap);
this["colorMapBinary"] = pptx_writer.pos + ";" + pptx_writer.GetBase64Memory();
}
if (typeof chart.DocumentUrl === "string" && chart.DocumentUrl.length > 0) {
this["DocumentUrl"] = chart.DocumentUrl;
}
}
}
asc_CChartBinary.prototype = {
asc_getBinary: function () {
return this["binary"];
},
asc_setBinary: function (val) {
this["binary"] = val;
},
asc_getThemeBinary: function () {
return this["themeBinary"];
},
asc_setThemeBinary: function (val) {
this["themeBinary"] = val;
},
asc_setColorMapBinary: function (val) {
this["colorMapBinary"] = val;
},
asc_getColorMapBinary: function () {
return this["colorMapBinary"];
},
getChartSpace: function (workSheet) {
var binary = this["binary"];
var stream = CreateBinaryReader(this["binary"], 0, this["binary"].length);
window.global_pptx_content_loader.Clear();
var oNewChartSpace = new CChartSpace();
var oBinaryChartReader = new BinaryChartReader(stream);
oBinaryChartReader.ExternalReadCT_ChartSpace(stream.size, oNewChartSpace, workSheet);
return oNewChartSpace;
},
getTheme: function () {
var binary = this["themeBinary"];
if (binary) {
var stream = CreateBinaryReader(binary, 0, binary.length);
var oBinaryReader = new BinaryPPTYLoader();
oBinaryReader.stream = new FileStream();
oBinaryReader.stream.obj = stream.obj;
oBinaryReader.stream.data = stream.data;
oBinaryReader.stream.size = stream.size;
oBinaryReader.stream.pos = stream.pos;
oBinaryReader.stream.cur = stream.cur;
return oBinaryReader.ReadTheme();
}
return null;
},
getColorMap: function () {
var binary = this["colorMapBinary"];
if (binary) {
var stream = CreateBinaryReader(binary, 0, binary.length);
var oBinaryReader = new BinaryPPTYLoader();
oBinaryReader.stream = new FileStream();
oBinaryReader.stream.obj = stream.obj;
oBinaryReader.stream.data = stream.data;
oBinaryReader.stream.size = stream.size;
oBinaryReader.stream.pos = stream.pos;
oBinaryReader.stream.cur = stream.cur;
var _rec = oBinaryReader.stream.GetUChar();
var ret = new ClrMap();
oBinaryReader.ReadClrMap(ret);
return ret;
}
return null;
}
};
window["Asc"].asc_CChartBinary = asc_CChartBinary;
window["Asc"]["asc_CChartBinary"] = asc_CChartBinary;
prot = asc_CChartBinary.prototype;
prot["asc_getBinary"] = prot.asc_getBinary;
prot["asc_setBinary"] = prot.asc_setBinary;
prot["asc_getThemeBinary"] = prot.asc_getThemeBinary;
prot["asc_setThemeBinary"] = prot.asc_setThemeBinary;
prot["asc_setColorMapBinary"] = prot.asc_setColorMapBinary;
prot["asc_getColorMapBinary"] = prot.asc_getColorMapBinary;
function asc_CChartSeria() {
this.Val = {
Formula: "",
NumCache: []
};
this.xVal = {
Formula: "",
NumCache: []
};
this.Cat = {
Formula: "",
NumCache: []
};
this.TxCache = {
Formula: "",
Tx: ""
};
this.Marker = {
Size: 0,
Symbol: ""
};
this.FormatCode = "";
this.isHidden = false;
}
asc_CChartSeria.prototype = {
asc_getValFormula: function () {
return this.Val.Formula;
},
asc_setValFormula: function (formula) {
this.Val.Formula = formula;
},
asc_getxValFormula: function () {
return this.xVal.Formula;
},
asc_setxValFormula: function (formula) {
this.xVal.Formula = formula;
},
asc_getCatFormula: function () {
return this.Cat.Formula;
},
asc_setCatFormula: function (formula) {
this.Cat.Formula = formula;
},
asc_getTitle: function () {
return this.TxCache.Tx;
},
asc_setTitle: function (title) {
this.TxCache.Tx = title;
},
asc_getTitleFormula: function () {
return this.TxCache.Formula;
},
asc_setTitleFormula: function (val) {
this.TxCache.Formula = val;
},
asc_getMarkerSize: function () {
return this.Marker.Size;
},
asc_setMarkerSize: function (size) {
this.Marker.Size = size;
},
asc_getMarkerSymbol: function () {
return this.Marker.Symbol;
},
asc_setMarkerSymbol: function (symbol) {
this.Marker.Symbol = symbol;
},
asc_getFormatCode: function () {
return this.FormatCode;
},
asc_setFormatCode: function (format) {
this.FormatCode = format;
}
};
window["Asc"].asc_CChartSeria = asc_CChartSeria;
window["Asc"]["asc_CChartSeria"] = asc_CChartSeria;
prot = asc_CChartSeria.prototype;
prot["asc_getValFormula"] = prot.asc_getValFormula;
prot["asc_setValFormula"] = prot.asc_setValFormula;
prot["asc_getxValFormula"] = prot.asc_getxValFormula;
prot["asc_setxValFormula"] = prot.asc_setxValFormula;
prot["asc_getCatFormula"] = prot.asc_getCatFormula;
prot["asc_setCatFormula"] = prot.asc_setCatFormula;
prot["asc_getTitle"] = prot.asc_getTitle;
prot["asc_setTitle"] = prot.asc_setTitle;
prot["asc_getTitleFormula"] = prot.asc_getTitleFormula;
prot["asc_setTitleFormula"] = prot.asc_setTitleFormula;
prot["asc_getMarkerSize"] = prot.asc_getMarkerSize;
prot["asc_setMarkerSize"] = prot.asc_setMarkerSize;
prot["asc_getMarkerSymbol"] = prot.asc_getMarkerSymbol;
prot["asc_setMarkerSymbol"] = prot.asc_setMarkerSymbol;
prot["asc_getFormatCode"] = prot.asc_getFormatCode;
prot["asc_setFormatCode"] = prot.asc_setFormatCode;
function asc_CSelectedObject(type, val) {
this.Type = (undefined != type) ? type : null;
this.Value = (undefined != val) ? val : null;
}
asc_CSelectedObject.prototype = {
asc_getObjectType: function () {
return this.Type;
},
asc_getObjectValue: function () {
return this.Value;
}
};
window["Asc"].asc_CSelectedObject = asc_CSelectedObject;
window["Asc"]["asc_CSelectedObject"] = asc_CSelectedObject;
prot = asc_CSelectedObject.prototype;
prot["asc_getObjectType"] = prot.asc_getObjectType;
prot["asc_getObjectValue"] = prot.asc_getObjectValue;
function asc_CImgProperty(obj) {
if (obj) {
this.CanBeFlow = (undefined != obj.CanBeFlow) ? obj.CanBeFlow : true;
this.Width = (undefined != obj.Width) ? obj.Width : undefined;
this.Height = (undefined != obj.Height) ? obj.Height : undefined;
this.WrappingStyle = (undefined != obj.WrappingStyle) ? obj.WrappingStyle : undefined;
this.Paddings = (undefined != obj.Paddings) ? new CPaddings(obj.Paddings) : undefined;
this.Position = (undefined != obj.Position) ? new CPosition(obj.Position) : undefined;
this.AllowOverlap = (undefined != obj.AllowOverlap) ? obj.AllowOverlap : undefined;
this.PositionH = (undefined != obj.PositionH) ? new CImagePositionH(obj.PositionH) : undefined;
this.PositionV = (undefined != obj.PositionV) ? new CImagePositionV(obj.PositionV) : undefined;
this.Internal_Position = (undefined != obj.Internal_Position) ? obj.Internal_Position : null;
this.ImageUrl = (undefined != obj.ImageUrl) ? obj.ImageUrl : null;
this.Locked = (undefined != obj.Locked) ? obj.Locked : false;
this.ChartProperties = (undefined != obj.ChartProperties) ? obj.ChartProperties : null;
this.ShapeProperties = (undefined != obj.ShapeProperties) ? (obj.ShapeProperties) : null;
this.ChangeLevel = (undefined != obj.ChangeLevel) ? obj.ChangeLevel : null;
this.Group = (obj.Group != undefined) ? obj.Group : null;
this.fromGroup = obj.fromGroup != undefined ? obj.fromGroup : null;
this.severalCharts = obj.severalCharts != undefined ? obj.severalCharts : false;
this.severalChartTypes = obj.severalChartTypes != undefined ? obj.severalChartTypes : undefined;
this.severalChartStyles = obj.severalChartStyles != undefined ? obj.severalChartStyles : undefined;
this.verticalTextAlign = obj.verticalTextAlign != undefined ? obj.verticalTextAlign : undefined;
} else {
this.CanBeFlow = true;
this.Width = undefined;
this.Height = undefined;
this.WrappingStyle = undefined;
this.Paddings = undefined;
this.Position = undefined;
this.PositionH = undefined;
this.PositionV = undefined;
this.Internal_Position = null;
this.ImageUrl = null;
this.Locked = false;
this.ChartProperties = null;
this.ShapeProperties = null;
this.ImageProperties = null;
this.ChangeLevel = null;
this.Group = null;
this.fromGroup = null;
this.severalCharts = false;
this.severalChartTypes = undefined;
this.severalChartStyles = undefined;
this.verticalTextAlign = undefined;
}
}
asc_CImgProperty.prototype = {
asc_getChangeLevel: function () {
return this.ChangeLevel;
},
asc_putChangeLevel: function (v) {
this.ChangeLevel = v;
},
asc_getCanBeFlow: function () {
return this.CanBeFlow;
},
asc_getWidth: function () {
return this.Width;
},
asc_putWidth: function (v) {
this.Width = v;
},
asc_getHeight: function () {
return this.Height;
},
asc_putHeight: function (v) {
this.Height = v;
},
asc_getWrappingStyle: function () {
return this.WrappingStyle;
},
asc_putWrappingStyle: function (v) {
this.WrappingStyle = v;
},
asc_getPaddings: function () {
return this.Paddings;
},
asc_putPaddings: function (v) {
this.Paddings = v;
},
asc_getAllowOverlap: function () {
return this.AllowOverlap;
},
asc_putAllowOverlap: function (v) {
this.AllowOverlap = v;
},
asc_getPosition: function () {
return this.Position;
},
asc_putPosition: function (v) {
this.Position = v;
},
asc_getPositionH: function () {
return this.PositionH;
},
asc_putPositionH: function (v) {
this.PositionH = v;
},
asc_getPositionV: function () {
return this.PositionV;
},
asc_putPositionV: function (v) {
this.PositionV = v;
},
asc_getValue_X: function (RelativeFrom) {
if (null != this.Internal_Position) {
return this.Internal_Position.Calculate_X_Value(RelativeFrom);
}
return 0;
},
asc_getValue_Y: function (RelativeFrom) {
if (null != this.Internal_Position) {
return this.Internal_Position.Calculate_Y_Value(RelativeFrom);
}
return 0;
},
asc_getImageUrl: function () {
return this.ImageUrl;
},
asc_putImageUrl: function (v) {
this.ImageUrl = v;
},
asc_getGroup: function () {
return this.Group;
},
asc_putGroup: function (v) {
this.Group = v;
},
asc_getFromGroup: function () {
return this.fromGroup;
},
asc_putFromGroup: function (v) {
this.fromGroup = v;
},
asc_getisChartProps: function () {
return this.isChartProps;
},
asc_putisChartPross: function (v) {
this.isChartProps = v;
},
asc_getSeveralCharts: function () {
return this.severalCharts;
},
asc_putSeveralCharts: function (v) {
this.severalCharts = v;
},
asc_getSeveralChartTypes: function () {
return this.severalChartTypes;
},
asc_putSeveralChartTypes: function (v) {
this.severalChartTypes = v;
},
asc_getSeveralChartStyles: function () {
return this.severalChartStyles;
},
asc_putSeveralChartStyles: function (v) {
this.severalChartStyles = v;
},
asc_getVerticalTextAlign: function () {
return this.verticalTextAlign;
},
asc_putVerticalTextAlign: function (v) {
this.verticalTextAlign = v;
},
asc_getLocked: function () {
return this.Locked;
},
asc_getChartProperties: function () {
return this.ChartProperties;
},
asc_putChartProperties: function (v) {
this.ChartProperties = v;
},
asc_getShapeProperties: function () {
return this.ShapeProperties;
},
asc_putShapeProperties: function (v) {
this.ShapeProperties = v;
}
};
window["Asc"].asc_CImgProperty = asc_CImgProperty;
window["Asc"]["asc_CImgProperty"] = asc_CImgProperty;
prot = asc_CImgProperty.prototype;
prot["asc_getChangeLevel"] = prot.asc_getChangeLevel;
prot["asc_putChangeLevel"] = prot.asc_putChangeLevel;
prot["asc_getCanBeFlow"] = prot.asc_getCanBeFlow;
prot["asc_getWidth"] = prot.asc_getWidth;
prot["asc_putWidth"] = prot.asc_putWidth;
prot["asc_getHeight"] = prot.asc_getHeight;
prot["asc_putHeight"] = prot.asc_putHeight;
prot["asc_getWrappingStyle"] = prot.asc_getWrappingStyle;
prot["asc_putWrappingStyle"] = prot.asc_putWrappingStyle;
prot["asc_getPaddings"] = prot.asc_getPaddings;
prot["asc_putPaddings"] = prot.asc_putPaddings;
prot["asc_getAllowOverlap"] = prot.asc_getAllowOverlap;
prot["asc_putAllowOverlap"] = prot.asc_putAllowOverlap;
prot["asc_getPosition"] = prot.asc_getPosition;
prot["asc_putPosition"] = prot.asc_putPosition;
prot["asc_getPositionH"] = prot.asc_getPositionH;
prot["asc_putPositionH"] = prot.asc_putPositionH;
prot["asc_getPositionV"] = prot.asc_getPositionV;
prot["asc_putPositionV"] = prot.asc_putPositionV;
prot["asc_getValue_X"] = prot.asc_getValue_X;
prot["asc_getValue_Y"] = prot.asc_getValue_Y;
prot["asc_getImageUrl"] = prot.asc_getImageUrl;
prot["asc_putImageUrl"] = prot.asc_putImageUrl;
prot["asc_getGroup"] = prot.asc_getGroup;
prot["asc_putGroup"] = prot.asc_putGroup;
prot["asc_getFromGroup"] = prot.asc_getFromGroup;
prot["asc_putFromGroup"] = prot.asc_putFromGroup;
prot["asc_getisChartProps"] = prot.asc_getisChartProps;
prot["asc_putisChartPross"] = prot.asc_putisChartPross;
prot["asc_getSeveralCharts"] = prot.asc_getSeveralCharts;
prot["asc_putSeveralCharts"] = prot.asc_putSeveralCharts;
prot["asc_getSeveralChartTypes"] = prot.asc_getSeveralChartTypes;
prot["asc_putSeveralChartTypes"] = prot.asc_putSeveralChartTypes;
prot["asc_getSeveralChartStyles"] = prot.asc_getSeveralChartStyles;
prot["asc_putSeveralChartStyles"] = prot.asc_putSeveralChartStyles;
prot["asc_getVerticalTextAlign"] = prot.asc_getVerticalTextAlign;
prot["asc_putVerticalTextAlign"] = prot.asc_putVerticalTextAlign;
prot["asc_getLocked"] = prot.asc_getLocked;
prot["asc_getChartProperties"] = prot.asc_getChartProperties;
prot["asc_putChartProperties"] = prot.asc_putChartProperties;
prot["asc_getShapeProperties"] = prot.asc_getShapeProperties;
prot["asc_putShapeProperties"] = prot.asc_putShapeProperties;
function asc_CShapeProperty() {
this.type = null;
this.fill = null;
this.stroke = null;
this.paddings = null;
this.canFill = true;
this.canChangeArrows = false;
this.bFromChart = false;
}
asc_CShapeProperty.prototype = {
asc_getType: function () {
return this.type;
},
asc_putType: function (v) {
this.type = v;
},
asc_getFill: function () {
return this.fill;
},
asc_putFill: function (v) {
this.fill = v;
},
asc_getStroke: function () {
return this.stroke;
},
asc_putStroke: function (v) {
this.stroke = v;
},
asc_getPaddings: function () {
return this.paddings;
},
asc_putPaddings: function (v) {
this.paddings = v;
},
asc_getCanFill: function () {
return this.canFill;
},
asc_putCanFill: function (v) {
this.canFill = v;
},
asc_getCanChangeArrows: function () {
return this.canChangeArrows;
},
asc_setCanChangeArrows: function (v) {
this.canChangeArrows = v;
},
asc_getFromChart: function () {
return this.bFromChart;
},
asc_setFromChart: function (v) {
this.bFromChart = v;
}
};
window["Asc"].asc_CShapeProperty = asc_CShapeProperty;
window["Asc"]["asc_CShapeProperty"] = asc_CShapeProperty;
prot = asc_CShapeProperty.prototype;
prot["asc_getType"] = prot.asc_getType;
prot["asc_putType"] = prot.asc_putType;
prot["asc_getFill"] = prot.asc_getFill;
prot["asc_putFill"] = prot.asc_putFill;
prot["asc_getStroke"] = prot.asc_getStroke;
prot["asc_putStroke"] = prot.asc_putStroke;
prot["asc_getPaddings"] = prot.asc_getPaddings;
prot["asc_putPaddings"] = prot.asc_putPaddings;
prot["asc_getCanFill"] = prot.asc_getCanFill;
prot["asc_putCanFill"] = prot.asc_putCanFill;
prot["asc_getCanChangeArrows"] = prot.asc_getCanChangeArrows;
prot["asc_setCanChangeArrows"] = prot.asc_setCanChangeArrows;
prot["asc_getFromChart"] = prot.asc_getFromChart;
prot["asc_setFromChart"] = prot.asc_setFromChart;
function asc_CPaddings(obj) {
if (obj) {
this.Left = (undefined == obj.Left) ? null : obj.Left;
this.Top = (undefined == obj.Top) ? null : obj.Top;
this.Bottom = (undefined == obj.Bottom) ? null : obj.Bottom;
this.Right = (undefined == obj.Right) ? null : obj.Right;
} else {
this.Left = null;
this.Top = null;
this.Bottom = null;
this.Right = null;
}
}
asc_CPaddings.prototype = {
asc_getLeft: function () {
return this.Left;
},
asc_putLeft: function (v) {
this.Left = v;
},
asc_getTop: function () {
return this.Top;
},
asc_putTop: function (v) {
this.Top = v;
},
asc_getBottom: function () {
return this.Bottom;
},
asc_putBottom: function (v) {
this.Bottom = v;
},
asc_getRight: function () {
return this.Right;
},
asc_putRight: function (v) {
this.Right = v;
}
};
window["Asc"].asc_CPaddings = asc_CPaddings;
window["Asc"]["asc_CPaddings"] = asc_CPaddings;
prot = asc_CPaddings.prototype;
prot["asc_getLeft"] = prot.asc_getLeft;
prot["asc_putLeft"] = prot.asc_putLeft;
prot["asc_getTop"] = prot.asc_getTop;
prot["asc_putTop"] = prot.asc_putTop;
prot["asc_getBottom"] = prot.asc_getBottom;
prot["asc_putBottom"] = prot.asc_putBottom;
prot["asc_getRight"] = prot.asc_getRight;
prot["asc_putRight"] = prot.asc_putRight;
function asc_CImageSize(width, height, isCorrect) {
this.Width = (undefined == width) ? 0 : width;
this.Height = (undefined == height) ? 0 : height;
this.IsCorrect = isCorrect;
}
asc_CImageSize.prototype = {
asc_getImageWidth: function () {
return this.Width;
},
asc_getImageHeight: function () {
return this.Height;
},
asc_getIsCorrect: function () {
return this.IsCorrect;
}
};
window["Asc"].asc_CImageSize = asc_CImageSize;
window["Asc"]["asc_CImageSize"] = asc_CImageSize;
prot = asc_CImageSize.prototype;
prot["asc_getImageWidth"] = prot.asc_getImageWidth;
prot["asc_getImageHeight"] = prot.asc_getImageHeight;
prot["asc_getIsCorrect"] = prot.asc_getIsCorrect;
function asc_CTexture() {
this.Id = 0;
this.Image = "";
}
asc_CTexture.prototype = {
asc_getId: function () {
return this.Id;
},
asc_getImage: function () {
return this.Image;
}
};
window["Asc"].asc_CTexture = asc_CTexture;
window["Asc"]["asc_CTexture"] = asc_CTexture;
prot = asc_CTexture.prototype;
prot["asc_getId"] = prot.asc_getId;
prot["asc_getImage"] = prot.asc_getImage;
function asc_CParagraphProperty(obj) {
if (obj) {
this.ContextualSpacing = (undefined != obj.ContextualSpacing) ? obj.ContextualSpacing : null;
this.Ind = (undefined != obj.Ind && null != obj.Ind) ? new asc_CParagraphInd(obj.Ind) : null;
this.KeepLines = (undefined != obj.KeepLines) ? obj.KeepLines : null;
this.KeepNext = (undefined != obj.KeepNext) ? obj.KeepNext : undefined;
this.WidowControl = (undefined != obj.WidowControl ? obj.WidowControl : undefined);
this.PageBreakBefore = (undefined != obj.PageBreakBefore) ? obj.PageBreakBefore : null;
this.Spacing = (undefined != obj.Spacing && null != obj.Spacing) ? new asc_CParagraphSpacing(obj.Spacing) : null;
this.Brd = (undefined != obj.Brd && null != obj.Brd) ? new asc_CParagraphBorders(obj.Brd) : null;
this.Shd = (undefined != obj.Shd && null != obj.Shd) ? new asc_CParagraphShd(obj.Shd) : null;
this.Tabs = (undefined != obj.Tabs) ? new asc_CParagraphTabs(obj.Tabs) : undefined;
this.DefaultTab = Default_Tab_Stop;
this.Locked = (undefined != obj.Locked && null != obj.Locked) ? obj.Locked : false;
this.CanAddTable = (undefined != obj.CanAddTable) ? obj.CanAddTable : true;
this.Subscript = (undefined != obj.Subscript) ? obj.Subscript : undefined;
this.Superscript = (undefined != obj.Superscript) ? obj.Superscript : undefined;
this.SmallCaps = (undefined != obj.SmallCaps) ? obj.SmallCaps : undefined;
this.AllCaps = (undefined != obj.AllCaps) ? obj.AllCaps : undefined;
this.Strikeout = (undefined != obj.Strikeout) ? obj.Strikeout : undefined;
this.DStrikeout = (undefined != obj.DStrikeout) ? obj.DStrikeout : undefined;
this.TextSpacing = (undefined != obj.TextSpacing) ? obj.TextSpacing : undefined;
this.Position = (undefined != obj.Position) ? obj.Position : undefined;
} else {
this.ContextualSpacing = undefined;
this.Ind = new asc_CParagraphInd();
this.KeepLines = undefined;
this.KeepNext = undefined;
this.WidowControl = undefined;
this.PageBreakBefore = undefined;
this.Spacing = new asc_CParagraphSpacing();
this.Brd = undefined;
this.Shd = undefined;
this.Locked = false;
this.CanAddTable = true;
this.Tabs = undefined;
this.Subscript = undefined;
this.Superscript = undefined;
this.SmallCaps = undefined;
this.AllCaps = undefined;
this.Strikeout = undefined;
this.DStrikeout = undefined;
this.TextSpacing = undefined;
this.Position = undefined;
}
}
asc_CParagraphProperty.prototype = {
asc_getContextualSpacing: function () {
return this.ContextualSpacing;
},
asc_putContextualSpacing: function (v) {
this.ContextualSpacing = v;
},
asc_getInd: function () {
return this.Ind;
},
asc_putInd: function (v) {
this.Ind = v;
},
asc_getKeepLines: function () {
return this.KeepLines;
},
asc_putKeepLines: function (v) {
this.KeepLines = v;
},
asc_getKeepNext: function () {
return this.KeepNext;
},
asc_putKeepNext: function (v) {
this.KeepNext = v;
},
asc_getPageBreakBefore: function () {
return this.PageBreakBefore;
},
asc_putPageBreakBefore: function (v) {
this.PageBreakBefore = v;
},
asc_getWidowControl: function () {
return this.WidowControl;
},
asc_putWidowControl: function (v) {
this.WidowControl = v;
},
asc_getSpacing: function () {
return this.Spacing;
},
asc_putSpacing: function (v) {
this.Spacing = v;
},
asc_getBorders: function () {
return this.Brd;
},
asc_putBorders: function (v) {
this.Brd = v;
},
asc_getShade: function () {
return this.Shd;
},
asc_putShade: function (v) {
this.Shd = v;
},
asc_getLocked: function () {
return this.Locked;
},
asc_getCanAddTable: function () {
return this.CanAddTable;
},
asc_getSubscript: function () {
return this.Subscript;
},
asc_putSubscript: function (v) {
this.Subscript = v;
},
asc_getSuperscript: function () {
return this.Superscript;
},
asc_putSuperscript: function (v) {
this.Superscript = v;
},
asc_getSmallCaps: function () {
return this.SmallCaps;
},
asc_putSmallCaps: function (v) {
this.SmallCaps = v;
},
asc_getAllCaps: function () {
return this.AllCaps;
},
asc_putAllCaps: function (v) {
this.AllCaps = v;
},
asc_getStrikeout: function () {
return this.Strikeout;
},
asc_putStrikeout: function (v) {
this.Strikeout = v;
},
asc_getDStrikeout: function () {
return this.DStrikeout;
},
asc_putDStrikeout: function (v) {
this.DStrikeout = v;
},
asc_getTextSpacing: function () {
return this.TextSpacing;
},
asc_putTextSpacing: function (v) {
this.TextSpacing = v;
},
asc_getPosition: function () {
return this.Position;
},
asc_putPosition: function (v) {
this.Position = v;
},
asc_getTabs: function () {
return this.Tabs;
},
asc_putTabs: function (v) {
this.Tabs = v;
},
asc_getDefaultTab: function () {
return this.DefaultTab;
},
asc_putDefaultTab: function (v) {
this.DefaultTab = v;
}
};
window["Asc"].asc_CParagraphProperty = asc_CParagraphProperty;
window["Asc"]["asc_CParagraphProperty"] = asc_CParagraphProperty;
prot = asc_CParagraphProperty.prototype;
prot["asc_getContextualSpacing"] = prot.asc_getContextualSpacing;
prot["asc_putContextualSpacing"] = prot.asc_putContextualSpacing;
prot["asc_getInd"] = prot.asc_getInd;
prot["asc_putInd"] = prot.asc_putInd;
prot["asc_getKeepLines"] = prot.asc_getKeepLines;
prot["asc_putKeepLines"] = prot.asc_putKeepLines;
prot["asc_getKeepNext"] = prot.asc_getKeepNext;
prot["asc_putKeepNext"] = prot.asc_putKeepNext;
prot["asc_getPageBreakBefore"] = prot.asc_getPageBreakBefore;
prot["asc_putPageBreakBefore"] = prot.asc_putPageBreakBefore;
prot["asc_getWidowControl"] = prot.asc_getWidowControl;
prot["asc_putWidowControl"] = prot.asc_putWidowControl;
prot["asc_getSpacing"] = prot.asc_getSpacing;
prot["asc_putSpacing"] = prot.asc_putSpacing;
prot["asc_getBorders"] = prot.asc_getBorders;
prot["asc_putBorders"] = prot.asc_putBorders;
prot["asc_getShade"] = prot.asc_getShade;
prot["asc_putShade"] = prot.asc_putShade;
prot["asc_getLocked"] = prot.asc_getLocked;
prot["asc_getCanAddTable"] = prot.asc_getCanAddTable;
prot["asc_getSubscript"] = prot.asc_getSubscript;
prot["asc_putSubscript"] = prot.asc_putSubscript;
prot["asc_getSuperscript"] = prot.asc_getSuperscript;
prot["asc_putSuperscript"] = prot.asc_putSuperscript;
prot["asc_getSmallCaps"] = prot.asc_getSmallCaps;
prot["asc_putSmallCaps"] = prot.asc_putSmallCaps;
prot["asc_getAllCaps"] = prot.asc_getAllCaps;
prot["asc_putAllCaps"] = prot.asc_putAllCaps;
prot["asc_getStrikeout"] = prot.asc_getStrikeout;
prot["asc_putStrikeout"] = prot.asc_putStrikeout;
prot["asc_getDStrikeout"] = prot.asc_getDStrikeout;
prot["asc_putDStrikeout"] = prot.asc_putDStrikeout;
prot["asc_getTextSpacing"] = prot.asc_getTextSpacing;
prot["asc_putTextSpacing"] = prot.asc_putTextSpacing;
prot["asc_getPosition"] = prot.asc_getPosition;
prot["asc_putPosition"] = prot.asc_putPosition;
prot["asc_getTabs"] = prot.asc_getTabs;
prot["asc_putTabs"] = prot.asc_putTabs;
prot["asc_getDefaultTab"] = prot.asc_getDefaultTab;
prot["asc_putDefaultTab"] = prot.asc_putDefaultTab;
function asc_CParagraphInd(obj) {
if (obj) {
this.Left = (undefined != obj.Left) ? obj.Left : null;
this.Right = (undefined != obj.Right) ? obj.Right : null;
this.FirstLine = (undefined != obj.FirstLine) ? obj.FirstLine : null;
} else {
this.Left = undefined;
this.Right = undefined;
this.FirstLine = undefined;
}
}
asc_CParagraphInd.prototype = {
asc_getLeft: function () {
return this.Left;
},
asc_putLeft: function (v) {
this.Left = v;
},
asc_getRight: function () {
return this.Right;
},
asc_putRight: function (v) {
this.Right = v;
},
asc_getFirstLine: function () {
return this.FirstLine;
},
asc_putFirstLine: function (v) {
this.FirstLine = v;
}
};
window["Asc"].asc_CParagraphInd = asc_CParagraphInd;
window["Asc"]["asc_CParagraphInd"] = asc_CParagraphInd;
prot = asc_CParagraphInd.prototype;
prot["asc_getLeft"] = prot.asc_getLeft;
prot["asc_putLeft"] = prot.asc_putLeft;
prot["asc_getRight"] = prot.asc_getRight;
prot["asc_putRight"] = prot.asc_putRight;
prot["asc_getFirstLine"] = prot.asc_getFirstLine;
prot["asc_putFirstLine"] = prot.asc_putFirstLine;
function asc_CParagraphSpacing(obj) {
if (obj) {
this.Line = (undefined != obj.Line) ? obj.Line : null;
this.LineRule = (undefined != obj.LineRule) ? obj.LineRule : null;
this.Before = (undefined != obj.Before) ? obj.Before : null;
this.After = (undefined != obj.After) ? obj.After : null;
} else {
this.Line = undefined;
this.LineRule = undefined;
this.Before = undefined;
this.After = undefined;
}
}
asc_CParagraphSpacing.prototype = {
asc_getLine: function () {
return this.Line;
},
asc_getLineRule: function () {
return this.LineRule;
},
asc_getBefore: function () {
return this.Before;
},
asc_getAfter: function () {
return this.After;
}
};
window["Asc"].asc_CParagraphSpacing = asc_CParagraphSpacing;
window["Asc"]["asc_CParagraphSpacing"] = asc_CParagraphSpacing;
prot = asc_CParagraphSpacing.prototype;
prot["asc_getLine"] = prot.asc_getLine;
prot["asc_getLineRule"] = prot.asc_getLineRule;
prot["asc_getBefore"] = prot.asc_getBefore;
prot["asc_getAfter"] = prot.asc_getAfter;
function asc_CParagraphShd(obj) {
if (obj) {
this.Value = (undefined != obj.Value) ? obj.Value : null;
if (obj.Unifill && obj.Unifill.fill && obj.Unifill.fill.type === FILL_TYPE_SOLID && obj.Unifill.fill.color) {
this.Color = CreateAscColor(obj.Unifill.fill.color);
} else {
this.Color = (undefined != obj.Color && null != obj.Color) ? CreateAscColorCustom(obj.Color.r, obj.Color.g, obj.Color.b) : null;
}
} else {
this.Value = shd_Nil;
this.Color = CreateAscColorCustom(255, 255, 255);
}
}
asc_CParagraphShd.prototype = {
asc_getValue: function () {
return this.Value;
},
asc_putValue: function (v) {
this.Value = v;
},
asc_getColor: function () {
return this.Color;
},
asc_putColor: function (v) {
this.Color = (v) ? v : null;
}
};
window["Asc"].asc_CParagraphShd = asc_CParagraphShd;
window["Asc"]["asc_CParagraphShd"] = asc_CParagraphShd;
prot = asc_CParagraphShd.prototype;
prot["asc_getValue"] = prot.asc_getValue;
prot["asc_putValue"] = prot.asc_putValue;
prot["asc_getColor"] = prot.asc_getColor;
prot["asc_putColor"] = prot.asc_putColor;
function asc_CParagraphTab(Pos, Value) {
this.Pos = Pos;
this.Value = Value;
}
asc_CParagraphTab.prototype = {
asc_getValue: function () {
return this.Value;
},
asc_putValue: function (v) {
this.Value = v;
},
asc_getPos: function () {
return this.Pos;
},
asc_putPos: function (v) {
this.Pos = v;
}
};
window["Asc"].asc_CParagraphTab = asc_CParagraphTab;
window["Asc"]["asc_CParagraphTab"] = asc_CParagraphTab;
prot = asc_CParagraphTab.prototype;
prot["asc_getValue"] = prot.asc_getValue;
prot["asc_putValue"] = prot.asc_putValue;
prot["asc_getPos"] = prot.asc_getPos;
prot["asc_putPos"] = prot.asc_putPos;
function asc_CParagraphTabs(obj) {
this.Tabs = [];
if (undefined != obj) {
var Count = obj.Tabs.length;
for (var Index = 0; Index < Count; Index++) {
this.Tabs.push(new asc_CParagraphTab(obj.Tabs[Index].Pos, obj.Tabs[Index].Value));
}
}
}
asc_CParagraphTabs.prototype = {
asc_getCount: function () {
return this.Tabs.length;
},
asc_getTab: function (Index) {
return this.Tabs[Index];
},
asc_addTab: function (Tab) {
this.Tabs.push(Tab);
},
asc_clear: function () {
this.Tabs.length = 0;
},
add_Tab: function (Tab) {
this.Tabs.push(Tab);
}
};
window["Asc"].asc_CParagraphTabs = asc_CParagraphTabs;
window["Asc"]["asc_CParagraphTabs"] = asc_CParagraphTabs;
prot = asc_CParagraphTabs.prototype;
prot["asc_getCount"] = prot.asc_getCount;
prot["asc_getTab"] = prot.asc_getTab;
prot["asc_addTab"] = prot.asc_addTab;
prot["asc_clear"] = prot.asc_clear;
prot["add_Tab"] = prot.add_Tab;
function asc_CParagraphBorders(obj) {
if (obj) {
this.Left = (undefined != obj.Left && null != obj.Left) ? new asc_CTextBorder(obj.Left) : null;
this.Top = (undefined != obj.Top && null != obj.Top) ? new asc_CTextBorder(obj.Top) : null;
this.Right = (undefined != obj.Right && null != obj.Right) ? new asc_CTextBorder(obj.Right) : null;
this.Bottom = (undefined != obj.Bottom && null != obj.Bottom) ? new asc_CTextBorder(obj.Bottom) : null;
this.Between = (undefined != obj.Between && null != obj.Between) ? new asc_CTextBorder(obj.Between) : null;
} else {
this.Left = null;
this.Top = null;
this.Right = null;
this.Bottom = null;
this.Between = null;
}
}
asc_CParagraphBorders.prototype = {
asc_getLeft: function () {
return this.Left;
},
asc_putLeft: function (v) {
this.Left = (v) ? new asc_CTextBorder(v) : null;
},
asc_getTop: function () {
return this.Top;
},
asc_putTop: function (v) {
this.Top = (v) ? new asc_CTextBorder(v) : null;
},
asc_getRight: function () {
return this.Right;
},
asc_putRight: function (v) {
this.Right = (v) ? new asc_CTextBorder(v) : null;
},
asc_getBottom: function () {
return this.Bottom;
},
asc_putBottom: function (v) {
this.Bottom = (v) ? new asc_CTextBorder(v) : null;
},
asc_getBetween: function () {
return this.Between;
},
asc_putBetween: function (v) {
this.Between = (v) ? new asc_CTextBorder(v) : null;
}
};
window["Asc"].asc_CParagraphBorders = asc_CParagraphBorders;
window["Asc"]["asc_CParagraphBorders"] = asc_CParagraphBorders;
prot = asc_CParagraphBorders.prototype;
prot["asc_getLeft"] = prot.asc_getLeft;
prot["asc_putLeft"] = prot.asc_putLeft;
prot["asc_getTop"] = prot.asc_getTop;
prot["asc_putTop"] = prot.asc_putTop;
prot["asc_getRight"] = prot.asc_getRight;
prot["asc_putRight"] = prot.asc_putRight;
prot["asc_getBottom"] = prot.asc_getBottom;
prot["asc_putBottom"] = prot.asc_putBottom;
prot["asc_getBetween"] = prot.asc_getBetween;
prot["asc_putBetween"] = prot.asc_putBetween;
function asc_CTextBorder(obj) {
if (obj) {
this.Color = (undefined != obj.Color && null != obj.Color) ? CreateAscColorCustomEx(obj.Color.r, obj.Color.g, obj.Color.b) : null;
this.Size = (undefined != obj.Size) ? obj.Size : null;
this.Value = (undefined != obj.Value) ? obj.Value : null;
this.Space = (undefined != obj.Space) ? obj.Space : null;
} else {
this.Color = CreateAscColorCustomEx(0, 0, 0);
this.Size = 0.5 * g_dKoef_pt_to_mm;
this.Value = border_Single;
this.Space = 0;
}
}
asc_CTextBorder.prototype = {
asc_getColor: function () {
return this.Color;
},
asc_putColor: function (v) {
this.Color = v;
},
asc_getSize: function () {
return this.Size;
},
asc_putSize: function (v) {
this.Size = v;
},
asc_getValue: function () {
return this.Value;
},
asc_putValue: function (v) {
this.Value = v;
},
asc_getSpace: function () {
return this.Space;
},
asc_putSpace: function (v) {
this.Space = v;
},
asc_getForSelectedCells: function () {
return this.ForSelectedCells;
},
asc_putForSelectedCells: function (v) {
this.ForSelectedCells = v;
}
};
window["Asc"].asc_CTextBorder = asc_CTextBorder;
window["Asc"]["asc_CTextBorder"] = asc_CTextBorder;
prot = asc_CTextBorder.prototype;
prot["asc_getColor"] = prot.asc_getColor;
prot["asc_putColor"] = prot.asc_putColor;
prot["asc_getSize"] = prot.asc_getSize;
prot["asc_putSize"] = prot.asc_putSize;
prot["asc_getValue"] = prot.asc_getValue;
prot["asc_putValue"] = prot.asc_putValue;
prot["asc_getSpace"] = prot.asc_getSpace;
prot["asc_putSpace"] = prot.asc_putSpace;
prot["asc_getForSelectedCells"] = prot.asc_getForSelectedCells;
prot["asc_putForSelectedCells"] = prot.asc_putForSelectedCells;
function asc_CListType(obj) {
if (obj) {
this.Type = (undefined == obj.Type) ? null : obj.Type;
this.SubType = (undefined == obj.Type) ? null : obj.SubType;
} else {
this.Type = null;
this.SubType = null;
}
}
asc_CListType.prototype = {
asc_getListType: function () {
return this.Type;
},
asc_getListSubType: function () {
return this.SubType;
}
};
window["Asc"].asc_CListType = asc_CListType;
window["Asc"]["asc_CListType"] = asc_CListType;
prot = asc_CListType.prototype;
prot["asc_getListType"] = prot.asc_getListType;
prot["asc_getListSubType"] = prot.asc_getListSubType;
function asc_CTextFontFamily(obj) {
if (obj) {
this.Name = (undefined != obj.Name) ? obj.Name : null;
this.Index = (undefined != obj.Index) ? obj.Index : null;
} else {
this.Name = "Times New Roman";
this.Index = -1;
}
}
asc_CTextFontFamily.prototype = {
asc_getName: function () {
return this.Name;
},
asc_getIndex: function () {
return this.Index;
}
};
window["Asc"].asc_CTextFontFamily = asc_CTextFontFamily;
window["Asc"]["asc_CTextFontFamily"] = asc_CTextFontFamily;
prot = asc_CTextFontFamily.prototype;
prot["asc_getName"] = prot.asc_getName;
prot["asc_getIndex"] = prot.asc_getIndex;
function CChangeTableData(changedRange, added, hided, removed, arrChanged) {
this.changedRange = changedRange;
this.added = added;
this.hided = hided;
this.removed = removed;
this.arrChanged = arrChanged;
}
function GraphicOption(ws, type, range, offset) {
this.ws = ws;
this.type = type;
this.range = range;
this.offset = offset;
}
GraphicOption.prototype.isScrollType = function () {
return ((this.type === c_oAscGraphicOption.ScrollVertical) || (this.type === c_oAscGraphicOption.ScrollHorizontal));
};
GraphicOption.prototype.getUpdatedRange = function () {
return this.range;
};
GraphicOption.prototype.getOffset = function () {
return this.offset;
};
function DrawingObjects() {
var ScrollOffset = function () {
this.getX = function () {
return -ptToPx((worksheet.cols[worksheet.getFirstVisibleCol(true)].left - worksheet.cellsLeft)) + worksheet.getCellLeft(0, 0);
};
this.getY = function () {
return -ptToPx((worksheet.rows[worksheet.getFirstVisibleRow(true)].top - worksheet.cellsTop)) + worksheet.getCellTop(0, 0);
};
};
var _this = this;
var asc = window["Asc"];
var api = asc["editor"];
var worksheet = null;
var asc_Range = asc.Range;
var drawingCtx = null;
var overlayCtx = null;
var shapeCtx = null;
var shapeOverlayCtx = null;
var trackOverlay = null;
var autoShapeTrack = null;
var scrollOffset = new ScrollOffset();
var aObjects = [];
var aImagesSync = [];
_this.zoom = {
last: 1,
current: 1
};
_this.isViewerMode = null;
_this.objectLocker = null;
_this.drawingArea = null;
_this.coordsManager = null;
_this.drawingDocument = null;
_this.asyncImageEndLoaded = null;
_this.asyncImagesDocumentEndLoaded = null;
var aDrawTasks = [];
function drawTaskFunction() {
var taskLen = aDrawTasks.length;
if (taskLen) {
var lastTask = aDrawTasks[taskLen - 1];
_this.showDrawingObjectsEx(lastTask.params.clearCanvas, lastTask.params.graphicOption, lastTask.params.printOptions);
aDrawTasks.splice(0, (taskLen - 1 > 0) ? taskLen - 1 : 1);
}
api._autoSave();
}
function DrawingBase(ws) {
this.worksheet = ws;
this.imageUrl = "";
this.Type = c_oAscCellAnchorType.cellanchorTwoCell;
this.Pos = {
X: 0,
Y: 0
};
this.from = new CCellObjectInfo();
this.to = new CCellObjectInfo();
this.ext = {
cx: 0,
cy: 0
};
this.size = {
width: 0,
height: 0
};
this.graphicObject = null;
this.boundsFromTo = {
from: new CCellObjectInfo(),
to: new CCellObjectInfo()
};
this.flags = {
anchorUpdated: false,
lockState: c_oAscLockTypes.kLockTypeNone
};
}
DrawingBase.prototype.getAllFonts = function (AllFonts) {
var _t = this;
_t.graphicObject && _t.graphicObject.documentGetAllFontNames && _t.graphicObject.documentGetAllFontNames(AllFonts);
};
DrawingBase.prototype.isImage = function () {
var _t = this;
return _t.graphicObject ? _t.graphicObject.isImage() : false;
};
DrawingBase.prototype.isShape = function () {
var _t = this;
return _t.graphicObject ? _t.graphicObject.isShape() : false;
};
DrawingBase.prototype.isGroup = function () {
var _t = this;
return _t.graphicObject ? _t.graphicObject.isGroup() : false;
};
DrawingBase.prototype.isChart = function () {
var _t = this;
return _t.graphicObject ? _t.graphicObject.isChart() : false;
};
DrawingBase.prototype.isGraphicObject = function () {
var _t = this;
return _t.graphicObject != null;
};
DrawingBase.prototype.isLocked = function () {
var _t = this;
return ((_t.graphicObject.lockType != c_oAscLockTypes.kLockTypeNone) && (_t.graphicObject.lockType != c_oAscLockTypes.kLockTypeMine));
};
DrawingBase.prototype.getCanvasContext = function () {
return _this.drawingDocument.CanvasHitContext;
};
DrawingBase.prototype.getGraphicObjectMetrics = function () {
var _t = this;
var metrics = {
x: 0,
y: 0,
extX: 0,
extY: 0
};
var coordsFrom, coordsTo;
switch (_t.Type) {
case c_oAscCellAnchorType.cellanchorAbsolute:
metrics.x = this.Pos.X;
metrics.y = this.Pos.Y;
metrics.extX = this.ext.cx;
metrics.extY = this.ext.cy;
break;
case c_oAscCellAnchorType.cellanchorOneCell:
coordsFrom = _this.coordsManager.calculateCoords(_t.from);
metrics.x = pxToMm(coordsFrom.x);
metrics.y = pxToMm(coordsFrom.y);
metrics.extX = this.ext.cx;
metrics.extY = this.ext.cy;
break;
case c_oAscCellAnchorType.cellanchorTwoCell:
coordsFrom = _this.coordsManager.calculateCoords(_t.from);
metrics.x = pxToMm(coordsFrom.x);
metrics.y = pxToMm(coordsFrom.y);
coordsTo = _this.coordsManager.calculateCoords(_t.to);
metrics.extX = pxToMm(coordsTo.x - coordsFrom.x);
metrics.extY = pxToMm(coordsTo.y - coordsFrom.y);
break;
}
return metrics;
};
DrawingBase.prototype.setGraphicObjectCoords = function () {
var _t = this;
if (_t.isGraphicObject()) {
if ((_t.graphicObject.x < 0) || (_t.graphicObject.y < 0) || (_t.graphicObject.extX < 0) || (_t.graphicObject.extY < 0)) {
return;
}
var rot = isRealNumber(_t.graphicObject.rot) ? _t.graphicObject.rot : 0;
rot = normalizeRotate(rot);
var fromX, fromY, toX, toY;
if (checkNormalRotate(rot)) {
fromX = mmToPt(_t.graphicObject.x);
fromY = mmToPt(_t.graphicObject.y);
toX = mmToPt(_t.graphicObject.x + _t.graphicObject.extX);
toY = mmToPt(_t.graphicObject.y + _t.graphicObject.extY);
this.Pos.X = _t.graphicObject.x;
this.Pos.Y = _t.graphicObject.y;
this.ext.cx = _t.graphicObject.extX;
this.ext.cy = _t.graphicObject.extY;
} else {
var _xc, _yc;
_xc = _t.graphicObject.x + _t.graphicObject.extX / 2;
_yc = _t.graphicObject.y + _t.graphicObject.extY / 2;
fromX = mmToPt(_xc - _t.graphicObject.extY / 2);
fromY = mmToPt(_yc - _t.graphicObject.extX / 2);
toX = mmToPt(_xc + _t.graphicObject.extY / 2);
toY = mmToPt(_yc + _t.graphicObject.extX / 2);
this.Pos.X = _xc - _t.graphicObject.extY / 2;
this.Pos.Y = _yc - _t.graphicObject.extX / 2;
this.ext.cx = _t.graphicObject.extY;
this.ext.cy = _t.graphicObject.extX;
}
var bReinitHorScroll = false,
bReinitVertScroll = false;
var fromColCell = worksheet.findCellByXY(fromX, fromY, true, false, true);
while (fromColCell.col === null && worksheet.cols.length < gc_nMaxCol) {
worksheet.expandColsOnScroll(true);
fromColCell = worksheet.findCellByXY(fromX, fromY, true, false, true);
bReinitHorScroll = true;
}
if (fromColCell.col === null) {
fromColCell.col = gc_nMaxCol;
}
var fromRowCell = worksheet.findCellByXY(fromX, fromY, true, true, false);
while (fromRowCell.row === null && worksheet.rows.length < gc_nMaxRow) {
worksheet.expandRowsOnScroll(true);
fromRowCell = worksheet.findCellByXY(fromX, fromY, true, true, false);
bReinitVertScroll = true;
}
if (fromRowCell.row === null) {
fromRowCell.row = gc_nMaxRow;
}
var toColCell = worksheet.findCellByXY(toX, toY, true, false, true);
while (toColCell.col === null && worksheet.cols.length < gc_nMaxCol) {
worksheet.expandColsOnScroll(true);
toColCell = worksheet.findCellByXY(toX, toY, true, false, true);
bReinitHorScroll = true;
}
if (toColCell.col === null) {
toColCell.col = gc_nMaxCol;
}
var toRowCell = worksheet.findCellByXY(toX, toY, true, true, false);
while (toRowCell.row === null && worksheet.rows.length < gc_nMaxRow) {
worksheet.expandRowsOnScroll(true);
toRowCell = worksheet.findCellByXY(toX, toY, true, true, false);
bReinitVertScroll = true;
}
if (toRowCell.row === null) {
toRowCell.row = gc_nMaxRow;
}
_t.from.col = fromColCell.col;
_t.from.colOff = ptToMm(fromColCell.colOff);
_t.from.row = fromRowCell.row;
_t.from.rowOff = ptToMm(fromRowCell.rowOff);
_t.to.col = toColCell.col;
_t.to.colOff = ptToMm(toColCell.colOff);
_t.to.row = toRowCell.row;
_t.to.rowOff = ptToMm(toRowCell.rowOff);
if (bReinitHorScroll) {
worksheet.handlers.trigger("reinitializeScrollX");
}
if (bReinitVertScroll) {
worksheet.handlers.trigger("reinitializeScrollY");
}
}
};
DrawingBase.prototype.checkBoundsFromTo = function () {
var _t = this;
if (_t.isGraphicObject() && _t.graphicObject.bounds) {
var bounds = _t.graphicObject.bounds;
var fromX = mmToPt(bounds.x > 0 ? bounds.x : 0),
fromY = mmToPt(bounds.y > 0 ? bounds.y : 0),
toX = mmToPt(bounds.x + bounds.w),
toY = mmToPt(bounds.y + bounds.h);
if (toX < 0) {
toX = 0;
}
if (toY < 0) {
toY = 0;
}
var bReinitHorScroll = false,
bReinitVertScroll = false;
var fromColCell = worksheet.findCellByXY(fromX, fromY, true, false, true);
while (fromColCell.col === null && worksheet.cols.length < gc_nMaxCol) {
worksheet.expandColsOnScroll(true);
fromColCell = worksheet.findCellByXY(fromX, fromY, true, false, true);
bReinitHorScroll = true;
}
if (fromColCell.col === null) {
fromColCell.col = gc_nMaxCol;
}
var fromRowCell = worksheet.findCellByXY(fromX, fromY, true, true, false);
while (fromRowCell.row === null && worksheet.rows.length < gc_nMaxRow) {
worksheet.expandRowsOnScroll(true);
fromRowCell = worksheet.findCellByXY(fromX, fromY, true, true, false);
bReinitVertScroll = true;
}
if (fromRowCell.row === null) {
fromRowCell.row = gc_nMaxRow;
}
var toColCell = worksheet.findCellByXY(toX, toY, true, false, true);
while (toColCell.col === null && worksheet.cols.length < gc_nMaxCol) {
worksheet.expandColsOnScroll(true);
toColCell = worksheet.findCellByXY(toX, toY, true, false, true);
bReinitHorScroll = true;
}
if (toColCell.col === null) {
toColCell.col = gc_nMaxCol;
}
var toRowCell = worksheet.findCellByXY(toX, toY, true, true, false);
while (toRowCell.row === null && worksheet.rows.length < gc_nMaxRow) {
worksheet.expandRowsOnScroll(true);
toRowCell = worksheet.findCellByXY(toX, toY, true, true, false);
bReinitVertScroll = true;
}
if (toRowCell.row === null) {
toRowCell.row = gc_nMaxRow;
}
_t.boundsFromTo.from.col = fromColCell.col;
_t.boundsFromTo.from.colOff = ptToMm(fromColCell.colOff);
_t.boundsFromTo.from.row = fromRowCell.row;
_t.boundsFromTo.from.rowOff = ptToMm(fromRowCell.rowOff);
_t.boundsFromTo.to.col = toColCell.col;
_t.boundsFromTo.to.colOff = ptToMm(toColCell.colOff);
_t.boundsFromTo.to.row = toRowCell.row;
_t.boundsFromTo.to.rowOff = ptToMm(toRowCell.rowOff);
if (bReinitHorScroll) {
worksheet.handlers.trigger("reinitializeScrollX");
}
if (bReinitVertScroll) {
worksheet.handlers.trigger("reinitializeScrollY");
}
}
};
DrawingBase.prototype.getRealTopOffset = function () {
var _t = this;
var val = _t.worksheet.getCellTop(_t.from.row, 0) + mmToPx(_t.from.rowOff);
return asc.round(val);
};
DrawingBase.prototype.getRealLeftOffset = function () {
var _t = this;
var val = _t.worksheet.getCellLeft(_t.from.col, 0) + mmToPx(_t.from.colOff);
return asc.round(val);
};
DrawingBase.prototype.getWidthFromTo = function () {
return (this.worksheet.getCellLeft(this.to.col, 0) + mmToPx(this.to.colOff) - this.worksheet.getCellLeft(this.from.col, 0) - mmToPx(this.from.colOff));
};
DrawingBase.prototype.getHeightFromTo = function () {
return this.worksheet.getCellTop(this.to.row, 0) + mmToPx(this.to.rowOff) - this.worksheet.getCellTop(this.from.row, 0) - mmToPx(this.from.rowOff);
};
DrawingBase.prototype.getVisibleTopOffset = function (withHeader) {
var _t = this;
var headerRowOff = _t.worksheet.getCellTop(0, 0);
var fvr = _t.worksheet.getCellTop(_t.worksheet.getFirstVisibleRow(true), 0);
var off = _t.getRealTopOffset() - fvr;
off = (off > 0) ? off : 0;
return withHeader ? headerRowOff + off : off;
};
DrawingBase.prototype.getVisibleLeftOffset = function (withHeader) {
var _t = this;
var headerColOff = _t.worksheet.getCellLeft(0, 0);
var fvc = _t.worksheet.getCellLeft(_t.worksheet.getFirstVisibleCol(true), 0);
var off = _t.getRealLeftOffset() - fvc;
off = (off > 0) ? off : 0;
return withHeader ? headerColOff + off : off;
};
DrawingBase.prototype.getDrawingObjects = function () {
return _this;
};
_this.createDrawingObject = function (type) {
var drawingBase = new DrawingBase(worksheet);
if (isRealNumber(type)) {
drawingBase.Type = type;
}
return drawingBase;
};
_this.cloneDrawingObject = function (object) {
var copyObject = _this.createDrawingObject();
copyObject.Type = object.Type;
copyObject.Pos.X = object.Pos.X;
copyObject.Pos.Y = object.Pos.Y;
copyObject.ext.cx = object.ext.cx;
copyObject.ext.cy = object.ext.cy;
copyObject.from.col = object.from.col;
copyObject.from.colOff = object.from.colOff;
copyObject.from.row = object.from.row;
copyObject.from.rowOff = object.from.rowOff;
copyObject.to.col = object.to.col;
copyObject.to.colOff = object.to.colOff;
copyObject.to.row = object.to.row;
copyObject.to.rowOff = object.to.rowOff;
copyObject.graphicObject = object.graphicObject;
return copyObject;
};
_this.init = function (currentSheet) {
setInterval(drawTaskFunction, 5);
var api = window["Asc"]["editor"];
worksheet = currentSheet;
drawingCtx = currentSheet.drawingGraphicCtx;
overlayCtx = currentSheet.overlayGraphicCtx;
shapeCtx = currentSheet.shapeCtx;
shapeOverlayCtx = currentSheet.shapeOverlayCtx;
trackOverlay = new COverlay();
trackOverlay.init(shapeOverlayCtx.m_oContext, "ws-canvas-graphic-overlay", 0, 0, shapeOverlayCtx.m_lWidthPix, shapeOverlayCtx.m_lHeightPix, shapeOverlayCtx.m_dWidthMM, shapeOverlayCtx.m_dHeightMM);
autoShapeTrack = new CAutoshapeTrack();
autoShapeTrack.init(trackOverlay, 0, 0, shapeOverlayCtx.m_lWidthPix, shapeOverlayCtx.m_lHeightPix, shapeOverlayCtx.m_dWidthMM, shapeOverlayCtx.m_dHeightMM);
shapeCtx.m_oAutoShapesTrack = autoShapeTrack;
_this.objectLocker = new ObjectLocker(worksheet);
_this.drawingArea = currentSheet.drawingArea;
_this.drawingArea.init();
_this.coordsManager = new CoordsManager(worksheet, true);
_this.drawingDocument = currentSheet.model.DrawingDocument ? currentSheet.model.DrawingDocument : new CDrawingDocument(this);
_this.drawingDocument.drawingObjects = this;
_this.drawingDocument.AutoShapesTrack = autoShapeTrack;
_this.drawingDocument.TargetHtmlElement = document.getElementById("id_target_cursor");
_this.drawingDocument.InitGuiCanvasShape(api.shapeElementId);
_this.controller = new DrawingObjectsController(_this);
_this.isViewerMode = function () {
return worksheet.handlers.trigger("getViewerMode");
};
aImagesSync = [];
var i;
aObjects = currentSheet.model.Drawings;
for (i = 0; currentSheet.model.Drawings && (i < currentSheet.model.Drawings.length); i++) {
aObjects[i] = _this.cloneDrawingObject(aObjects[i]);
var drawingObject = aObjects[i];
drawingObject.drawingArea = _this.drawingArea;
drawingObject.worksheet = currentSheet;
if (!worksheet.cols[drawingObject.to.col]) {
while (!worksheet.cols[drawingObject.to.col]) {
worksheet.expandColsOnScroll(true);
}
worksheet.expandColsOnScroll(true);
}
if (!worksheet.rows[drawingObject.to.row]) {
while (!worksheet.rows[drawingObject.to.row]) {
worksheet.expandRowsOnScroll(true);
}
worksheet.expandRowsOnScroll(true);
}
var metrics = drawingObject.getGraphicObjectMetrics();
CheckSpPrXfrm(drawingObject.graphicObject);
var isSerialize = drawingObject.graphicObject.fromSerialize;
if (!api.wbModel.bCollaborativeChanges && isSerialize) {
var rot = isRealNumber(drawingObject.graphicObject.spPr.xfrm.rot) ? drawingObject.graphicObject.spPr.xfrm.rot : 0;
rot = normalizeRotate(rot);
var metricExtX, metricExtY;
if (drawingObject.graphicObject.getObjectType() !== historyitem_type_GroupShape) {
metricExtX = metrics.extX;
metricExtY = metrics.extY;
if (checkNormalRotate(rot)) {
drawingObject.graphicObject.spPr.xfrm.setExtX(metrics.extX);
drawingObject.graphicObject.spPr.xfrm.setExtY(metrics.extY);
} else {
drawingObject.graphicObject.spPr.xfrm.setExtX(metrics.extY);
drawingObject.graphicObject.spPr.xfrm.setExtY(metrics.extX);
}
} else {
if (isRealNumber(drawingObject.graphicObject.spPr.xfrm.extX) && isRealNumber(drawingObject.graphicObject.spPr.xfrm.extY)) {
metricExtX = drawingObject.graphicObject.spPr.xfrm.extX;
metricExtY = drawingObject.graphicObject.spPr.xfrm.extY;
} else {
metricExtX = metrics.extX;
metricExtY = metrics.extY;
}
}
if (checkNormalRotate(rot)) {
drawingObject.graphicObject.spPr.xfrm.setOffX(metrics.x);
drawingObject.graphicObject.spPr.xfrm.setOffY(metrics.y);
} else {
drawingObject.graphicObject.spPr.xfrm.setOffX(metrics.x + metricExtX / 2 - metricExtY / 2);
drawingObject.graphicObject.spPr.xfrm.setOffY(metrics.y + metricExtY / 2 - metricExtX / 2);
}
}
delete drawingObject.graphicObject.fromSerialize;
drawingObject.graphicObject.drawingBase = aObjects[i];
drawingObject.graphicObject.drawingObjects = _this;
drawingObject.graphicObject.getAllRasterImages(aImagesSync);
}
for (i = 0; i < aImagesSync.length; ++i) {
aImagesSync[i] = getFullImageSrc(aImagesSync[i]);
}
_this.asyncImagesDocumentEndLoaded = function () {
_this.showDrawingObjects(true);
};
if (aImagesSync.length > 0) {
var old_val = api.ImageLoader.bIsAsyncLoadDocumentImages;
api.ImageLoader.bIsAsyncLoadDocumentImages = true;
api.ImageLoader.LoadDocumentImages(aImagesSync, null);
api.ImageLoader.bIsAsyncLoadDocumentImages = old_val;
}
_this.recalculate(true);
if (window.addEventListener) {
window.addEventListener("message", _this._uploadMessage, false);
}
_this.shiftMap = {};
worksheet.model.Drawings = aObjects;
};
_this.getSelectedDrawingsRange = function () {
var i, rmin = gc_nMaxRow,
rmax = 0,
cmin = gc_nMaxCol,
cmax = 0,
selectedObjects = this.controller.selectedObjects,
drawingBase;
for (i = 0; i < selectedObjects.length; ++i) {
drawingBase = selectedObjects[i].drawingBase;
if (drawingBase) {
if (drawingBase.from.col < cmin) {
cmin = drawingBase.from.col;
}
if (drawingBase.from.row < rmin) {
rmin = drawingBase.from.row;
}
if (drawingBase.to.col > cmax) {
cmax = drawingBase.to.col;
}
if (drawingBase.to.row > rmax) {
rmax = drawingBase.to.row;
}
}
}
return new asc.ActiveRange(cmin, rmin, cmax, rmax, true);
};
_this.recalculate = function (all) {
_this.controller.recalculate2(all);
};
_this.preCopy = function () {
_this.shiftMap = {};
var selected_objects = _this.controller.selectedObjects;
if (selected_objects.length > 0) {
var min_x, min_y, i;
min_x = selected_objects[0].x;
min_y = selected_objects[0].y;
for (i = 1; i < selected_objects.length; ++i) {
if (selected_objects[i].x < min_x) {
min_x = selected_objects[i].x;
}
if (selected_objects[i].y < min_y) {
min_y = selected_objects[i].y;
}
}
for (i = 0; i < selected_objects.length; ++i) {
_this.shiftMap[selected_objects[i].Get_Id()] = {
x: selected_objects[i].x - min_x,
y: selected_objects[i].y - min_y
};
}
}
};
_this.getAllFonts = function (AllFonts) {};
_this.getOverlay = function () {
return trackOverlay;
};
_this.OnUpdateOverlay = function () {
_this.drawingArea.drawSelection(_this.drawingDocument);
};
_this.changeZoom = function (factor) {
_this.zoom.last = _this.zoom.current;
_this.zoom.current = factor;
_this.resizeCanvas();
};
_this.resizeCanvas = function () {
_this.drawingArea.init();
shapeCtx.init(drawingCtx.ctx, drawingCtx.getWidth(0), drawingCtx.getHeight(0), drawingCtx.getWidth(3), drawingCtx.getHeight(3));
shapeCtx.CalculateFullTransform();
shapeOverlayCtx.init(overlayCtx.ctx, overlayCtx.getWidth(0), overlayCtx.getHeight(0), overlayCtx.getWidth(3), overlayCtx.getHeight(3));
shapeOverlayCtx.CalculateFullTransform();
trackOverlay.init(shapeOverlayCtx.m_oContext, "ws-canvas-graphic-overlay", 0, 0, shapeOverlayCtx.m_lWidthPix, shapeOverlayCtx.m_lHeightPix, shapeOverlayCtx.m_dWidthMM, shapeOverlayCtx.m_dHeightMM);
autoShapeTrack.init(trackOverlay, 0, 0, shapeOverlayCtx.m_lWidthPix, shapeOverlayCtx.m_lHeightPix, shapeOverlayCtx.m_dWidthMM, shapeOverlayCtx.m_dHeightMM);
autoShapeTrack.Graphics.CalculateFullTransform();
};
_this.getCanvasContext = function () {
return _this.drawingDocument.CanvasHitContext;
};
_this.getDrawingObjects = function () {
return aObjects;
};
_this.getWorksheet = function () {
return worksheet;
};
_this.getContextWidth = function () {
return drawingCtx.getWidth();
};
_this.getContextHeight = function () {
return drawingCtx.getHeight();
};
_this.getWorksheetModel = function () {
return worksheet.model;
};
_this._uploadMessage = function (event) {
if (null != event && null != event.data) {
try {
var data = JSON.parse(event.data);
if ((null != data) && (null != data["type"])) {
if (PostMessageType.UploadImage == data["type"]) {
if (c_oAscServerError.NoError == data["error"]) {
var sheetId = null;
if (null != data["input"]) {
sheetId = data["input"]["sheetId"];
}
var urls = data["urls"];
if (urls && urls.length > 0 && sheetId == worksheet.model.getId()) {
var url = urls[0];
if (api.isImageChangeUrl || api.isShapeImageChangeUrl) {
_this.editImageDrawingObject(url);
} else {
_this.addImageDrawingObject(url, null);
}
} else {
worksheet.model.workbook.handlers.trigger("asc_onEndAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
}
} else {
worksheet.model.workbook.handlers.trigger("asc_onError", api.asc_mapAscServerErrorToAscError(data["error"]), c_oAscError.Level.NoCritical);
worksheet.model.workbook.handlers.trigger("asc_onEndAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
}
}
}
} catch(e) {}
}
};
_this.callTrigger = function (triggerName, param) {
if (triggerName) {
worksheet.model.workbook.handlers.trigger(triggerName, param);
}
};
_this.getDrawingObjectsBounds = function () {
var arr_x = [],
arr_y = [],
bounds;
for (var i = 0; i < aObjects.length; ++i) {
bounds = aObjects[i].graphicObject.bounds;
arr_x.push(bounds.l);
arr_x.push(bounds.r);
arr_y.push(bounds.t);
arr_y.push(bounds.b);
}
return new DrawingBounds(Math.min.apply(Math, arr_x), Math.max.apply(Math, arr_x), Math.min.apply(Math, arr_y), Math.max.apply(Math, arr_y));
};
_this.showDrawingObjects = function (clearCanvas, graphicOption, printOptions) {
var currTime = getCurrentTime();
if (aDrawTasks.length) {
var lastTask = aDrawTasks[aDrawTasks.length - 1];
if (lastTask.params.graphicOption && lastTask.params.graphicOption.isScrollType() && graphicOption && (lastTask.params.graphicOption.type === graphicOption.type)) {
lastTask.params.graphicOption.range.c1 = Math.min(lastTask.params.graphicOption.range.c1, graphicOption.range.c1);
lastTask.params.graphicOption.range.r1 = Math.min(lastTask.params.graphicOption.range.r1, graphicOption.range.r1);
lastTask.params.graphicOption.range.c2 = Math.max(lastTask.params.graphicOption.range.c2, graphicOption.range.c2);
lastTask.params.graphicOption.range.r2 = Math.max(lastTask.params.graphicOption.range.r2, graphicOption.range.r2);
return;
}
if ((currTime - lastTask.time < 40)) {
return;
}
}
aDrawTasks.push({
time: currTime,
params: {
clearCanvas: clearCanvas,
graphicOption: graphicOption,
printOptions: printOptions
}
});
};
_this.showDrawingObjectsEx = function (clearCanvas, graphicOption, printOptions) {
if ((worksheet.model.index != api.wb.model.getActive()) && !printOptions) {
return;
}
if (drawingCtx) {
if (clearCanvas) {
_this.drawingArea.clear();
}
if (aObjects.length) {
if (graphicOption) {
var updatedRect = {
x: 0,
y: 0,
w: 0,
h: 0
};
var updatedRange = graphicOption.getUpdatedRange();
var x1 = worksheet.getCellLeft(updatedRange.c1, 1);
var y1 = worksheet.getCellTop(updatedRange.r1, 1);
var x2 = worksheet.getCellLeft(updatedRange.c2, 1) + worksheet.getColumnWidth(updatedRange.c2, 1);
var y2 = worksheet.getCellTop(updatedRange.r2, 1) + worksheet.getRowHeight(updatedRange.r2, 1);
var w = x2 - x1;
var h = y2 - y1;
var offset = worksheet.getCellsOffset(1);
updatedRect.x = ptToMm(x1 - offset.left);
updatedRect.y = ptToMm(y1 - offset.top);
updatedRect.w = ptToMm(w);
updatedRect.h = ptToMm(h);
var offsetScroll = graphicOption.getOffset();
shapeCtx.m_oContext.save();
shapeCtx.m_oContext.beginPath();
shapeCtx.m_oContext.rect(ptToPx(x1 - offsetScroll.offsetX), ptToPx(y1 - offsetScroll.offsetY), ptToPx(w), ptToPx(h));
shapeCtx.m_oContext.clip();
shapeCtx.updatedRect = updatedRect;
} else {
shapeCtx.updatedRect = null;
}
for (var i = 0; i < aObjects.length; i++) {
var drawingObject = aObjects[i];
if (drawingObject.isGraphicObject()) {
if (printOptions) {
var range = printOptions.printPagesData.pageRange;
var printPagesData = printOptions.printPagesData;
var offsetCols = printPagesData.startOffsetPt;
var left = worksheet.getCellLeft(range.c1, 3) - worksheet.getCellLeft(0, 3) - ptToMm(printPagesData.leftFieldInPt);
var top = worksheet.getCellTop(range.r1, 3) - worksheet.getCellTop(0, 3) - ptToMm(printPagesData.topFieldInPt);
_this.printGraphicObject(drawingObject.graphicObject, printOptions.ctx.DocumentRenderer, top, left);
if (printPagesData.pageHeadings) {
worksheet._drawColumnHeaders(printOptions.ctx, range.c1, range.c2, undefined, worksheet.cols[range.c1].left - printPagesData.leftFieldInPt + offsetCols, printPagesData.topFieldInPt - worksheet.cellsTop);
worksheet._drawRowHeaders(printOptions.ctx, range.r1, range.r2, undefined, printPagesData.leftFieldInPt - worksheet.cellsLeft, worksheet.rows[range.r1].top - printPagesData.topFieldInPt);
}
} else {
_this.drawingArea.drawObject(drawingObject);
}
}
}
if (graphicOption) {
shapeCtx.m_oContext.restore();
}
}
worksheet.model.Drawings = aObjects;
}
if (!printOptions) {
if (aObjects.length) {
if (_this.controller.selectedObjects.length) {
_this.OnUpdateOverlay();
_this.drawingDocument.CheckTargetShow();
_this.controller.updateSelectionState(true);
}
}
}
};
_this.getDrawingDocument = function () {
return _this.drawingDocument;
};
_this.printGraphicObject = function (graphicObject, ctx, top, left) {
if (graphicObject && ctx) {
if (graphicObject instanceof CImageShape) {
printImage(graphicObject, ctx, top, left);
} else {
if (graphicObject instanceof CShape) {
printShape(graphicObject, ctx, top, left);
} else {
if (graphicObject instanceof CChartSpace) {
printChart(graphicObject, ctx, top, left);
} else {
if (graphicObject instanceof CGroupShape) {
printGroup(graphicObject, ctx, top, left);
}
}
}
}
}
function printImage(graphicObject, ctx, top, left) {
if ((graphicObject instanceof CImageShape) && graphicObject && ctx) {
var tx = graphicObject.transform.tx;
var ty = graphicObject.transform.ty;
graphicObject.transform.tx -= left;
graphicObject.transform.ty -= top;
graphicObject.draw(ctx);
graphicObject.transform.tx = tx;
graphicObject.transform.ty = ty;
}
}
function printShape(graphicObject, ctx, top, left) {
if ((graphicObject instanceof CShape) && graphicObject && ctx) {
var tx = graphicObject.transform.tx;
var ty = graphicObject.transform.ty;
graphicObject.transform.tx -= left;
graphicObject.transform.ty -= top;
var txTxt, tyTxt;
if (graphicObject.txBody && graphicObject.transformText) {
txTxt = graphicObject.transformText.tx;
tyTxt = graphicObject.transformText.ty;
graphicObject.transformText.tx -= left;
graphicObject.transformText.ty -= top;
}
graphicObject.draw(ctx);
graphicObject.transform.tx = tx;
graphicObject.transform.ty = ty;
if (graphicObject.txBody && graphicObject.transformText) {
graphicObject.transformText.tx = txTxt;
graphicObject.transformText.ty = tyTxt;
}
}
}
function printChart(graphicObject, ctx, top, left) {
if ((graphicObject instanceof CChartSpace) && graphicObject && ctx) {
var tx = graphicObject.transform.tx;
var ty = graphicObject.transform.ty;
graphicObject.transform.tx -= left;
graphicObject.transform.ty -= top;
graphicObject.updateChildLabelsTransform(graphicObject.transform.tx, graphicObject.transform.ty);
graphicObject.draw(ctx);
graphicObject.transform.tx = tx;
graphicObject.transform.ty = ty;
graphicObject.updateChildLabelsTransform(graphicObject.transform.tx, graphicObject.transform.ty);
}
}
function printGroup(graphicObject, ctx, top, left) {
if ((graphicObject instanceof CGroupShape) && graphicObject && ctx) {
for (var i = 0; i < graphicObject.arrGraphicObjects.length; i++) {
var graphicItem = graphicObject.arrGraphicObjects[i];
if (graphicItem instanceof CImageShape) {
printImage(graphicItem, ctx, top, left);
} else {
if (graphicItem instanceof CShape) {
printShape(graphicItem, ctx, top, left);
} else {
if (graphicItem instanceof CChartSpace) {
printChart(graphicItem, ctx, top, left);
}
}
}
}
}
}
};
_this.getDrawingAreaMetrics = function () {
var metrics = {
maxCol: 0,
maxRow: 0
};
for (var i = 0; aObjects && (i < aObjects.length); i++) {
var drawingObject = aObjects[i];
if (drawingObject.to.col >= metrics.maxCol) {
metrics.maxCol = drawingObject.to.col + 1;
}
if (drawingObject.to.row >= metrics.maxRow) {
metrics.maxRow = drawingObject.to.row + 1;
}
}
return metrics;
};
_this.clipGraphicsCanvas = function (canvas, graphicOption) {
if (canvas instanceof CGraphics) {
var x, y, w, h;
if (graphicOption) {
var updatedRange = graphicOption.getUpdatedRange();
var offsetX = worksheet.cols[worksheet.getFirstVisibleCol(true)].left - worksheet.cellsLeft;
var offsetY = worksheet.rows[worksheet.getFirstVisibleRow(true)].top - worksheet.cellsTop;
var vr = worksheet.visibleRange;
var borderOffsetX = (updatedRange.c1 <= vr.c1) ? 0 : 3;
var borderOffsetY = (updatedRange.r1 <= vr.r1) ? 0 : 3;
x = ptToPx(worksheet.getCellLeft(updatedRange.c1, 1) - offsetX) - borderOffsetX;
y = ptToPx(worksheet.getCellTop(updatedRange.r1, 1) - offsetY) - borderOffsetY;
w = worksheet.getCellLeft(updatedRange.c2, 0) - worksheet.getCellLeft(updatedRange.c1, 0) + 3;
h = worksheet.getCellTop(updatedRange.r2, 0) - worksheet.getCellTop(updatedRange.r1, 0) + 3;
} else {
x = worksheet.getCellLeft(0, 0);
y = worksheet.getCellTop(0, 0);
w = shapeCtx.m_lWidthPix - x;
h = shapeCtx.m_lHeightPix - y;
}
canvas.m_oContext.save();
canvas.m_oContext.beginPath();
canvas.m_oContext.rect(x, y, w, h);
canvas.m_oContext.clip();
canvas.m_oContext.save();
}
};
_this.restoreGraphicsCanvas = function (canvas) {
if (canvas instanceof CGraphics) {
canvas.m_oContext.restore();
canvas.m_oContext.restore();
}
};
_this.addImageDrawingObject = function (imageUrl, options) {
if (imageUrl && !_this.isViewerMode()) {
var _image = api.ImageLoader.LoadImage(imageUrl, 1);
var isOption = options && options.cell;
var calculateObjectMetrics = function (object, width, height) {
var metricCoeff = 1;
var coordsFrom = _this.coordsManager.calculateCoords(object.from);
var realTopOffset = coordsFrom.y;
var realLeftOffset = coordsFrom.x;
var areaWidth = worksheet.getCellLeft(worksheet.getLastVisibleCol(), 0) - worksheet.getCellLeft(worksheet.getFirstVisibleCol(true), 0);
if (areaWidth < width) {
metricCoeff = width / areaWidth;
width = areaWidth;
height /= metricCoeff;
}
var areaHeight = worksheet.getCellTop(worksheet.getLastVisibleRow(), 0) - worksheet.getCellTop(worksheet.getFirstVisibleRow(true), 0);
if (areaHeight < height) {
metricCoeff = height / areaHeight;
height = areaHeight;
width /= metricCoeff;
}
var findVal = pxToPt(realLeftOffset + width);
var toCell = worksheet.findCellByXY(findVal, 0, true, false, true);
while (toCell.col === null && worksheet.cols.length < gc_nMaxCol) {
worksheet.expandColsOnScroll(true);
toCell = worksheet.findCellByXY(findVal, 0, true, false, true);
}
object.to.col = toCell.col;
object.to.colOff = ptToMm(toCell.colOff);
findVal = pxToPt(realTopOffset + height);
toCell = worksheet.findCellByXY(0, findVal, true, true, false);
while (toCell.row === null && worksheet.rows.length < gc_nMaxRow) {
worksheet.expandRowsOnScroll(true);
toCell = worksheet.findCellByXY(0, findVal, true, true, false);
}
object.to.row = toCell.row;
object.to.rowOff = ptToMm(toCell.rowOff);
worksheet.handlers.trigger("reinitializeScroll");
};
var addImageObject = function (_image) {
if (!_image.Image) {
worksheet.model.workbook.handlers.trigger("asc_onError", c_oAscError.ID.UplImageUrl, c_oAscError.Level.NoCritical);
} else {
var drawingObject = _this.createDrawingObject();
drawingObject.worksheet = worksheet;
drawingObject.from.col = isOption ? options.cell.col : worksheet.getSelectedColumnIndex();
drawingObject.from.row = isOption ? options.cell.row : worksheet.getSelectedRowIndex();
while (!worksheet.cols[drawingObject.from.col]) {
worksheet.expandColsOnScroll(true);
}
worksheet.expandColsOnScroll(true);
while (!worksheet.rows[drawingObject.from.row]) {
worksheet.expandRowsOnScroll(true);
}
worksheet.expandRowsOnScroll(true);
calculateObjectMetrics(drawingObject, isOption ? options.width : _image.Image.width, isOption ? options.height : _image.Image.height);
var coordsFrom = _this.coordsManager.calculateCoords(drawingObject.from);
var coordsTo = _this.coordsManager.calculateCoords(drawingObject.to);
_this.objectLocker.reset();
_this.objectLocker.addObjectId(g_oIdCounter.Get_NewId());
_this.objectLocker.checkObjects(function (bLock) {
if (bLock !== true) {
return;
}
_this.controller.resetSelection();
_this.controller.addImageFromParams(_image.src, pxToMm(coordsFrom.x), pxToMm(coordsFrom.y), pxToMm(coordsTo.x - coordsFrom.x), pxToMm(coordsTo.y - coordsFrom.y));
});
}
worksheet.model.workbook.handlers.trigger("asc_onEndAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
worksheet.setSelectionShape(true);
};
if (null != _image) {
addImageObject(_image);
} else {
_this.asyncImageEndLoaded = function (_image) {
addImageObject(_image);
_this.asyncImageEndLoaded = null;
};
}
}
};
_this.editImageDrawingObject = function (imageUrl) {
if (imageUrl) {
var _image = api.ImageLoader.LoadImage(imageUrl, 1);
var addImageObject = function (_image) {
if (!_image.Image) {
worksheet.model.workbook.handlers.trigger("asc_onError", c_oAscError.ID.UplImageUrl, c_oAscError.Level.NoCritical);
} else {
if (api.isImageChangeUrl) {
var imageProp = new asc_CImgProperty();
imageProp.ImageUrl = _image.src;
_this.setGraphicObjectProps(imageProp);
api.isImageChangeUrl = false;
} else {
if (api.isShapeImageChangeUrl) {
var imgProps = new asc_CImgProperty();
var shapeProp = new asc_CShapeProperty();
imgProps.ShapeProperties = shapeProp;
shapeProp.fill = new asc_CShapeFill();
shapeProp.fill.type = c_oAscFill.FILL_TYPE_BLIP;
shapeProp.fill.fill = new asc_CFillBlip();
shapeProp.fill.fill.asc_putUrl(_image.src);
_this.setGraphicObjectProps(imgProps);
api.isShapeImageChangeUrl = false;
}
}
_this.showDrawingObjects(true);
}
worksheet.model.workbook.handlers.trigger("asc_onEndAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
};
if (null != _image) {
addImageObject(_image);
} else {
_this.asyncImageEndLoaded = function (_image) {
addImageObject(_image);
_this.asyncImageEndLoaded = null;
};
}
}
};
_this.addChartDrawingObject = function (chart) {
if (_this.isViewerMode()) {
return;
}
worksheet.setSelectionShape(true);
if (chart instanceof asc_ChartSettings) {
if (api.isChartEditor) {
_this.controller.selectObject(aObjects[0].graphicObject, 0);
_this.controller.editChartDrawingObjects(chart);
return;
}
_this.objectLocker.reset();
_this.objectLocker.addObjectId(g_oIdCounter.Get_NewId());
_this.objectLocker.checkObjects(function (bLock) {
if (bLock) {
_this.controller.addChartDrawingObject(chart);
}
});
} else {
if (isObject(chart) && chart["binary"]) {
History.TurnOff();
aObjects.length = 0;
var listRange = new Range(worksheet.model, 0, 0, worksheet.nRowsCount - 1, worksheet.nColsCount - 1);
listRange.cleanAll();
if (worksheet.isChartAreaEditMode) {
worksheet.isChartAreaEditMode = false;
worksheet.arrActiveChartsRanges = [];
}
var asc_chart_binary = new Asc.asc_CChartBinary();
asc_chart_binary.asc_setBinary(chart["binary"]);
asc_chart_binary.asc_setThemeBinary(chart["themeBinary"]);
asc_chart_binary.asc_setColorMapBinary(chart["colorMapBinary"]);
var oNewChartSpace = asc_chart_binary.getChartSpace(worksheet.model);
var theme = asc_chart_binary.getTheme();
if (theme) {
worksheet.model.workbook.theme = theme;
}
var colorMapOverride = asc_chart_binary.getColorMap();
if (colorMapOverride) {
DEFAULT_COLOR_MAP = colorMapOverride;
}
if (typeof chart["DocumentUrl"] === "string") {
var DocumentUrl = chart["DocumentUrl"];
if (DocumentUrl.indexOf(g_sResourceServiceLocalUrl) === 0) {
window["Asc"]["editor"].documentId = DocumentUrl.slice(g_sResourceServiceLocalUrl.length, DocumentUrl.length);
}
}
var font_map = {};
oNewChartSpace.documentGetAllFontNames(font_map);
checkThemeFonts(font_map, worksheet.model.workbook.theme.themeElements.fontScheme);
window["Asc"]["editor"]._loadFonts(font_map, function () {
var min_r = 0,
max_r = 0,
min_c = 0,
max_c = 0;
var series = oNewChartSpace.chart.plotArea.charts[0].series,
ser;
function fillTableFromRef(ref) {
var cache = ref.numCache ? ref.numCache : (ref.strCache ? ref.strCache : null);
var lit_format_code;
if (cache) {
if (typeof cache.formatCode === "string" && cache.formatCode.length > 0) {
lit_format_code = cache.formatCode;
} else {
lit_format_code = "General";
}
var sFormula = ref.f + "";
if (sFormula[0] === "(") {
sFormula = sFormula.slice(1);
}
if (sFormula[sFormula.length - 1] === ")") {
sFormula = sFormula.slice(0, -1);
}
var f1 = sFormula;
var arr_f = f1.split(",");
var pt_index = 0,
i, j, cell, pt;
for (i = 0; i < arr_f.length; ++i) {
var parsed_ref = parserHelp.parse3DRef(arr_f[i]);
if (parsed_ref) {
var source_worksheet = worksheet.model.workbook.getWorksheetByName(parsed_ref.sheet);
if (source_worksheet === worksheet.model) {
var range1 = source_worksheet.getRange2(parsed_ref.range);
if (range1) {
var range = range1.bbox;
while (worksheet.cols.length < range.c2) {
worksheet.expandColsOnScroll(true);
}
while (worksheet.rows.length < range.r2) {
worksheet.expandRowsOnScroll(true);
}
if (range.r1 > max_r) {
max_r = range.r1;
}
if (range.r2 > max_r) {
max_r = range.r2;
}
if (range.r1 < min_r) {
min_r = range.r1;
}
if (range.r2 < min_r) {
min_r = range.r2;
}
if (range.c1 > max_c) {
max_c = range.c1;
}
if (range.c2 > max_c) {
max_c = range.c2;
}
if (range.c1 < min_c) {
min_c = range.c1;
}
if (range.c2 < min_c) {
min_c = range.c2;
}
if (range.r1 === range.r2) {
for (j = range.c1; j <= range.c2; ++j) {
cell = source_worksheet.getCell3(range.r1, j);
pt = cache.getPtByIndex(pt_index);
if (pt) {
cell.setNumFormat(typeof pt.formatCode === "string" && pt.formatCode.length > 0 ? pt.formatCode : lit_format_code);
cell.setValue(pt.val + "");
}++pt_index;
}
} else {
for (j = range.r1; j <= range.r2; ++j) {
cell = source_worksheet.getCell3(j, range.c1);
pt = cache.getPtByIndex(pt_index);
if (pt) {
cell.setNumFormat(typeof pt.formatCode === "string" && pt.formatCode.length > 0 ? pt.formatCode : lit_format_code);
cell.setValue(pt.val + "");
}++pt_index;
}
}
}
}
}
}
}
}
var first_num_ref;
if (series[0]) {
if (series[0].val) {
first_num_ref = series[0].val.numRef;
} else {
if (series[0].yVal) {
first_num_ref = series[0].yVal.numRef;
}
}
}
if (first_num_ref) {
var resultRef = parserHelp.parse3DRef(first_num_ref.f);
if (resultRef) {
worksheet.model.workbook.aWorksheets[0].sName = resultRef.sheet;
if (series[0] && series[0].xVal && series[0].xVal.numRef) {
fillTableFromRef(series[0].xVal.numRef);
}
if (series[0].cat && series[0].cat.strRef) {
fillTableFromRef(series[0].cat.strRef);
}
for (var i = 0; i < series.length; ++i) {
ser = series[i];
if (ser.val && ser.val.numRef) {
fillTableFromRef(ser.val.numRef);
}
if (ser.yVal && ser.yVal.numRef) {
fillTableFromRef(ser.yVal.numRef);
}
if (ser.cat && ser.cat.numRef) {
fillTableFromRef(ser.cat.numRef);
}
if (ser.cat && ser.cat.strRef) {
fillTableFromRef(ser.cat.strRef);
}
if (ser.tx && ser.tx.strRef) {
fillTableFromRef(ser.tx.strRef);
}
}
}
}
worksheet._updateCellsRange(new asc_Range(0, 0, Math.max(worksheet.nColsCount - 1, max_c), Math.max(worksheet.nRowsCount - 1, max_r)));
aImagesSync.length = 0;
oNewChartSpace.getAllRasterImages(aImagesSync);
oNewChartSpace.setBDeleted(false);
oNewChartSpace.setWorksheet(worksheet.model);
oNewChartSpace.addToDrawingObjects();
oNewChartSpace.recalculate();
CheckSpPrXfrm(oNewChartSpace);
var canvas_height = worksheet.drawingCtx.getHeight(3);
var pos_y = (canvas_height - oNewChartSpace.spPr.xfrm.extY) / 2;
if (pos_y < 0) {
pos_y = 0;
}
var canvas_width = worksheet.drawingCtx.getWidth(3);
var pos_x = (canvas_width - oNewChartSpace.spPr.xfrm.extX) / 2;
if (pos_x < 0) {
pos_x = 0;
}
oNewChartSpace.spPr.xfrm.setOffX(pos_x);
oNewChartSpace.spPr.xfrm.setOffY(pos_y);
oNewChartSpace.checkDrawingBaseCoords();
oNewChartSpace.recalculate();
var d = worksheet._calcActiveCellOffset(_this.getSelectedDrawingsRange());
window["Asc"]["editor"].wb.controller.scroll(d);
_this.showDrawingObjects(false);
_this.controller.resetSelection();
_this.controller.selectObject(oNewChartSpace, 0);
_this.controller.updateSelectionState();
_this.sendGraphicObjectProps();
History.TurnOn();
if (aImagesSync.length > 0) {
window["Asc"]["editor"].ImageLoader.LoadDocumentImages(aImagesSync, null, function () {
_this.showDrawingObjects(true);
});
}
});
}
}
};
_this.editChartDrawingObject = function (chart) {
if (chart) {
if (api.isChartEditor) {
_this.controller.selectObject(aObjects[0].graphicObject, 0);
}
_this.controller.editChartDrawingObjects(chart);
_this.showDrawingObjects(false);
}
};
_this.rebuildChartGraphicObjects = function (data) {
if (!worksheet) {
return;
}
ExecuteNoHistory(function () {
var i;
var wsViews = Asc["editor"].wb.wsViews;
var changedArr = [];
if (data.changedRange) {
changedArr.push(new BBoxInfo(worksheet.model, asc_Range(data.changedRange.c1, data.changedRange.r1, data.changedRange.c2, data.changedRange.r2)));
}
if (data.added) {
changedArr.push(new BBoxInfo(worksheet.model, asc_Range(data.added.c1, data.added.r1, gc_nMaxCol, gc_nMaxRow)));
}
if (data.hided) {
changedArr.push(new BBoxInfo(worksheet.model, asc_Range(data.hided.c1, data.hided.r1, data.hided.c2, data.hided.r2)));
}
if (data.removed) {
changedArr.push(new BBoxInfo(worksheet.model, asc_Range(data.removed.c1, data.removed.r1, gc_nMaxCol, gc_nMaxRow)));
}
if (Array.isArray(data.arrChanged)) {
for (i = 0; i < data.arrChanged.length; ++i) {
changedArr.push(new BBoxInfo(worksheet.model, asc_Range(data.arrChanged[i].c1, data.arrChanged[i].r1, data.arrChanged[i].c2, data.arrChanged[i].r2)));
}
}
for (i = 0; i < wsViews.length; ++i) {
if (wsViews[i] && wsViews[i].objectRender) {
wsViews[i].objectRender.rebuildCharts(changedArr);
wsViews[i].objectRender.recalculate(true);
}
}
},
_this, []);
};
_this.pushToAObjects = function (aDrawing) {
aObjects = [];
for (var i = 0; i < aDrawing.length; ++i) {
aObjects.push(aDrawing[i]);
}
};
_this.rebuildCharts = function (data) {
for (var i = 0; i < aObjects.length; ++i) {
if (aObjects[i].graphicObject.rebuildSeries) {
aObjects[i].graphicObject.rebuildSeries(data);
}
}
};
_this.updateDrawingObject = function (bInsert, operType, updateRange) {
if (History.TurnOffHistory > 0) {
return;
}
var metrics = null;
var count, bNeedRedraw = false,
offset;
for (var i = 0; i < aObjects.length; i++) {
var obj = aObjects[i];
metrics = {
from: {},
to: {}
};
metrics.from.col = obj.from.col;
metrics.to.col = obj.to.col;
metrics.from.colOff = obj.from.colOff;
metrics.to.colOff = obj.to.colOff;
metrics.from.row = obj.from.row;
metrics.to.row = obj.to.row;
metrics.from.rowOff = obj.from.rowOff;
metrics.to.rowOff = obj.to.rowOff;
if (bInsert) {
switch (operType) {
case c_oAscInsertOptions.InsertColumns:
count = updateRange.c2 - updateRange.c1 + 1;
if (updateRange.c1 <= obj.from.col) {
metrics.from.col += count;
metrics.to.col += count;
} else {
if ((updateRange.c1 > obj.from.col) && (updateRange.c1 <= obj.to.col)) {
metrics.to.col += count;
} else {
metrics = null;
}
}
break;
case c_oAscInsertOptions.InsertCellsAndShiftRight:
break;
case c_oAscInsertOptions.InsertRows:
count = updateRange.r2 - updateRange.r1 + 1;
if (updateRange.r1 <= obj.from.row) {
metrics.from.row += count;
metrics.to.row += count;
} else {
if ((updateRange.r1 > obj.from.row) && (updateRange.r1 <= obj.to.row)) {
metrics.to.row += count;
} else {
metrics = null;
}
}
break;
case c_oAscInsertOptions.InsertCellsAndShiftDown:
break;
}
} else {
switch (operType) {
case c_oAscDeleteOptions.DeleteColumns:
count = updateRange.c2 - updateRange.c1 + 1;
if (updateRange.c1 <= obj.from.col) {
if (updateRange.c2 < obj.from.col) {
metrics.from.col -= count;
metrics.to.col -= count;
} else {
metrics.from.col = updateRange.c1;
metrics.from.colOff = 0;
offset = 0;
if (obj.to.col - updateRange.c2 - 1 > 0) {
offset = obj.to.col - updateRange.c2 - 1;
} else {
offset = 1;
metrics.to.colOff = 0;
}
metrics.to.col = metrics.from.col + offset;
}
} else {
if ((updateRange.c1 > obj.from.col) && (updateRange.c1 <= obj.to.col)) {
if (updateRange.c2 >= obj.to.col) {
metrics.to.col = updateRange.c1;
metrics.to.colOff = 0;
} else {
metrics.to.col -= count;
}
} else {
metrics = null;
}
}
break;
case c_oAscDeleteOptions.DeleteCellsAndShiftLeft:
break;
case c_oAscDeleteOptions.DeleteRows:
count = updateRange.r2 - updateRange.r1 + 1;
if (updateRange.r1 <= obj.from.row) {
if (updateRange.r2 < obj.from.row) {
metrics.from.row -= count;
metrics.to.row -= count;
} else {
metrics.from.row = updateRange.r1;
metrics.from.colOff = 0;
offset = 0;
if (obj.to.row - updateRange.r2 - 1 > 0) {
offset = obj.to.row - updateRange.r2 - 1;
} else {
offset = 1;
metrics.to.colOff = 0;
}
metrics.to.row = metrics.from.row + offset;
}
} else {
if ((updateRange.r1 > obj.from.row) && (updateRange.r1 <= obj.to.row)) {
if (updateRange.r2 >= obj.to.row) {
metrics.to.row = updateRange.r1;
metrics.to.colOff = 0;
} else {
metrics.to.row -= count;
}
} else {
metrics = null;
}
}
break;
case c_oAscDeleteOptions.DeleteCellsAndShiftTop:
break;
}
}
if (metrics) {
if (metrics.from.col < 0) {
metrics.from.col = 0;
metrics.from.colOff = 0;
}
if (metrics.to.col <= 0) {
metrics.to.col = 1;
metrics.to.colOff = 0;
}
if (metrics.from.row < 0) {
metrics.from.row = 0;
metrics.from.rowOff = 0;
}
if (metrics.to.row <= 0) {
metrics.to.row = 1;
metrics.to.rowOff = 0;
}
if (metrics.from.col == metrics.to.col) {
metrics.to.col++;
metrics.to.colOff = 0;
}
if (metrics.from.row == metrics.to.row) {
metrics.to.row++;
metrics.to.rowOff = 0;
}
obj.from.col = metrics.from.col;
obj.from.colOff = metrics.from.colOff;
obj.from.row = metrics.from.row;
obj.from.rowOff = metrics.from.rowOff;
obj.to.col = metrics.to.col;
obj.to.colOff = metrics.to.colOff;
obj.to.row = metrics.to.row;
obj.to.rowOff = metrics.to.rowOff;
var coords = _this.coordsManager.calculateCoords(obj.from);
var rot = isRealNumber(obj.graphicObject.spPr.xfrm.rot) ? obj.graphicObject.spPr.xfrm.rot : 0;
rot = normalizeRotate(rot);
if (checkNormalRotate(rot)) {
obj.graphicObject.spPr.xfrm.setOffX(pxToMm(coords.x));
obj.graphicObject.spPr.xfrm.setOffY(pxToMm(coords.y));
} else {
obj.graphicObject.spPr.xfrm.setOffX(pxToMm(coords.x) - obj.graphicObject.spPr.xfrm.extX / 2 + obj.graphicObject.spPr.xfrm.extY / 2);
obj.graphicObject.spPr.xfrm.setOffY(pxToMm(coords.y) - obj.graphicObject.spPr.xfrm.extY / 2 + obj.graphicObject.spPr.xfrm.extX / 2);
}
obj.graphicObject.checkDrawingBaseCoords();
obj.graphicObject.recalculate();
bNeedRedraw = true;
}
}
bNeedRedraw && _this.showDrawingObjects(true);
};
_this.moveRangeDrawingObject = function (oBBoxFrom, oBBoxTo) {
if (oBBoxFrom && oBBoxTo) {
var selected_objects = _this.controller.selection.groupSelection ? _this.controller.selection.groupSelection.selectedObjects : _this.controller.selectedObjects;
var chart;
if (selected_objects.length === 1 && selected_objects[0].getObjectType() === historyitem_type_ChartSpace) {
chart = selected_objects[0];
}
var object_to_check = _this.controller.selection.groupSelection ? _this.controller.selection.groupSelection : chart;
if (chart && !(!chart.bbox || !chart.bbox.seriesBBox || oBBoxTo.isEqual(chart.bbox.seriesBBox))) {
var editChart = function (drawingObject) {
var options = new asc_ChartSettings();
var catHeadersBBox, serHeadersBBox;
var final_bbox = oBBoxTo.clone();
if (chart.bbox.seriesBBox.bVert) {
options.putInColumns(false);
if (chart.bbox.catBBox && chart.bbox.catBBox.r1 === chart.bbox.catBBox.r2 && oBBoxTo.r1 > chart.bbox.catBBox.r1) {
catHeadersBBox = {
r1: chart.bbox.catBBox.r1,
r2: chart.bbox.catBBox.r1,
c1: oBBoxTo.c1,
c2: oBBoxTo.c2
};
}
if (chart.bbox.serBBox && chart.bbox.serBBox && chart.bbox.serBBox.c1 === chart.bbox.serBBox.c2 && chart.bbox.serBBox.c1 < oBBoxTo.c1) {
serHeadersBBox = {
r1: oBBoxTo.r1,
r2: oBBoxTo.r2,
c1: chart.bbox.serBBox.c1,
c2: chart.bbox.serBBox.c2
};
}
} else {
options.putInColumns(true);
if (chart.bbox.catBBox && chart.bbox.catBBox.c1 === chart.bbox.catBBox.c2 && oBBoxTo.c1 > chart.bbox.catBBox.c1) {
catHeadersBBox = {
r1: oBBoxTo.r1,
r2: oBBoxTo.r2,
c1: chart.bbox.catBBox.c1,
c2: chart.bbox.catBBox.c2
};
}
if (chart.bbox.serBBox && chart.bbox.serBBox && chart.bbox.serBBox.r1 === chart.bbox.serBBox.r2 && chart.bbox.serBBox.r1 < oBBoxTo.r1) {
serHeadersBBox = {
r1: chart.bbox.serBBox.r1,
r2: chart.bbox.serBBox.r2,
c1: oBBoxTo.c1,
c2: oBBoxTo.c2
};
}
}
var startCell = new CellAddress(final_bbox.r1, final_bbox.c1, 0);
var endCell = new CellAddress(final_bbox.r2, final_bbox.c2, 0);
if (startCell && endCell) {
options.range = parserHelp.get3DRef(worksheet.model.sName, startCell.getID() === endCell.getID() ? startCell.getID() : startCell.getID() + ":" + endCell.getID());
}
var chartSeries = getChartSeries(worksheet.model, options, catHeadersBBox, serHeadersBBox);
drawingObject.rebuildSeriesFromAsc(chartSeries);
_this.controller.startRecalculate();
_this.sendGraphicObjectProps();
};
var callbackCheck = function (result) {
if (result) {
History.Create_NewPoint(historydescription_ChartDrawingObjects);
editChart(chart);
_this.showDrawingObjects(true);
} else {
_this.selectDrawingObjectRange(chart);
}
};
_this.objectLocker.reset();
_this.objectLocker.addObjectId(object_to_check.Get_Id());
_this.objectLocker.checkObjects(callbackCheck);
}
}
};
_this.calcChartInterval = function (chart) {
if (chart.range.intervalObject) {
chart.range.interval = _this.bboxToInterval(chart.range.intervalObject.getBBox0(), chart.range.intervalObject.worksheet.sName);
}
};
_this.bboxToInterval = function (box, wsName) {
var startCell = new CellAddress(box.r1, box.c1, 0);
var endCell = new CellAddress(box.r2, box.c2, 0);
if (startCell && endCell) {
return startCell.getID() === endCell.getID() ? startCell.getID() : parserHelp.get3DRef(wsName, startCell.getID() + ":" + endCell.getID());
}
return "";
};
_this.updateChartReferences = function (oldWorksheet, newWorksheet, bNoRedraw) {
ExecuteNoHistory(function () {
for (var i = 0; i < aObjects.length; i++) {
var graphicObject = aObjects[i].graphicObject;
if (graphicObject.updateChartReferences) {
graphicObject.updateChartReferences(oldWorksheet, newWorksheet);
}
}
},
this, []);
};
_this.updateChartReferences2 = function (oldWorksheet, newWorksheet) {
for (var i = 0; i < aObjects.length; i++) {
var graphicObject = aObjects[i].graphicObject;
if (graphicObject.updateChartReferences2) {
graphicObject.updateChartReferences2(oldWorksheet, newWorksheet);
}
}
};
_this.addGraphicObject = function (graphic, position, lockByDefault) {
worksheet.cleanSelection();
var drawingObject = _this.createDrawingObject();
drawingObject.graphicObject = graphic;
graphic.setDrawingBase(drawingObject);
var ret;
if (isRealNumber(position)) {
aObjects.splice(position, 0, drawingObject);
ret = position;
} else {
ret = aObjects.length;
aObjects.push(drawingObject);
}
if (lockByDefault) {
_this.objectLocker.reset();
_this.objectLocker.addObjectId(drawingObject.graphicObject.Id);
_this.objectLocker.checkObjects(function (result) {});
}
worksheet.setSelectionShape(true);
return ret;
};
_this.groupGraphicObjects = function () {
if (_this.controller.canGroup()) {
_this.controller.checkSelectedObjectsAndCallback(_this.controller.createGroup, [], false, historydescription_Spreadsheet_CreateGroup);
worksheet.setSelectionShape(true);
}
};
_this.unGroupGraphicObjects = function () {
if (_this.controller.canUnGroup()) {
_this.controller.unGroup();
worksheet.setSelectionShape(true);
api.isStartAddShape = false;
}
};
_this.insertUngroupedObjects = function (idGroup, aGraphics) {
if (idGroup && aGraphics.length) {
var i, aSingleObjects = [];
for (i = 0; i < aGraphics.length; i++) {
var obj = _this.createDrawingObject();
obj.graphicObject = aGraphics[i];
aGraphics[i].setDrawingBase(obj);
obj.graphicObject.select(_this.controller);
obj.setGraphicObjectCoords();
aSingleObjects.push(obj);
}
for (i = 0; i < aObjects.length; i++) {
if (idGroup == aObjects[i].graphicObject.Id) {
aObjects.splice(i, 1);
for (var j = aSingleObjects.length - 1; j > -1; j--) {
aObjects.splice(i, 0, aSingleObjects[j]);
}
_this.showDrawingObjects(true);
break;
}
}
}
};
_this.getDrawingBase = function (graphicId) {
for (var i = 0; i < aObjects.length; i++) {
if (aObjects[i].graphicObject.Id == graphicId) {
return aObjects[i];
}
}
return null;
};
_this.deleteDrawingBase = function (graphicId) {
var position = null;
var bRedraw = false;
for (var i = 0; i < aObjects.length; i++) {
if (aObjects[i].graphicObject.Id == graphicId) {
aObjects[i].graphicObject.deselect(_this.controller);
if (aObjects[i].isChart()) {
worksheet.arrActiveChartsRanges = [];
}
aObjects.splice(i, 1);
bRedraw = true;
position = i;
break;
}
}
return position;
};
_this.checkGraphicObjectPosition = function (x, y, w, h) {
var response = {
result: true,
x: 0,
y: 0
};
var bottom = worksheet.getCellTop(worksheet.rows.length - 1, 3) + worksheet.getRowHeight(worksheet.rows.length - 1, 3) - worksheet.getCellTop(0, 3);
var right = worksheet.getCellLeft(worksheet.cols.length - 1, 3) + worksheet.getColumnWidth(worksheet.cols.length - 1, 3) - worksheet.getCellLeft(0, 3);
if (y < 0) {
response.result = false;
response.y = Math.abs(y);
}
if (x < 0) {
response.result = false;
response.x = Math.abs(x);
}
if (x + w > right) {
var scrollX = scrollOffset.getX();
var foundCol = worksheet._findColUnderCursor(mmToPt(x + w) + scrollX, true);
while (foundCol == null) {
if (worksheet.isMaxCol()) {
var lastCol = worksheet.cols[worksheet.nColsCount - 1];
if (mmToPt(x + w) + scrollX > lastCol.left) {
response.result = false;
response.x = ptToMm(lastCol.left - (mmToPt(x + w) + scrollX));
}
break;
}
worksheet.expandColsOnScroll(true);
worksheet.handlers.trigger("reinitializeScrollX");
foundCol = worksheet._findColUnderCursor(mmToPt(x + w) + scrollX, true);
}
}
if (y + h > bottom) {
var scrollY = scrollOffset.getY();
var foundRow = worksheet._findRowUnderCursor(mmToPt(y + h) + scrollY, true);
while (foundRow == null) {
if (worksheet.isMaxRow()) {
var lastRow = worksheet.rows[worksheet.nRowsCount - 1];
if (mmToPt(y + h) + scrollY > lastRow.top) {
response.result = false;
response.y = ptToMm(lastRow.top - (mmToPt(y + h) + scrollY));
}
break;
}
worksheet.expandRowsOnScroll(true);
worksheet.handlers.trigger("reinitializeScrollY");
foundRow = worksheet._findRowUnderCursor(mmToPt(y + h) + scrollY, true);
}
}
return response;
};
_this.resetLockedGraphicObjects = function () {
for (var i = 0; i < aObjects.length; i++) {
aObjects[i].graphicObject.lockType = c_oAscLockTypes.kLockTypeNone;
}
};
_this.tryResetLockedGraphicObject = function (id) {
var bObjectFound = false;
for (var i = 0; i < aObjects.length; i++) {
if (aObjects[i].graphicObject.Id == id) {
aObjects[i].graphicObject.lockType = c_oAscLockTypes.kLockTypeNone;
bObjectFound = true;
break;
}
}
return bObjectFound;
};
_this.getDrawingCanvas = function () {
return {
shapeCtx: shapeCtx,
shapeOverlayCtx: shapeOverlayCtx,
autoShapeTrack: autoShapeTrack,
trackOverlay: trackOverlay
};
};
_this.convertMetric = function (val, from, to) {
return val * ascCvtRatio(from, to);
};
_this.convertPixToMM = function (pix) {
return _this.convertMetric(pix, 0, 3);
};
_this.getSelectedGraphicObjects = function () {
return _this.controller.selectedObjects;
};
_this.selectedGraphicObjectsExists = function () {
return _this.controller && _this.controller.selectedObjects.length > 0;
};
_this.loadImageRedraw = function (imageUrl) {
var _image = api.ImageLoader.LoadImage(imageUrl, 1);
if (null != _image) {
imageLoaded(_image);
} else {
_this.asyncImageEndLoaded = function (_image) {
imageLoaded(_image);
_this.asyncImageEndLoaded = null;
};
}
function imageLoaded(_image) {
if (!_image.Image) {
worksheet.model.workbook.handlers.trigger("asc_onError", c_oAscError.ID.UplImageUrl, c_oAscError.Level.NoCritical);
} else {
_this.showDrawingObjects(true);
}
}
};
_this.getOriginalImageSize = function () {
var selectedObjects = _this.controller.selectedObjects;
if ((selectedObjects.length == 1) && selectedObjects[0].isImage()) {
var imageUrl = selectedObjects[0].getImageUrl();
var _image = api.ImageLoader.map_image_index[getFullImageSrc(imageUrl)];
if (_image != undefined && _image.Image != null && _image.Status == ImageLoadStatus.Complete) {
var _w = 1,
_h = 1;
var bIsCorrect = false;
if (_image.Image != null) {
bIsCorrect = true;
_w = Math.max(pxToMm(_image.Image.width), 1);
_h = Math.max(pxToMm(_image.Image.height), 1);
}
return new asc_CImageSize(_w, _h, bIsCorrect);
}
}
return new asc_CImageSize(50, 50, false);
};
_this.sendGraphicObjectProps = function () {
if (worksheet) {
worksheet.handlers.trigger("selectionChanged", worksheet.getSelectionInfo());
}
};
_this.setGraphicObjectProps = function (props) {
var objectProperties = props;
var _img;
if (!isNullOrEmptyString(objectProperties.ImageUrl)) {
_img = api.ImageLoader.LoadImage(objectProperties.ImageUrl, 1);
if (null != _img) {
_this.controller.setGraphicObjectProps(objectProperties);
} else {
_this.asyncImageEndLoaded = function (_image) {
_this.controller.setGraphicObjectProps(objectProperties);
_this.asyncImageEndLoaded = null;
};
}
} else {
if (objectProperties.ShapeProperties && objectProperties.ShapeProperties.fill && objectProperties.ShapeProperties.fill.fill && !isNullOrEmptyString(objectProperties.ShapeProperties.fill.fill.url)) {
_img = api.ImageLoader.LoadImage(objectProperties.ShapeProperties.fill.fill.url, 1);
if (null != _img) {
_this.controller.setGraphicObjectProps(objectProperties);
} else {
_this.asyncImageEndLoaded = function (_image) {
_this.controller.setGraphicObjectProps(objectProperties);
_this.asyncImageEndLoaded = null;
};
}
} else {
objectProperties.ImageUrl = null;
_this.controller.setGraphicObjectProps(objectProperties);
}
}
_this.sendGraphicObjectProps();
};
_this.showChartSettings = function () {
api.wb.handlers.trigger("asc_onShowChartDialog", true);
};
_this.setDrawImagePlaceParagraph = function (element_id, props) {
_this.drawingDocument.InitGuiCanvasTextProps(element_id);
_this.drawingDocument.DrawGuiCanvasTextProps(props);
};
_this.graphicObjectMouseDown = function (e, x, y) {
var offsets = _this.drawingArea.getOffsets(x, y, true);
if (offsets) {
_this.controller.onMouseDown(e, pxToMm(x - offsets.x), pxToMm(y - offsets.y));
}
};
_this.graphicObjectMouseMove = function (e, x, y) {
e.IsLocked = e.isLocked;
var offsets = _this.drawingArea.getOffsets(x, y, true);
if (offsets) {
_this.controller.onMouseMove(e, pxToMm(x - offsets.x), pxToMm(y - offsets.y));
}
};
_this.graphicObjectMouseUp = function (e, x, y) {
var offsets = _this.drawingArea.getOffsets(x, y, true);
if (offsets) {
_this.controller.onMouseUp(e, pxToMm(x - offsets.x), pxToMm(y - offsets.y));
}
};
_this.graphicObjectKeyDown = function (e) {
return _this.controller.onKeyDown(e);
};
_this.graphicObjectKeyPress = function (e) {
e.KeyCode = e.keyCode;
e.CtrlKey = e.metaKey || e.ctrlKey;
e.AltKey = e.altKey;
e.ShiftKey = e.shiftKey;
e.Which = e.which;
return _this.controller.onKeyPress(e);
};
_this.cleanWorksheet = function () {
for (var i = 0; i < aObjects.length; i++) {
aObjects[i].graphicObject.deleteDrawingBase();
}
worksheet._clean();
var listRange = new Range(worksheet.model, 0, 0, worksheet.nRowsCount - 1, worksheet.nColsCount - 1);
listRange.cleanAll();
_this.controller.resetSelection();
shapeCtx.m_oContext.clearRect(0, 0, shapeCtx.m_lWidthPix, shapeCtx.m_lHeightPix);
shapeOverlayCtx.m_oContext.clearRect(0, 0, shapeOverlayCtx.m_lWidthPix, shapeOverlayCtx.m_lHeightPix);
_this.OnUpdateOverlay();
History.Clear();
};
_this.getWordChartObject = function () {
for (var i = 0; i < aObjects.length; i++) {
var drawingObject = aObjects[i];
if (drawingObject.isChart()) {
var chart = new asc_CChartBinary(drawingObject.graphicObject);
_this.cleanWorksheet();
return chart;
}
}
return null;
};
_this.getAscChartObject = function () {
var settings;
if (api.isChartEditor) {
return _this.controller.getPropsFromChart(aObjects[0].graphicObject);
}
settings = _this.controller.getChartProps();
if (!settings) {
settings = new asc_ChartSettings();
var selectedRange = worksheet.getSelectedRange();
if (selectedRange) {
var box = selectedRange.getBBox0();
settings.putInColumns(!(box.r2 - box.r1 < box.c2 - box.c1));
}
settings.putRange(worksheet.getSelectionRangeValue());
settings.putStyle(2);
settings.putType(c_oAscChartTypeSettings.lineNormal);
settings.putTitle(c_oAscChartTitleShowSettings.noOverlay);
settings.putLegendPos(c_oAscChartLegendShowSettings.right);
settings.putHorAxisLabel(c_oAscChartHorAxisLabelShowSettings.none);
settings.putVertAxisLabel(c_oAscChartVertAxisLabelShowSettings.none);
settings.putDataLabelsPos(c_oAscChartDataLabelsPos.none);
settings.putHorGridLines(c_oAscGridLinesSettings.major);
settings.putVertGridLines(c_oAscGridLinesSettings.none);
settings.putInColumns(false);
settings.putSeparator(",");
settings.putLine(true);
settings.putShowMarker(false);
var vert_axis_settings = new asc_ValAxisSettings();
settings.putVertAxisProps(vert_axis_settings);
vert_axis_settings.setDefault();
var hor_axis_settings = new asc_CatAxisSettings();
settings.putHorAxisProps(hor_axis_settings);
hor_axis_settings.setDefault();
}
return settings;
};
_this.selectDrawingObjectRange = function (drawing) {
worksheet.cleanSelection();
worksheet.arrActiveChartsRanges = [];
if (!drawing.bbox || drawing.bbox.worksheet !== worksheet.model) {
return;
}
var stroke_color, fill_color;
if (drawing.bbox.serBBox) {
stroke_color = fill_color = new CColor(0, 128, 0);
worksheet._drawElements(worksheet, worksheet._drawSelectionElement, asc.Range(drawing.bbox.serBBox.c1, drawing.bbox.serBBox.r1, drawing.bbox.serBBox.c2, drawing.bbox.serBBox.r2, true), false, 1, stroke_color, fill_color);
}
if (drawing.bbox.catBBox) {
stroke_color = fill_color = new CColor(153, 0, 204);
worksheet._drawElements(worksheet, worksheet._drawSelectionElement, asc.Range(drawing.bbox.catBBox.c1, drawing.bbox.catBBox.r1, drawing.bbox.catBBox.c2, drawing.bbox.catBBox.r2, true), false, 1, stroke_color, fill_color);
}
var BB = drawing.bbox.seriesBBox;
var range = asc.Range(BB.c1, BB.r1, BB.c2, BB.r2, true);
worksheet.arrActiveChartsRanges.push(range);
worksheet.isChartAreaEditMode = true;
worksheet._drawSelection();
};
_this.unselectDrawingObjects = function () {
if (worksheet.isChartAreaEditMode) {
worksheet.isChartAreaEditMode = false;
worksheet.arrActiveChartsRanges = [];
}
_this.controller.resetSelectionState();
_this.OnUpdateOverlay();
};
_this.getDrawingObject = function (id) {
for (var i = 0; i < aObjects.length; i++) {
if (aObjects[i].graphicObject.Id == id) {
return aObjects[i];
}
}
return null;
};
_this.getGraphicSelectionType = function (id) {
var selected_objects, selection, controller = _this.controller;
if (controller.selection.groupSelection) {
selected_objects = controller.selection.groupSelection.selectedObjects;
selection = controller.selection.groupSelection.selection;
} else {
selected_objects = controller.selectedObjects;
selection = controller.selection;
}
if (selection.chartSelection && selection.chartSelection.selection.textSelection) {
return c_oAscSelectionType.RangeChartText;
}
if (selection.textSelection) {
return c_oAscSelectionType.RangeShapeText;
}
if (selected_objects[0]) {
if (selected_objects[0].getObjectType() === historyitem_type_ChartSpace && selected_objects.length === 1) {
return c_oAscSelectionType.RangeChart;
}
if (selected_objects[0].getObjectType() === historyitem_type_ImageShape) {
return c_oAscSelectionType.RangeImage;
}
return c_oAscSelectionType.RangeShape;
}
return undefined;
};
_this.setGraphicObjectLayer = function (layerType) {
_this.controller.setGraphicObjectLayer(layerType);
};
_this.saveSizeDrawingObjects = function () {
for (var i = 0; i < aObjects.length; i++) {
var obj = aObjects[i];
obj.size.width = obj.getWidthFromTo();
obj.size.height = obj.getHeightFromTo();
}
};
_this.updateSizeDrawingObjects = function (target) {
if (History.TurnOffHistory > 0) {
return;
}
var i, bNeedRecalc = false,
drawingObject, coords;
if (target.target === c_oTargetType.RowResize) {
for (i = 0; i < aObjects.length; i++) {
drawingObject = aObjects[i];
if (drawingObject.from.row >= target.row) {
coords = _this.coordsManager.calculateCoords(drawingObject.from);
CheckSpPrXfrm(drawingObject.graphicObject);
var rot = isRealNumber(drawingObject.graphicObject.spPr.xfrm.rot) ? drawingObject.graphicObject.spPr.xfrm.rot : 0;
rot = normalizeRotate(rot);
if (checkNormalRotate(rot)) {
drawingObject.graphicObject.spPr.xfrm.setOffX(pxToMm(coords.x));
drawingObject.graphicObject.spPr.xfrm.setOffY(pxToMm(coords.y));
} else {
drawingObject.graphicObject.spPr.xfrm.setOffX(pxToMm(coords.x) - drawingObject.graphicObject.spPr.xfrm.extX / 2 + drawingObject.graphicObject.spPr.xfrm.extY / 2);
drawingObject.graphicObject.spPr.xfrm.setOffY(pxToMm(coords.y) - drawingObject.graphicObject.spPr.xfrm.extY / 2 + drawingObject.graphicObject.spPr.xfrm.extX / 2);
}
drawingObject.graphicObject.checkDrawingBaseCoords();
bNeedRecalc = true;
}
}
} else {
for (i = 0; i < aObjects.length; i++) {
drawingObject = aObjects[i];
if (drawingObject.from.col >= target.col) {
coords = _this.coordsManager.calculateCoords(drawingObject.from);
CheckSpPrXfrm(drawingObject.graphicObject);
var rot = isRealNumber(drawingObject.graphicObject.spPr.xfrm.rot) ? drawingObject.graphicObject.spPr.xfrm.rot : 0;
rot = normalizeRotate(rot);
if (checkNormalRotate(rot)) {
drawingObject.graphicObject.spPr.xfrm.setOffX(pxToMm(coords.x));
drawingObject.graphicObject.spPr.xfrm.setOffY(pxToMm(coords.y));
} else {
drawingObject.graphicObject.spPr.xfrm.setOffX(pxToMm(coords.x) - drawingObject.graphicObject.spPr.xfrm.extX / 2 + drawingObject.graphicObject.spPr.xfrm.extY / 2);
drawingObject.graphicObject.spPr.xfrm.setOffY(pxToMm(coords.y) - drawingObject.graphicObject.spPr.xfrm.extY / 2 + drawingObject.graphicObject.spPr.xfrm.extX / 2);
}
drawingObject.graphicObject.checkDrawingBaseCoords();
bNeedRecalc = true;
}
}
}
if (bNeedRecalc) {
_this.controller.recalculate2();
_this.showDrawingObjects(true);
}
};
_this.checkCursorDrawingObject = function (x, y) {
var offsets = _this.drawingArea.getOffsets(x, y);
if (offsets) {
var objectInfo = {
cursor: null,
id: null,
object: null
};
var graphicObjectInfo = _this.controller.isPointInDrawingObjects(pxToMm(x - offsets.x), pxToMm(y - offsets.y));
if (graphicObjectInfo && graphicObjectInfo.objectId) {
objectInfo.id = graphicObjectInfo.objectId;
objectInfo.object = _this.getDrawingBase(graphicObjectInfo.objectId);
objectInfo.cursor = graphicObjectInfo.cursorType;
objectInfo.hyperlink = graphicObjectInfo.hyperlink;
return objectInfo;
}
}
return null;
};
_this.getPositionInfo = function (x, y) {
var info = new CCellObjectInfo();
var tmp = worksheet._findColUnderCursor(pxToPt(x), true);
if (tmp) {
info.col = tmp.col;
info.colOff = pxToMm(x - worksheet.getCellLeft(info.col, 0));
}
tmp = worksheet._findRowUnderCursor(pxToPt(y), true);
if (tmp) {
info.row = tmp.row;
info.rowOff = pxToMm(y - worksheet.getCellTop(info.row, 0));
}
return info;
};
_this.showImageFileDialog = function (documentId, documentFormat) {
if (_this.isViewerMode()) {
return;
}
var frameWindow = GetUploadIFrame();
var content = '<html><head></head><body><form action="' + g_sUploadServiceLocalUrl + "?sheetId=" + worksheet.model.getId() + "&key=" + documentId + '" method="POST" enctype="multipart/form-data"><input id="apiiuFile" name="apiiuFile" type="file" accept="image/*" size="1"><input id="apiiuSubmit" name="apiiuSubmit" type="submit" style="display:none;"></form></body></html>';
frameWindow.document.open();
frameWindow.document.write(content);
frameWindow.document.close();
var fileName = frameWindow.document.getElementById("apiiuFile");
var fileSubmit = frameWindow.document.getElementById("apiiuSubmit");
fileName.onchange = function (e) {
var bNeedSubmit = true;
if (e && e.target && e.target.files) {
var nError = ValidateUploadImage(e.target.files);
if (c_oAscServerError.NoError != nError) {
bNeedSubmit = false;
worksheet.model.workbook.handlers.trigger("asc_onError", api.asc_mapAscServerErrorToAscError(nError), c_oAscError.Level.NoCritical);
}
}
if (bNeedSubmit) {
worksheet.model.workbook.handlers.trigger("asc_onStartAction", c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadImage);
fileSubmit.click();
}
};
if (AscBrowser.isOpera) {
setTimeout(function () {
fileName.click();
},
0);
} else {
fileName.click();
}
};
function ascCvtRatio(fromUnits, toUnits) {
return asc.getCvtRatio(fromUnits, toUnits, drawingCtx.getPPIX());
}
function setCanvasZIndex(canvas, value) {
if (canvas && (value >= 0) && (value <= 1)) {
canvas.globalAlpha = value;
}
}
function emuToPx(emu) {
return emu * 20 * 96 / 2.54 / 72 / 100 / 1000;
}
function pxToEmu(px) {
return px * 2.54 * 72 * 100 * 1000 / 20 / 96;
}
function pxToPt(val) {
return val * ascCvtRatio(0, 1);
}
function ptToPx(val) {
return val * ascCvtRatio(1, 0);
}
function ptToMm(val) {
return val * ascCvtRatio(1, 3);
}
function mmToPx(val) {
return val * ascCvtRatio(3, 0);
}
function mmToPt(val) {
return val * ascCvtRatio(3, 1);
}
function pxToMm(val) {
return val * ascCvtRatio(0, 3);
}
}
function ObjectLocker(ws) {
var asc = window["Asc"];
var asc_applyFunction = asc.applyFunction;
var _t = this;
_t.bLock = true;
var aObjectId = [];
var worksheet = ws;
_t.reset = function () {
_t.bLock = true;
aObjectId = [];
};
_t.addObjectId = function (id) {
aObjectId.push(id);
};
_t.checkObjects = function (callback) {
function callbackEx(result, sync) {
if (callback) {
callback(result, sync);
}
}
if (!aObjectId.length || (false === worksheet.collaborativeEditing.isCoAuthoringExcellEnable())) {
asc_applyFunction(callbackEx, true, true);
return;
}
var sheetId = worksheet.model.getId();
worksheet.collaborativeEditing.onStartCheckLock();
for (var i = 0; i < aObjectId.length; i++) {
var lockInfo = worksheet.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, null, sheetId, aObjectId[i]);
if (false === worksheet.collaborativeEditing.getCollaborativeEditing()) {
asc_applyFunction(callbackEx, true, true);
callback = undefined;
}
if (false !== worksheet.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeMine)) {
continue;
} else {
if (false !== worksheet.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeOther)) {
asc_applyFunction(callbackEx, false);
return;
}
}
if (_t.bLock) {
worksheet.collaborativeEditing.addCheckLock(lockInfo);
}
}
if (_t.bLock) {
worksheet.collaborativeEditing.onEndCheckLock(callbackEx);
} else {
asc_applyFunction(callbackEx, true, true);
}
};
}
function ClickCounter() {
var _this = this;
_this.x = 0;
_this.y = 0;
_this.button = 0;
_this.time = 0;
_this.clickCount = 0;
_this.log = false;
_this.mouseDownEvent = function (x, y, button) {
var currTime = getCurrentTime();
if ((_this.button === button) && (_this.x === x) && (_this.y === y) && (currTime - _this.time < 500)) {
_this.clickCount = _this.clickCount + 1;
_this.clickCount = Math.min(_this.clickCount, 3);
} else {
_this.clickCount = 1;
}
if (_this.log) {
console.log("-----");
console.log("x-> " + _this.x + " : " + x);
console.log("y-> " + _this.y + " : " + y);
console.log("Time: " + (currTime - _this.time));
console.log("Count: " + _this.clickCount);
console.log("");
}
_this.time = currTime;
};
_this.mouseMoveEvent = function (x, y) {
if ((_this.x != x) || (_this.y != y)) {
_this.x = x;
_this.y = y;
_this.clickCount = 0;
if (_this.log) {
console.log("Reset counter");
}
}
};
_this.getClickCount = function () {
return _this.clickCount;
};
}
function CoordsManager(ws) {
var _t = this;
var worksheet = ws;
_t.calculateCell = function (x, y) {
var cell = new CCellObjectInfo();
var _x = x + worksheet.getCellLeft(0, 0);
var _y = y + worksheet.getCellTop(0, 0);
var xPt = worksheet.objectRender.convertMetric(_x, 0, 1);
var yPt = worksheet.objectRender.convertMetric(_y, 0, 1);
var offsetX = worksheet.cols[worksheet.getFirstVisibleCol(true)].left - worksheet.cellsLeft;
var offsetY = worksheet.rows[worksheet.getFirstVisibleRow(true)].top - worksheet.cellsTop;
function isMaxCol() {
var result = false;
if (worksheet.cols.length >= gc_nMaxCol) {
result = true;
}
return result;
}
function isMaxRow() {
var result = false;
if (worksheet.rows.length >= gc_nMaxRow) {
result = true;
}
return result;
}
var delta = 0;
var what = roundPlus(xPt - offsetX, 3);
var col = worksheet._findColUnderCursor(what, true);
while (col == null) {
if (isMaxCol()) {
col = worksheet._findColUnderCursor(worksheet.cols[gc_nMaxCol - 1].left - 1, true);
break;
}
worksheet.expandColsOnScroll(true);
worksheet.handlers.trigger("reinitializeScrollX");
col = worksheet._findColUnderCursor(what + delta, true);
if (what < 0) {
delta++;
}
}
cell.col = col.col;
cell.colOffPx = Math.max(0, _x - worksheet.getCellLeft(cell.col, 0));
cell.colOff = worksheet.objectRender.convertMetric(cell.colOffPx, 0, 3);
delta = 0;
what = roundPlus(yPt - offsetY, 3);
var row = worksheet._findRowUnderCursor(what, true);
while (row == null) {
if (isMaxRow()) {
row = worksheet._findRowUnderCursor(worksheet.rows[gc_nMaxRow - 1].top - 1, true);
break;
}
worksheet.expandRowsOnScroll(true);
worksheet.handlers.trigger("reinitializeScrollY");
row = worksheet._findRowUnderCursor(what + delta, true);
if (what < 0) {
delta++;
}
}
cell.row = row.row;
cell.rowOffPx = Math.max(0, _y - worksheet.getCellTop(cell.row, 0));
cell.rowOff = worksheet.objectRender.convertMetric(cell.rowOffPx, 0, 3);
return cell;
};
_t.calculateCoords = function (cell) {
var coords = {
x: 0,
y: 0
};
if (cell) {
var rowHeight = worksheet.getRowHeight(cell.row, 3);
var colWidth = worksheet.getColumnWidth(cell.col, 3);
var resultRowOff = cell.rowOff > rowHeight ? rowHeight : cell.rowOff;
var resultColOff = cell.colOff > colWidth ? colWidth : cell.colOff;
coords.y = worksheet.getCellTop(cell.row, 0) + worksheet.objectRender.convertMetric(resultRowOff, 3, 0) - worksheet.getCellTop(0, 0);
coords.x = worksheet.getCellLeft(cell.col, 0) + worksheet.objectRender.convertMetric(resultColOff, 3, 0) - worksheet.getCellLeft(0, 0);
}
return coords;
};
}
var CARD_DIRECTION_N = 0;
var CARD_DIRECTION_NE = 1;
var CARD_DIRECTION_E = 2;
var CARD_DIRECTION_SE = 3;
var CARD_DIRECTION_S = 4;
var CARD_DIRECTION_SW = 5;
var CARD_DIRECTION_W = 6;
var CARD_DIRECTION_NW = 7;
var CURSOR_TYPES_BY_CARD_DIRECTION = [];
CURSOR_TYPES_BY_CARD_DIRECTION[CARD_DIRECTION_N] = "n-resize";
CURSOR_TYPES_BY_CARD_DIRECTION[CARD_DIRECTION_NE] = "ne-resize";
CURSOR_TYPES_BY_CARD_DIRECTION[CARD_DIRECTION_E] = "e-resize";
CURSOR_TYPES_BY_CARD_DIRECTION[CARD_DIRECTION_SE] = "se-resize";
CURSOR_TYPES_BY_CARD_DIRECTION[CARD_DIRECTION_S] = "s-resize";
CURSOR_TYPES_BY_CARD_DIRECTION[CARD_DIRECTION_SW] = "sw-resize";
CURSOR_TYPES_BY_CARD_DIRECTION[CARD_DIRECTION_W] = "w-resize";
CURSOR_TYPES_BY_CARD_DIRECTION[CARD_DIRECTION_NW] = "nw-resize";