3561 lines
150 KiB
JavaScript
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"; |