Files
DocumentServer-v-9.2.0/sdkjs/common/Charts/charts.js
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

1389 lines
45 KiB
JavaScript

/*
* (c) Copyright Ascensio System SIA 2010-2024
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(
/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined) {
// Import
var CreateNoFillLine = AscFormat.CreateNoFillLine;
var CreateNoFillUniFill = AscFormat.CreateNoFillUniFill;
var c_oAscChartTypeSettings = Asc.c_oAscChartTypeSettings;
var c_oAscTickMark = Asc.c_oAscTickMark;
var c_oAscTickLabelsPos = Asc.c_oAscTickLabelsPos;
var fChartSize = 75;
function ChartPreviewManager() {
AscCommon.CActionOnTimerBase.call(this);
this.previewGroups = [];
this.chartsByTypes = [];
this.CHART_PREVIEW_WIDTH_PIX = 50;
this.CHART_PREVIEW_HEIGHT_PIX = 50;
this._canvas_charts = null;
this.FirstActionOnTimer = true;
this.Index = -1;
this.ChartType = -1;
this.StylesIndexes = [];
this.Buffer = [];
}
ChartPreviewManager.prototype = Object.create(AscCommon.CActionOnTimerBase.prototype);
ChartPreviewManager.prototype.constructor = ChartPreviewManager;
ChartPreviewManager.prototype.GetApi = function() {
return Asc.editor || editor;
};
ChartPreviewManager.prototype.OnBegin = function(nChartType, arrId) {
var aStyles = AscCommon.g_oChartStyles[nChartType];
if(!Array.isArray(aStyles)) {
this.GetApi().sendEvent("asc_onBeginChartStylesPreview", 0);
return;
}
this.ChartType = nChartType;
this.Index = 0;
var nStyle;
this.StylesIndexes.length = 0;
if(!Array.isArray(arrId)) {
for(nStyle = 0; nStyle < aStyles.length; ++nStyle) {
this.StylesIndexes.push(nStyle);
}
}
else {
var nId;
for(nId = 0; nId < arrId.length; ++nId) {
this.StylesIndexes.push(arrId[nId] - 1);
}
for(nStyle = 0; nStyle < aStyles.length; ++nStyle) {
for(nId = 0; nId < arrId.length; ++nId) {
if(nStyle === (arrId[nId] - 1)) {
break;
}
}
if(nId === arrId.length) {
this.StylesIndexes.push(nStyle);
}
}
}
this.GetApi().sendEvent("asc_onBeginChartStylesPreview", aStyles.length);
};
ChartPreviewManager.prototype.OnEnd = function() {
this.GetApi().sendEvent("asc_onEndChartStylesPreview");
};
ChartPreviewManager.prototype.IsContinue = function() {
return (this.Index < this.StylesIndexes.length);
};
ChartPreviewManager.prototype.DoAction = function() {
let aStyles = AscCommon.g_oChartStyles[this.ChartType];
if(aStyles) {
var oStyle = aStyles[this.StylesIndexes[this.Index]]
if(oStyle) {
let graphics = this._getGraphics();
this.createChartPreview(graphics, this.ChartType, oStyle);
let oPreview = new AscCommon.CStyleImage();
oPreview.name = this.StylesIndexes[this.Index] + 1;
oPreview.image = this._canvas_charts.toDataURL("image/png");
this.Buffer.push(oPreview);
}
}
this.Index++;
};
ChartPreviewManager.prototype.OnEndTimer = function() {
this.GetApi().sendEvent("asc_onAddChartStylesPreview", this.Buffer);
this.Buffer = [];
};
ChartPreviewManager.prototype.getAscChartSeriesDefault = function(type) {
function createItem(value) {
return { numFormatStr: "General", isDateTimeFormat: false, val: value, isHidden: false };
}
// Set data
var series = [], ser;
switch(type)
{
case c_oAscChartTypeSettings.lineNormal:
case c_oAscChartTypeSettings.lineNormalMarker:
case c_oAscChartTypeSettings.scatterLine:
case c_oAscChartTypeSettings.scatterLineMarker:
case c_oAscChartTypeSettings.scatterSmooth:
case c_oAscChartTypeSettings.scatterSmoothMarker:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(2), createItem(3), createItem(2), createItem(3) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1), createItem(2), createItem(3), createItem(2) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.line3d:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1), createItem(2), createItem(1), createItem(2) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(3), createItem(2.5), createItem(3), createItem(3.5) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.lineStacked:
case c_oAscChartTypeSettings.lineStackedMarker:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1), createItem(6), createItem(2), createItem(8) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(4), createItem(4), createItem(4), createItem(5) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.lineStackedPer:
case c_oAscChartTypeSettings.lineStackedPerMarker:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(2), createItem(4), createItem(2), createItem(4) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(2), createItem(2), createItem(2), createItem(2) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.hBarNormal:
case c_oAscChartTypeSettings.hBarNormal3d:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(4) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(3) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(2) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.hBarStacked:
case c_oAscChartTypeSettings.hBarStacked3d:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(4), createItem(3), createItem(2), createItem(1) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(5), createItem(4), createItem(3), createItem(2) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.hBarStackedPer:
case c_oAscChartTypeSettings.hBarStackedPer3d:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(7), createItem(5), createItem(3), createItem(1) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(7), createItem(6), createItem(5), createItem(4) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.barNormal:
case c_oAscChartTypeSettings.barNormal3d:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(2) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(3) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(4) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.barStacked:
case c_oAscChartTypeSettings.barStacked3d:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1), createItem(2), createItem(3), createItem(4) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(2), createItem(3), createItem(4), createItem(5) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.barStackedPer:
case c_oAscChartTypeSettings.barStackedPer3d:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1), createItem(3), createItem(5), createItem(7) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(4), createItem(5), createItem(6), createItem(7) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.barNormal3dPerspective:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1), createItem(2), createItem(3), createItem(4) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(2), createItem(3), createItem(4), createItem(5) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.pie:
case c_oAscChartTypeSettings.doughnut:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(3), createItem(1) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.areaNormal:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(0), createItem(8), createItem(5), createItem(6) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(0), createItem(4), createItem(2), createItem(9) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.areaStacked:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(0), createItem(8), createItem(5), createItem(11) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(4), createItem(4), createItem(4), createItem(4) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.areaStackedPer:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(0), createItem(4), createItem(1), createItem(16) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(4), createItem(4), createItem(4), createItem(4) ];
series.push(ser);
break;
}
case c_oAscChartTypeSettings.scatter:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1), createItem(5) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(2), createItem(6) ];
series.push(ser);
break;
}
default:
{
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(3), createItem(5), createItem(7) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(10), createItem(12), createItem(14) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(1), createItem(3), createItem(5) ];
series.push(ser);
ser = new AscFormat.asc_CChartSeria();
ser.Val.NumCache = [ createItem(8), createItem(10), createItem(12) ];
series.push(ser);
break;
}
}
return series;
};
ChartPreviewManager.prototype.getChartByType = function(type)
{
return AscFormat.ExecuteNoHistory(function()
{
var settings = new Asc.asc_ChartSettings();
settings.type = type;
var chartSeries = this.getAscChartSeriesDefault(type);
var chart_space = AscFormat.DrawingObjectsController.prototype._getChartSpace(chartSeries, settings, true);
chart_space.bPreview = true;
if (Asc['editor'] && AscCommon.c_oEditorId.Spreadsheet === Asc['editor'].getEditorId()) {
var api_sheet = Asc['editor'];
chart_space.setWorksheet(api_sheet.wb.getWorksheet().model);
} else {
if (editor && editor.WordControl && editor.WordControl.m_oLogicDocument.Slides &&
editor.WordControl.m_oLogicDocument.Slides[editor.WordControl.m_oLogicDocument.CurPage]) {
chart_space.setParent(editor.WordControl.m_oLogicDocument.Slides[editor.WordControl.m_oLogicDocument.CurPage]);
}
}
AscFormat.CheckSpPrXfrm(chart_space);
chart_space.spPr.xfrm.setOffX(0);
chart_space.spPr.xfrm.setOffY(0);
chart_space.spPr.xfrm.setExtX(fChartSize);
chart_space.spPr.xfrm.setExtY(fChartSize);
settings.putTitle(Asc.c_oAscChartTitleShowSettings.noOverlay);
var val_ax_props = new AscCommon.asc_ValAxisSettings();
val_ax_props.putMinValRule(Asc.c_oAscValAxisRule.auto);
val_ax_props.putMaxValRule(Asc.c_oAscValAxisRule.auto);
val_ax_props.putTickLabelsPos(c_oAscTickLabelsPos.TICK_LABEL_POSITION_NEXT_TO);
val_ax_props.putInvertValOrder(false);
val_ax_props.putDispUnitsRule(Asc.c_oAscValAxUnits.none);
val_ax_props.putMajorTickMark(c_oAscTickMark.TICK_MARK_NONE);
val_ax_props.putMinorTickMark(c_oAscTickMark.TICK_MARK_NONE);
val_ax_props.putCrossesRule(Asc.c_oAscCrossesRule.auto);
var cat_ax_props = new AscCommon.asc_CatAxisSettings();
cat_ax_props.putIntervalBetweenLabelsRule(Asc.c_oAscBetweenLabelsRule.auto);
cat_ax_props.putLabelsPosition(Asc.c_oAscLabelsPosition.betweenDivisions);
cat_ax_props.putTickLabelsPos(c_oAscTickLabelsPos.TICK_LABEL_POSITION_NEXT_TO);
cat_ax_props.putLabelsAxisDistance(100);
cat_ax_props.putMajorTickMark(c_oAscTickMark.TICK_MARK_NONE);
cat_ax_props.putMinorTickMark(c_oAscTickMark.TICK_MARK_NONE);
cat_ax_props.putIntervalBetweenTick(1);
cat_ax_props.putCrossesRule(Asc.c_oAscCrossesRule.auto);
var vert_axis_settings, hor_axis_settings, isScatter;
switch(type)
{
case c_oAscChartTypeSettings.hBarNormal:
case c_oAscChartTypeSettings.hBarStacked:
case c_oAscChartTypeSettings.hBarStackedPer:
{
vert_axis_settings = cat_ax_props;
hor_axis_settings = val_ax_props;
break;
}
case c_oAscChartTypeSettings.scatter:
case c_oAscChartTypeSettings.scatterLine:
case c_oAscChartTypeSettings.scatterLineMarker:
case c_oAscChartTypeSettings.scatterMarker:
case c_oAscChartTypeSettings.scatterNone:
case c_oAscChartTypeSettings.scatterSmooth:
case c_oAscChartTypeSettings.scatterSmoothMarker:
{
vert_axis_settings = val_ax_props;
hor_axis_settings = val_ax_props;
isScatter = true;
break;
}
case c_oAscChartTypeSettings.areaNormal:
case c_oAscChartTypeSettings.areaStacked:
case c_oAscChartTypeSettings.areaStackedPer:
{
cat_ax_props.putLabelsPosition(AscFormat.CROSS_BETWEEN_BETWEEN);
vert_axis_settings = val_ax_props;
hor_axis_settings = cat_ax_props;
break;
}
default :
{
vert_axis_settings = val_ax_props;
hor_axis_settings = cat_ax_props;
break;
}
}
settings.addVertAxesProps(vert_axis_settings);
settings.addHorAxesProps(hor_axis_settings);
AscFormat.DrawingObjectsController.prototype.applyPropsToChartSpace(settings, chart_space);
chart_space.setBDeleted(false);
chart_space.updateLinks();
if(!(isScatter || type === c_oAscChartTypeSettings.stock))
{
if(chart_space.chart.plotArea.valAx)
chart_space.chart.plotArea.valAx.setDelete(true);
if(chart_space.chart.plotArea.catAx)
chart_space.chart.plotArea.catAx.setDelete(true);
}
else
{
if(chart_space.chart.plotArea.valAx)
{
chart_space.chart.plotArea.valAx.setTickLblPos(c_oAscTickLabelsPos.TICK_LABEL_POSITION_NONE);
chart_space.chart.plotArea.valAx.setMajorTickMark(c_oAscTickMark.TICK_MARK_NONE);
chart_space.chart.plotArea.valAx.setMinorTickMark(c_oAscTickMark.TICK_MARK_NONE);
}
if(chart_space.chart.plotArea.catAx)
{
chart_space.chart.plotArea.catAx.setTickLblPos(c_oAscTickLabelsPos.TICK_LABEL_POSITION_NONE);
chart_space.chart.plotArea.catAx.setMajorTickMark(c_oAscTickMark.TICK_MARK_NONE);
chart_space.chart.plotArea.catAx.setMinorTickMark(c_oAscTickMark.TICK_MARK_NONE);
}
}
if(!chart_space.spPr)
chart_space.setSpPr(new AscFormat.CSpPr());
var new_line = new AscFormat.CLn();
new_line.setFill(new AscFormat.CUniFill());
new_line.Fill.setFill(new AscFormat.CNoFill());
chart_space.spPr.setLn(new_line);
chart_space.recalcInfo.recalculateReferences = false;
chart_space.recalculate();
return chart_space;
}, this, []);
};
ChartPreviewManager.prototype.clearPreviews = function()
{
this.previewGroups.length = 0;
};
ChartPreviewManager.prototype.checkChartForPreview = function (type, aStyle) {
return AscFormat.ExecuteNoHistory(function() {
if (!this.chartsByTypes[type]) {
this.chartsByTypes[type] = this.getChartByType(type);
}
var chart_space = this.chartsByTypes[type];
chart_space.applyChartStyleByIds(aStyle);
chart_space.recalcInfo.recalculateReferences = false;
chart_space.recalculate();
return chart_space;
}, this, []);
};
ChartPreviewManager.prototype.createChartPreview = function(graphics, type, aStyle) {
var chart_space = this.checkChartForPreview(type, aStyle);
graphics.save();
chart_space.draw(graphics);
graphics.restore();
};
ChartPreviewManager.prototype._isCachedChartStyles = function(chartType) {
var res = this.previewGroups.hasOwnProperty(chartType);
if(!res) {
this.previewGroups[chartType] = [];
}
return res;
};
ChartPreviewManager.prototype._getGraphics = function() {
if (null === this._canvas_charts) {
this._canvas_charts = document.createElement('canvas');
this._canvas_charts.width = AscCommon.AscBrowser.convertToRetinaValue(this.CHART_PREVIEW_WIDTH_PIX, true);
this._canvas_charts.height = AscCommon.AscBrowser.convertToRetinaValue(this.CHART_PREVIEW_HEIGHT_PIX, true);
}
var _canvas = this._canvas_charts;
var ctx = _canvas.getContext('2d');
var graphics = new AscCommon.CGraphics();
graphics.init(ctx, _canvas.width, _canvas.height, fChartSize, fChartSize);
graphics.m_oFontManager = AscCommon.g_fontManager;
graphics.transform(1,0,0,1,0,0);
return graphics;
};
ChartPreviewManager.prototype.getChartPreviews = function(chartType, arrId, bEmpty) {
var aStyles;
var nIdx, chartStyle, graphics;
var arrPreviews;
if(bEmpty) {
arrPreviews = [];
aStyles = AscCommon.g_oChartStyles[chartType];
if(Array.isArray(aStyles)) {
graphics = this._getGraphics();
for (nIdx = 0; nIdx < aStyles.length; ++nIdx) {
chartStyle = new AscCommon.CStyleImage();
chartStyle.name = nIdx + 1;
chartStyle.image = null;
arrPreviews.push(chartStyle);
}
}
return arrPreviews;
}
if(Array.isArray(arrId)) {
arrPreviews = [];
aStyles = AscCommon.g_oChartStyles[chartType];
if(Array.isArray(aStyles)) {
graphics = this._getGraphics();
for (nIdx = 0; nIdx < arrId.length; ++nIdx) {
var oStyle = aStyles[arrId[nIdx] - 1];
if(oStyle) {
this.createChartPreview(graphics, chartType, oStyle);
chartStyle = new AscCommon.CStyleImage();
chartStyle.name = arrId[nIdx];
chartStyle.image = this._canvas_charts.toDataURL("image/png");
arrPreviews.push(chartStyle);
}
}
}
return arrPreviews;
}
if (AscFormat.isRealNumber(chartType)) {
if (!this._isCachedChartStyles(chartType)) {
aStyles = AscCommon.g_oChartStyles[chartType];
if (Array.isArray(aStyles)) {
AscFormat.ExecuteNoHistory(function () {
graphics = this._getGraphics();
if(Array.isArray(arrId)) {
var arrPreviews = [];
for (nIdx = 0; nIdx < arrId.length; ++nIdx) {
if(aStyles[arrId[nIdx]]) {
this.createChartPreview(graphics, chartType, aStyles[arrId[nIdx]]);
chartStyle = new AscCommon.CStyleImage();
chartStyle.name = nIdx + 1;
chartStyle.image = this._canvas_charts.toDataURL("image/png");
arrPreviews.push(chartStyle);
}
}
return arrPreviews;
}
else {
for (nIdx = 0; nIdx < aStyles.length; ++nIdx) {
this.createChartPreview(graphics, chartType, aStyles[nIdx]);
if (!window["IS_NATIVE_EDITOR"]) {
chartStyle = new AscCommon.CStyleImage();
chartStyle.name = nIdx + 1;
chartStyle.image = this._canvas_charts.toDataURL("image/png");
this.previewGroups[chartType].push(chartStyle);
}
}
}
}, this, []);
var api = Asc['editor'];
if (api && AscCommon.c_oEditorId.Spreadsheet === api.getEditorId()) {
var _graphics = api.wb.shapeCtx;
if (_graphics.ClearLastFont) {
_graphics.ClearLastFont();
}
}
}
}
}
return this.previewGroups[chartType];
};
function CSmartArtPreviewInfo(nSmartArtId, nSectionId, oImage) {
this.m_nSectionId = AscFormat.isRealNumber(nSectionId) ? nSectionId : null;
this.m_nSmartArtId = AscFormat.isRealNumber(nSmartArtId) ? nSmartArtId : null;
this.m_oImage = oImage ? oImage : null;
}
CSmartArtPreviewInfo.prototype.asc_getImage = function () {
return this.m_oImage;
};
CSmartArtPreviewInfo.prototype["asc_getImage"] = CSmartArtPreviewInfo.prototype.asc_getImage;
CSmartArtPreviewInfo.prototype.asc_getSectionId = function () {
return this.m_nSectionId;
};
CSmartArtPreviewInfo.prototype["asc_getSectionId"] = CSmartArtPreviewInfo.prototype.asc_getSectionId;
CSmartArtPreviewInfo.prototype.asc_getSmartArtId = function () {
return this.m_nSmartArtId;
};
CSmartArtPreviewInfo.prototype["asc_getSmartArtId"] = CSmartArtPreviewInfo.prototype.asc_getSmartArtId;
CSmartArtPreviewInfo.prototype.asc_setImage = function (oImage) {
this.m_oImage = oImage;
};
CSmartArtPreviewInfo.prototype["asc_setImage"] = CSmartArtPreviewInfo.prototype.asc_setImage;
CSmartArtPreviewInfo.prototype.asc_setSectionId = function (nSectionId) {
this.m_nSectionId = nSectionId;
};
CSmartArtPreviewInfo.prototype["asc_setSectionId"] = CSmartArtPreviewInfo.prototype.asc_setSectionId;
CSmartArtPreviewInfo.prototype.asc_setSmartArtId = function (nSmartArtId) {
this.m_nSmartArtId = nSmartArtId;
};
CSmartArtPreviewInfo.prototype["asc_setSmartArtId"] = CSmartArtPreviewInfo.prototype.asc_setSmartArtId;
function SmartArtPreviewDrawer() {
AscCommon.CActionOnTimerBase.call(this);
this.SMARTART_PREVIEW_SIZE_MM = 8128000 * AscCommonWord.g_dKoef_emu_to_mm;
this.CANVAS_SIZE = 70;
this.canvas = null;
this.imageType = "image/png";
this.imageBuffer = [];
this.index = 0;
this.cache = {};
this.queue = [];
this.typeOfSectionLoad = null;
}
SmartArtPreviewDrawer.prototype = Object.create(AscCommon.CActionOnTimerBase.prototype);
SmartArtPreviewDrawer.prototype.constructor = SmartArtPreviewDrawer;
SmartArtPreviewDrawer.prototype.Begin = function (nTypeOfSectionLoad) {
const oApi = Asc.editor || editor;
if(!oApi) {
return;
}
this.typeOfSectionLoad = nTypeOfSectionLoad;
const oThis = this;
AscCommon.g_oBinarySmartArts.checkLoadDrawing().then(function ()
{
if (AscFormat.isRealNumber(oThis.typeOfSectionLoad)) {
const arrPreviewObjects = Asc.c_oAscSmartArtSections[oThis.typeOfSectionLoad].map(function (nTypeOfSmartArt) {
return new CSmartArtPreviewInfo(nTypeOfSmartArt, oThis.typeOfSectionLoad);
});
oThis.queue = oThis.queue.concat(arrPreviewObjects);
AscCommon.CActionOnTimerBase.prototype.Begin.call(oThis);
}
});
};
SmartArtPreviewDrawer.prototype.OnBegin = function () {
const oApi = Asc.editor || editor;
this.index = 0;
if (oApi)
oApi.sendEvent("asc_onBeginSmartArtPreview", this.typeOfSectionLoad);
}
SmartArtPreviewDrawer.prototype.OnEnd = function() {
const oApi = Asc.editor || editor;
if (oApi) oApi.sendEvent("asc_onEndSmartArtPreview");
};
SmartArtPreviewDrawer.prototype.IsContinue = function() {
return !!this.queue.length;
};
SmartArtPreviewDrawer.prototype.DoAction = function() {
const oApi = Asc.editor || editor;
oApi.isSkipAddIdToBaseObject = true;
const oSmartArtPreviewInfo = this.queue.pop();
if (oSmartArtPreviewInfo) {
const nTypeOfSmartArt = oSmartArtPreviewInfo.asc_getSmartArtId();
if (!this.cache[nTypeOfSmartArt]) {
const oContext = this.createSmartArtPreview(nTypeOfSmartArt);
const oPreview = new AscCommon.CStyleImage();
oPreview.name = nTypeOfSmartArt;
oPreview.image = oContext.canvas.toDataURL(this.imageType, 1);
this.cache[nTypeOfSmartArt] = oPreview;
}
oSmartArtPreviewInfo.asc_setImage(this.cache[nTypeOfSmartArt]);
this.imageBuffer.push(oSmartArtPreviewInfo);
}
delete oApi.isSkipAddIdToBaseObject;
};
SmartArtPreviewDrawer.prototype.OnEndTimer = function() {
const oApi = Asc.editor || editor;
oApi.sendEvent("asc_onAddSmartArtPreview", this.imageBuffer);
this.imageBuffer = [];
};
SmartArtPreviewDrawer.prototype.getGraphics = function () {
if (null === this.canvas) {
this.canvas = document.createElement('canvas');
this.canvas.width = AscCommon.AscBrowser.convertToRetinaValue(this.CANVAS_SIZE, true);
this.canvas.height = AscCommon.AscBrowser.convertToRetinaValue(this.CANVAS_SIZE, true);
}
const oCanvas = this.canvas;
const oContext = oCanvas.getContext('2d');
oContext.fillStyle = 'white';
oContext.fillRect(0, 0, oCanvas.width, oCanvas.height);
const oGraphics = new AscCommon.CGraphics();
oGraphics.isSmartArtPreviewDrawer = true;
oGraphics.init(oContext, oCanvas.width, oCanvas.height, this.SMARTART_PREVIEW_SIZE_MM, this.SMARTART_PREVIEW_SIZE_MM);
oGraphics.m_oFontManager = AscCommon.g_fontManager;
oGraphics.transform(1,0,0,1,0,0);
if (AscCommon.AscBrowser.retinaPixelRatio < 2) {
oGraphics.bDrawRectWithLines = true;
}
return oGraphics;
}
// SmartArtPreviewDrawer.prototype.createPreviews = function () {
// const arrPreviewObjects = Asc.c_oAscSmartArtSections[Asc.c_oAscSmartArtSectionNames.OfficeCom].map(function (nTypeOfSmartArt) {
// return new CSmartArtPreviewInfo(nTypeOfSmartArt, Asc.c_oAscSmartArtSectionNames.OfficeCom);
// });
// this.queue = this.queue.concat(arrPreviewObjects);
// while (this.IsContinue()) {
// this.DoAction();
// }
// console.log(this.imageBuffer);
// };
SmartArtPreviewDrawer.prototype.start = function () {
this.loadImagePlaceholder(this.createPreviews.bind(this));
};
SmartArtPreviewDrawer.prototype.createSmartArtPreview = function (nType) {
const oSmartArt = this.getSmartArt(nType);
const oGraphics = this.getGraphics();
oGraphics.save();
oSmartArt.draw(oGraphics);
oGraphics.restore();
return oGraphics.m_oContext;
};
SmartArtPreviewDrawer.prototype.fitSmartArtForPreview = function (oSmartArt) {
AscFormat.ExecuteNoHistory(function () {
if (oSmartArt.spTree[0] && oSmartArt.spTree[0].spTree) {
const nWidth = this.SMARTART_PREVIEW_SIZE_MM;
const nHeight = this.SMARTART_PREVIEW_SIZE_MM;
oSmartArt.spTree[0].recalcBounds();
oSmartArt.spTree[0].bForceGroupBounds = true;
oSmartArt.spTree[0].spTree.forEach(function (shape) {
shape.recalcBounds();
});
oSmartArt.recalculateBounds();
let oBounds = oSmartArt.spTree[0].bounds;
let nSmartArtWidth = oBounds.w;
let nSmartArtHeight = oBounds.h;
const nCoefficientHeight = Math.abs(nWidth / nSmartArtWidth);
const nCoefficientWith = Math.abs(nHeight / nSmartArtHeight);
const nMinCoefficient = Math.min(nCoefficientHeight, nCoefficientWith);
if (nMinCoefficient > 1) {
oSmartArt.changeSize(nMinCoefficient - 0.1, nMinCoefficient - 0.1);
oSmartArt.spTree[0].recalcBounds();
oSmartArt.spTree[0].spTree.forEach(function (shape) {
shape.recalcBounds();
});
oSmartArt.recalculateBounds();
oBounds = oSmartArt.spTree[0].bounds;
nSmartArtWidth = oBounds.w;
nSmartArtHeight = oBounds.h;
const nX = oBounds.x;
const nY = oBounds.y;
const nCX = nX + nSmartArtWidth / 2;
const nCY = nY + nSmartArtHeight / 2;
const nDX = nWidth / 2 - nCX;
const nDY = nHeight / 2 - nCY;
const oXfrm = oSmartArt.spPr.xfrm;
oXfrm.setOffX(oXfrm.offX + nDX);
oXfrm.setOffY(oXfrm.offY + nDY);
}
delete oSmartArt.spTree[0].bForceGroupBounds;
}
}, this, []);
}
SmartArtPreviewDrawer.prototype.getSmartArt = function(nSmartArtType) {
return AscFormat.ExecuteNoHistory(function () {
const oSmartArt = Asc.editor.isPdfEditor() ? new AscPDF.CPdfSmartArt() : new AscFormat.SmartArt();
oSmartArt.bNeedUpdatePosition = false;
oSmartArt.bFirstRecalculate = false;
const oApi = Asc.editor || editor;
oSmartArt.bForceSlideTransform = true;
oSmartArt.fillByPreset(nSmartArtType, true);
oSmartArt.getContrastDrawing();
oSmartArt.setBDeleted2(false);
const oXfrm = oSmartArt.spPr.xfrm;
const oDrawingObjects = oApi.getDrawingObjects();
oXfrm.setOffX(0);
oXfrm.setOffY((this.SMARTART_PREVIEW_SIZE_MM - oXfrm.extY) / 2);
if (oDrawingObjects) {
oSmartArt.setDrawingObjects(oDrawingObjects);
if (oDrawingObjects.cSld) {
oSmartArt.setParent2(oDrawingObjects);
oSmartArt.setRecalculateInfo();
}
if (oDrawingObjects.getWorksheetModel) {
oSmartArt.setWorksheet(oDrawingObjects.getWorksheetModel());
}
}
this.fitSmartArtForPreview(oSmartArt);
oSmartArt.recalcTransformText();
oSmartArt.recalculate();
return oSmartArt;
}, this, []);
};
function CreateAscColorByIndex(nIndex)
{
var oColor = new Asc.asc_CColor();
oColor.type = Asc.c_oAscColor.COLOR_TYPE_SCHEME;
oColor.value = nIndex;
return oColor;
}
function CreateAscFillByIndex(nIndex)
{
var oAscFill = new Asc.asc_CShapeFill();
oAscFill.type = Asc.c_oAscFill.FILL_TYPE_SOLID;
oAscFill.fill = new Asc.asc_CFillSolid();
oAscFill.fill.color = CreateAscColorByIndex(nIndex);
return oAscFill;
}
function CreateAscGradFillByIndex(nIndex1, nIndex2, nAngle)
{
var oAscFill = new Asc.asc_CShapeFill();
oAscFill.type = Asc.c_oAscFill.FILL_TYPE_GRAD;
oAscFill.fill = new Asc.asc_CFillGrad();
oAscFill.fill.GradType = Asc.c_oAscFillGradType.GRAD_LINEAR;
oAscFill.fill.LinearAngle = nAngle;
oAscFill.fill.LinearScale = true;
oAscFill.fill.Colors = [CreateAscColorByIndex(nIndex1), CreateAscColorByIndex(nIndex2)];
oAscFill.fill.Positions = [0, 100000];
oAscFill.fill.LinearAngle = nAngle;
oAscFill.fill.LinearScale = true;
return oAscFill;
}
function TextArtPreviewManager()
{
this.canvas = null;
this.canvasWidth = 50;
this.canvasHeight = 50;
this.shapeWidth = 50;
this.shapeHeight = 50;
this.TAShape = null;
this.TextArtStyles = [];
this.aStylesByIndex = [];
this.aStylesByIndexToApply = [];
this.dKoeff = 4;
//if (AscBrowser.isRetina) {
// this.dKoeff <<= 1;
//}
}
TextArtPreviewManager.prototype.initStyles = function()
{
var oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscFillByIndex(24), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = CreateNoFillLine();
this.aStylesByIndex[0] = oTextPr;
this.aStylesByIndexToApply[0] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscGradFillByIndex(52, 24, 5400000), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = CreateNoFillLine();
this.aStylesByIndex[4] = oTextPr;
this.aStylesByIndexToApply[4] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscGradFillByIndex(44, 42, 5400000), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = CreateNoFillLine();
this.aStylesByIndex[8] = oTextPr;
this.aStylesByIndexToApply[8] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = CreateNoFillUniFill();
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(34), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (15773/36000)*this.dKoeff);
this.aStylesByIndex[1] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = CreateNoFillUniFill();
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(34), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (15773/36000));
this.aStylesByIndexToApply[1] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = CreateNoFillUniFill();
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(59), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (15773/36000)*this.dKoeff);
this.aStylesByIndex[5] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = CreateNoFillUniFill();
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(59), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (15773/36000));
this.aStylesByIndexToApply[5] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = CreateNoFillUniFill();
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(52), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (15773/36000)*this.dKoeff);
this.aStylesByIndex[9] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = CreateNoFillUniFill();
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(52), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (15773/36000));
this.aStylesByIndexToApply[9] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscFillByIndex(27), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(52), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (12700/36000)*this.dKoeff);
this.aStylesByIndex[2] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscFillByIndex(27), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(52), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (12700/36000));
this.aStylesByIndexToApply[2] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscFillByIndex(42), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(46), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (12700/36000)*this.dKoeff);
this.aStylesByIndex[6] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscFillByIndex(42), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(46), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (12700/36000));
this.aStylesByIndexToApply[6] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscFillByIndex(57), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(54), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (12700/36000)*this.dKoeff);
this.aStylesByIndex[10] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscFillByIndex(57), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = AscFormat.CreatePenFromParams(AscFormat.CorrectUniFill(CreateAscFillByIndex(54), new AscFormat.CUniFill(), 0), undefined, undefined, undefined, undefined, (12700/36000));
this.aStylesByIndexToApply[10] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscGradFillByIndex(45, 57, 0), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = CreateNoFillLine();
this.aStylesByIndex[3] = oTextPr;
this.aStylesByIndexToApply[3] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscGradFillByIndex(52, 33, 0), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = CreateNoFillLine();
this.aStylesByIndex[7] = oTextPr;
this.aStylesByIndexToApply[7] = oTextPr;
oTextPr = new CTextPr();
oTextPr.Bold = true;
oTextPr.TextFill = AscFormat.CorrectUniFill(CreateAscGradFillByIndex(27, 45, 5400000), new AscFormat.CUniFill(), 0);
oTextPr.TextOutline = CreateNoFillLine();
this.aStylesByIndex[11] = oTextPr;
this.aStylesByIndexToApply[11] = oTextPr;
};
TextArtPreviewManager.prototype.getStylesToApply = function()
{
if(this.aStylesByIndex.length === 0)
{
this.initStyles();
}
return this.aStylesByIndexToApply;
};
TextArtPreviewManager.prototype.clear = function()
{
this.TextArtStyles.length = 0;
};
TextArtPreviewManager.prototype.getWordArtStyles = function()
{
if(this.TextArtStyles.length === 0)
{
this.generateTextArtStyles();
}
return this.TextArtStyles;
};
TextArtPreviewManager.prototype.getCanvas = function()
{
if (null === this.canvas)
{
this.canvas = this.createCanvas();
}
return this.canvas;
};
TextArtPreviewManager.prototype.createCanvas = function()
{
var oCanvas = document.createElement('canvas');
oCanvas.width = AscCommon.AscBrowser.convertToRetinaValue(this.canvasWidth, true);
oCanvas.height = AscCommon.AscBrowser.convertToRetinaValue(this.canvasHeight, true);
return oCanvas;
};
TextArtPreviewManager.prototype.getShapeByPrst = function(prst)
{
var oShape = this.getShape();
if(!oShape)
{
return null;
}
var oContent = oShape.getDocContent();
var TextSpacing = undefined;
switch(prst)
{
case "textButton":
{
TextSpacing = 4;
oContent.AddText("abcde");
oContent.AddNewParagraph();
oContent.AddText("Fghi");
oContent.AddNewParagraph();
oContent.AddText("Jklmn");
break;
}
case "textArchUp":
case "textArchDown":
{
TextSpacing = 4;
oContent.AddText("abcdefg");
break;
}
case "textCircle":
{
TextSpacing = 4;
oContent.AddText("abcdefghijklmnop");
break;
}
case "textButtonPour":
{
oContent.AddText("abcde");
oContent.AddNewParagraph();
oContent.AddText("abc");
oContent.AddNewParagraph();
oContent.AddText("abcde");
break;
}
case "textDeflateInflate":
{
oContent.AddText("abcde");
oContent.AddNewParagraph();
oContent.AddText("abcde");
break;
}
case "textDeflateInflateDeflate":
{
oContent.AddText("abcde");
oContent.AddNewParagraph();
oContent.AddText("abcde");
oContent.AddNewParagraph();
oContent.AddText("abcde");
break;
}
default:
{
oContent.AddText("abcde");
break;
}
}
oContent.SetApplyToAll(true);
oContent.SetParagraphAlign(AscCommon.align_Center);
oContent.AddToParagraph(new ParaTextPr({FontSize: 36, Spacing: TextSpacing, Unifill: AscFormat.CreateUnfilFromRGB(0, 0, 0)}));
oContent.SetApplyToAll(false);
var oBodypr = oShape.getBodyPr().createDuplicate();
oBodypr.prstTxWarp = AscFormat.CreatePrstTxWarpGeometry(prst);
oBodypr.setDefaultInsets();
if(!oShape.bWordShape)
{
oShape.txBody.setBodyPr(oBodypr);
}
else
{
oShape.setBodyPr(oBodypr);
}
oShape.setBDeleted(false);
oShape.recalcText();
oShape.recalculate();
if(oShape.bWordShape)
{
oShape.recalculateText();
}
return oShape;
};
TextArtPreviewManager.prototype.getShape = function()
{
var oShape = new AscFormat.CShape();
var oParent = null, oWorkSheet = null;
var bWord = true;
let nEditorId = Asc['editor'].getEditorId();
if (Asc.editor.isPdfEditor()) {
bWord = false;
}
else if(nEditorId === AscCommon.c_oEditorId.Spreadsheet) {
var api_sheet = Asc['editor'];
oShape.setWorksheet(api_sheet.wb.getWorksheet().model);
oWorkSheet = api_sheet.wb.getWorksheet().model;
bWord = false;
}
else if(nEditorId === AscCommon.c_oEditorId.Presentation) {
let oPres = Asc.editor.private_GetLogicDocument();
let oSlide = oPres.GetCurrentSlide();
oShape.setParent(oSlide);
oParent = oSlide;
bWord = false;
}
var oParentObjects = oShape.getParentObjects();
var oTrack = new AscFormat.NewShapeTrack("textRect", 0, 0, oParentObjects.theme, oParentObjects.master, oParentObjects.layout, oParentObjects.slide, 0);
oTrack.track({}, oShape.convertPixToMM(this.canvasWidth), oShape.convertPixToMM(this.canvasHeight));
oShape = oTrack.getShape(bWord, oShape.getDrawingDocument(), oShape.drawingObjects);
oShape.setStyle(null);
oShape.spPr.setFill(AscFormat.CreateUnfilFromRGB(255, 255, 255));
var oBodypr = oShape.getBodyPr().createDuplicate();
oBodypr.lIns = 0;
oBodypr.tIns = 0;
oBodypr.rIns = 0;
oBodypr.bIns = 0;
oBodypr.anchor = 1;
if(!bWord)
{
oShape.txBody.setBodyPr(oBodypr);
}
else
{
oShape.setBodyPr(oBodypr);
}
oShape.spPr.setLn(AscFormat.CreatePenFromParams(CreateNoFillUniFill(), null, null, null, 2, null));
if(oWorkSheet)
{
oShape.setWorksheet(oWorkSheet);
}
if(oParent)
{
oShape.setParent(oParent);
}
oShape.spPr.xfrm.setOffX(0);
oShape.spPr.xfrm.setOffY(0);
oShape.spPr.xfrm.setExtX(this.shapeWidth);
oShape.spPr.xfrm.setExtY(this.shapeHeight);
oShape._page = 0;
return oShape;
};
TextArtPreviewManager.prototype.getTAShape = function()
{
if (!this.TAShape)
{
var MainLogicDocument = (editor && editor.WordControl && editor.WordControl.m_oLogicDocument ? editor && editor.WordControl && editor.WordControl.m_oLogicDocument : null);
var TrackRevisions = false;
if (MainLogicDocument && MainLogicDocument.IsTrackRevisions && MainLogicDocument.IsTrackRevisions())
{
TrackRevisions = MainLogicDocument.GetLocalTrackRevisions();
MainLogicDocument.SetLocalTrackRevisions(false);
}
var oShape = this.getShape();
if (!oShape)
{
if (false !== TrackRevisions)
MainLogicDocument.SetLocalTrackRevisions(TrackRevisions);
return null;
}
var oContent = oShape.getDocContent();
if (oContent)
{
if (oContent.MoveCursorToStartPos)
{
oContent.MoveCursorToStartPos();
}
oContent.AddText("Ta");
oContent.SetApplyToAll(true);
oContent.AddToParagraph(new ParaTextPr({FontSize : 109, RFonts : {Ascii : {Name : "Arial", Index : -1}}}));
oContent.SetParagraphAlign(AscCommon.align_Center);
oContent.SetParagraphIndent({FirstLine : 0, Left : 0, Right : 0});
oContent.SetApplyToAll(false);
}
if (false !== TrackRevisions)
MainLogicDocument.SetLocalTrackRevisions(TrackRevisions);
this.TAShape = oShape;
}
return this.TAShape;
};
TextArtPreviewManager.prototype.getWordArtPreview = function(prst)
{
return this.getWordArtPreviewCanvas(prst).toDataURL("image/png");
};
TextArtPreviewManager.prototype.getWordArtPreviews = function()
{
return AscFormat.ExecuteNoHistory(function(){
var aRet = [];
for(var nIdx = 0; nIdx < AscCommon.g_aTextArtPresets.length; ++nIdx)
{
var sPreset = AscCommon.g_aTextArtPresets[nIdx];
var oPreview = {};
oPreview["Type"] = sPreset;
oPreview["Image"] = this.getWordArtPreview(sPreset);
aRet.push(oPreview);
}
return aRet;
}, this, []);
};
TextArtPreviewManager.prototype.getWordArtPreviewCanvas = function(prst)
{
var _canvas = this.createCanvas();
var ctx = _canvas.getContext('2d');
var graphics = new AscCommon.CGraphics();
var oShape = this.getShapeByPrst(prst);
if(!oShape)
{
return "";
}
graphics.init(ctx, _canvas.width, _canvas.height, oShape.extX, oShape.extY);
graphics.m_oFontManager = AscCommon.g_fontManager;
graphics.transform(1,0,0,1,0,0);
var oldShowParaMarks;
if(editor)
{
oldShowParaMarks = editor.ShowParaMarks;
editor.ShowParaMarks = false;
}
oShape.draw(graphics);
if(editor)
{
editor.ShowParaMarks = oldShowParaMarks;
}
return _canvas;
};
TextArtPreviewManager.prototype.generateTextArtStyles = function()
{
AscFormat.ExecuteNoHistory(function(){
if(this.aStylesByIndex.length === 0)
{
this.initStyles();
}
var _canvas = this.getCanvas();
var ctx = _canvas.getContext('2d');
var graphics = new AscCommon.CGraphics();
var oShape = this.getTAShape();
if(!oShape)
{
this.TextArtStyles.length = 0;
return;
}
oShape.recalculate();
graphics.m_oFontManager = AscCommon.g_fontManager;
var oldShowParaMarks;
if(editor)
{
oldShowParaMarks = editor.ShowParaMarks;
editor.ShowParaMarks = false;
}
var oContent = oShape.getDocContent();
oContent.SetApplyToAll(true);
for(var i = 0; i < this.aStylesByIndex.length; ++i)
{
oContent.AddToParagraph(new ParaTextPr(this.aStylesByIndex[i]));
graphics.init(ctx, _canvas.width, _canvas.height, oShape.extX, oShape.extY);
graphics.transform(1,0,0,1,0,0);
oShape.recalcText();
if(!oShape.bWordShape)
{
oShape.recalculate();
}
else
{
oShape.recalculateText();
}
oShape.draw(graphics);
this.TextArtStyles[i] = _canvas.toDataURL("image/png");
}
oContent.SetApplyToAll(false);
if(editor)
{
editor.ShowParaMarks = oldShowParaMarks;
}
}, this, []);
};
//----------------------------------------------------------export----------------------------------------------------
window['AscCommon'] = window['AscCommon'] || {};
window['AscCommon'].ChartPreviewManager = ChartPreviewManager;
window['AscCommon'].SmartArtPreviewDrawer = SmartArtPreviewDrawer;
window['AscCommon'].TextArtPreviewManager = TextArtPreviewManager;
// window['AscCommon'].createPreviewSmartArt = function () {
// const SmartArtDrawer = new SmartArtPreviewDrawer();
// SmartArtDrawer.start();
// }
})(window);