Files
DocumentServer-v-9.2.0/sdkjs/slide/apiBuilder.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

6315 lines
238 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";
(function (window, builder) {
/**
* @global
* @class
* @name Api
*/
var Api = window["Asc"]["asc_docs_api"] || window["Asc"]["spreadsheet_api"];
/**
* Class representing a presentation.
* @constructor
*/
function ApiPresentation(oPresentation){
this.Presentation = oPresentation;
}
/**
* Class representing a slide master.
* @constructor
*/
function ApiMaster(oMaster){
this.Master = oMaster;
}
/**
* Class representing a slide layout.
* @constructor
*/
function ApiLayout(oLayout){
this.Layout = oLayout;
}
/**
* Class representing a placeholder.
* @constructor
*/
function ApiPlaceholder(oPh){
this.Placeholder = oPh;
}
/**
* Class representing a presentation theme.
* @constructor
*/
function ApiTheme(oThemeInfo){
this.ThemeInfo = oThemeInfo;
}
/**
* Class representing a theme color scheme.
* @constructor
*/
function ApiThemeColorScheme(oClrScheme, theme){
this.ColorScheme = oClrScheme;
this.Theme = theme;
}
/**
* Class representing a theme format scheme.
* @constructor
*/
function ApiThemeFormatScheme(ofmtScheme, theme){
this.FormatScheme = ofmtScheme;
this.Theme = theme;
}
/**
* Class representing a theme font scheme.
* @constructor
*/
function ApiThemeFontScheme(ofontScheme, theme){
this.FontScheme = ofontScheme;
this.Theme = theme;
}
/**
* Class representing a slide.
* @constructor
*/
function ApiSlide(oSlide){
this.Slide = oSlide;
}
/**
* Class representing a notes page.
* @constructor
*/
function ApiNotesPage(oNotes) {
this.NotesPage = oNotes;
}
/**
* Class representing a graphical object.
* @constructor
*/
function ApiDrawing(Drawing)
{
this.Drawing = Drawing;
}
/**
* Class representing a shape.
* @constructor
*/
function ApiShape(oShape){
ApiDrawing.call(this, oShape);
this.Shape = oShape;
}
ApiShape.prototype = Object.create(ApiDrawing.prototype);
ApiShape.prototype.constructor = ApiShape;
/**
* Class representing an image.
* @constructor
*/
function ApiImage(oImage){
ApiDrawing.call(this, oImage);
}
ApiImage.prototype = Object.create(ApiDrawing.prototype);
ApiImage.prototype.constructor = ApiImage;
/**
* Class representing a group of drawings.
* @constructor
*/
function ApiGroup(oGroup){
ApiDrawing.call(this, oGroup);
}
ApiGroup.prototype = Object.create(ApiDrawing.prototype);
ApiGroup.prototype.constructor = ApiGroup;
/**
* Class representing an OLE object.
* @constructor
*/
function ApiOleObject(OleObject)
{
ApiDrawing.call(this, OleObject);
}
ApiOleObject.prototype = Object.create(ApiDrawing.prototype);
ApiOleObject.prototype.constructor = ApiOleObject;
/**
* Class representing a table.
* @param oGraphicFrame
* @constructor
*/
function ApiTable(oGraphicFrame){
this.Table = oGraphicFrame.graphicObject;
ApiDrawing.call(this, oGraphicFrame);
}
ApiTable.prototype = Object.create(ApiDrawing.prototype);
ApiTable.prototype.constructor = ApiTable;
/**
* Class representing a table row.
* @param oTableRow
* @constructor
*/
function ApiTableRow(oTableRow){
this.Row = oTableRow;
}
/**
* Class representing a table cell.
* @param oCell
* @constructor
*/
function ApiTableCell(oCell){
this.Cell = oCell;
}
/**
* Twentieths of a point (equivalent to 1/1440th of an inch).
* @typedef {number} twips
* @see office-js-api/Examples/Enumerations/twips.js
*/
/**
* 240ths of a line.
* @typedef {number} line240
* @see office-js-api/Examples/Enumerations/line240.js
*/
/**
* Half-points (2 half-points = 1 point).
* @typedef {number} hps
* @see office-js-api/Examples/Enumerations/hps.js
*/
/**
* A numeric value from 0 to 255.
* @typedef {number} byte
* @see office-js-api/Examples/Enumerations/byte.js
*/
/**
* 60000th of a degree (5400000 = 90 degrees).
* @typedef {number} PositiveFixedAngle
* @see office-js-api/Examples/Enumerations/PositiveFixedAngle.js
*/
/**
* A border type.
* @typedef {("none" | "single")} BorderType
* @see office-js-api/Examples/Enumerations/BorderType.js
*/
/**
* Types of custom tab.
* @typedef {("clear" | "left" | "right" | "center")} TabJc
* @see office-js-api/Examples/Enumerations/TabJc.js
*/
/**
* Eighths of a point (24 eighths of a point = 3 points).
* @typedef {number} pt_8
* @see office-js-api/Examples/Enumerations/pt_8.js
*/
/**
* A point.
* @typedef {number} pt
* @see office-js-api/Examples/Enumerations/pt.js
*/
/**
* English measure unit. 1 mm = 36000 EMUs, 1 inch = 914400 EMUs.
* @typedef {number} EMU
* @see office-js-api/Examples/Enumerations/EMU.js
*/
/**
* This type specifies the preset shape geometry that will be used for a shape.
* @typedef {("accentBorderCallout1" | "accentBorderCallout2" | "accentBorderCallout3" | "accentCallout1" | "accentCallout2" | "accentCallout3" | "actionButtonBackPrevious" | "actionButtonBeginning" | "actionButtonBlank" | "actionButtonDocument" | "actionButtonEnd" | "actionButtonForwardNext" | "actionButtonHelp" | "actionButtonHome" | "actionButtonInformation" | "actionButtonMovie" | "actionButtonReturn" | "actionButtonSound" | "arc" | "bentArrow" | "bentConnector2" | "bentConnector3" | "bentConnector4" | "bentConnector5" | "bentUpArrow" | "bevel" | "blockArc" | "borderCallout1" | "borderCallout2" | "borderCallout3" | "bracePair" | "bracketPair" | "callout1" | "callout2" | "callout3" | "can" | "chartPlus" | "chartStar" | "chartX" | "chevron" | "chord" | "circularArrow" | "cloud" | "cloudCallout" | "corner" | "cornerTabs" | "cube" | "curvedConnector2" | "curvedConnector3" | "curvedConnector4" | "curvedConnector5" | "curvedDownArrow" | "curvedLeftArrow" | "curvedRightArrow" | "curvedUpArrow" | "decagon" | "diagStripe" | "diamond" | "dodecagon" | "donut" | "doubleWave" | "downArrow" | "downArrowCallout" | "ellipse" | "ellipseRibbon" | "ellipseRibbon2" | "flowChartAlternateProcess" | "flowChartCollate" | "flowChartConnector" | "flowChartDecision" | "flowChartDelay" | "flowChartDisplay" | "flowChartDocument" | "flowChartExtract" | "flowChartInputOutput" | "flowChartInternalStorage" | "flowChartMagneticDisk" | "flowChartMagneticDrum" | "flowChartMagneticTape" | "flowChartManualInput" | "flowChartManualOperation" | "flowChartMerge" | "flowChartMultidocument" | "flowChartOfflineStorage" | "flowChartOffpageConnector" | "flowChartOnlineStorage" | "flowChartOr" | "flowChartPredefinedProcess" | "flowChartPreparation" | "flowChartProcess" | "flowChartPunchedCard" | "flowChartPunchedTape" | "flowChartSort" | "flowChartSummingJunction" | "flowChartTerminator" | "foldedCorner" | "frame" | "funnel" | "gear6" | "gear9" | "halfFrame" | "heart" | "heptagon" | "hexagon" | "homePlate" | "horizontalScroll" | "irregularSeal1" | "irregularSeal2" | "leftArrow" | "leftArrowCallout" | "leftBrace" | "leftBracket" | "leftCircularArrow" | "leftRightArrow" | "leftRightArrowCallout" | "leftRightCircularArrow" | "leftRightRibbon" | "leftRightUpArrow" | "leftUpArrow" | "lightningBolt" | "line" | "lineInv" | "mathDivide" | "mathEqual" | "mathMinus" | "mathMultiply" | "mathNotEqual" | "mathPlus" | "moon" | "nonIsoscelesTrapezoid" | "noSmoking" | "notchedRightArrow" | "octagon" | "parallelogram" | "pentagon" | "pie" | "pieWedge" | "plaque" | "plaqueTabs" | "plus" | "quadArrow" | "quadArrowCallout" | "rect" | "ribbon" | "ribbon2" | "rightArrow" | "rightArrowCallout" | "rightBrace" | "rightBracket" | "round1Rect" | "round2DiagRect" | "round2SameRect" | "roundRect" | "rtTriangle" | "smileyFace" | "snip1Rect" | "snip2DiagRect" | "snip2SameRect" | "snipRoundRect" | "squareTabs" | "star10" | "star12" | "star16" | "star24" | "star32" | "star4" | "star5" | "star6" | "star7" | "star8" | "straightConnector1" | "stripedRightArrow" | "sun" | "swooshArrow" | "teardrop" | "trapezoid" | "triangle" | "upArrowCallout" | "upDownArrow" | "upDownArrow" | "upDownArrowCallout" | "uturnArrow" | "verticalScroll" | "wave" | "wedgeEllipseCallout" | "wedgeRectCallout" | "wedgeRoundRectCallout")} ShapeType
* @see office-js-api/Examples/Enumerations/ShapeType.js
*/
/**
* A bullet type which will be added to the paragraph in spreadsheet or presentation.
* @typedef {("None" | "ArabicPeriod" | "ArabicParenR" | "RomanUcPeriod" | "RomanLcPeriod" | "AlphaLcParenR" | "AlphaLcPeriod" | "AlphaUcParenR" | "AlphaUcPeriod")} BulletType
* @see office-js-api/Examples/Enumerations/BulletType.js
*/
/**
* The available text vertical alignment (used to align text in a shape with a placement for text inside it).
* @typedef {("top" | "center" | "bottom")} VerticalTextAlign
* @see office-js-api/Examples/Enumerations/VerticalTextAlign.js
*/
/**
* The available color scheme identifiers.
* @typedef {("accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "bg1" | "bg2" | "dk1" | "dk2" | "lt1" | "lt2" | "tx1" | "tx2")} SchemeColorId
* @see office-js-api/Examples/Enumerations/SchemeColorId.js
*/
/**
* The available preset color names.
* @typedef {("aliceBlue" | "antiqueWhite" | "aqua" | "aquamarine" | "azure" | "beige" | "bisque" | "black" | "blanchedAlmond" | "blue" | "blueViolet" | "brown" | "burlyWood" | "cadetBlue" | "chartreuse" | "chocolate" | "coral" | "cornflowerBlue" | "cornsilk" | "crimson" | "cyan" | "darkBlue" | "darkCyan" | "darkGoldenrod" | "darkGray" | "darkGreen" | "darkGrey" | "darkKhaki" | "darkMagenta" | "darkOliveGreen" | "darkOrange" | "darkOrchid" | "darkRed" | "darkSalmon" | "darkSeaGreen" | "darkSlateBlue" | "darkSlateGray" | "darkSlateGrey" | "darkTurquoise" | "darkViolet" | "deepPink" | "deepSkyBlue" | "dimGray" | "dimGrey" | "dkBlue" | "dkCyan" | "dkGoldenrod" | "dkGray" | "dkGreen" | "dkGrey" | "dkKhaki" | "dkMagenta" | "dkOliveGreen" | "dkOrange" | "dkOrchid" | "dkRed" | "dkSalmon" | "dkSeaGreen" | "dkSlateBlue" | "dkSlateGray" | "dkSlateGrey" | "dkTurquoise" | "dkViolet" | "dodgerBlue" | "firebrick" | "floralWhite" | "forestGreen" | "fuchsia" | "gainsboro" | "ghostWhite" | "gold" | "goldenrod" | "gray" | "green" | "greenYellow" | "grey" | "honeydew" | "hotPink" | "indianRed" | "indigo" | "ivory" | "khaki" | "lavender" | "lavenderBlush" | "lawnGreen" | "lemonChiffon" | "lightBlue" | "lightCoral" | "lightCyan" | "lightGoldenrodYellow" | "lightGray" | "lightGreen" | "lightGrey" | "lightPink" | "lightSalmon" | "lightSeaGreen" | "lightSkyBlue" | "lightSlateGray" | "lightSlateGrey" | "lightSteelBlue" | "lightYellow" | "lime" | "limeGreen" | "linen" | "ltBlue" | "ltCoral" | "ltCyan" | "ltGoldenrodYellow" | "ltGray" | "ltGreen" | "ltGrey" | "ltPink" | "ltSalmon" | "ltSeaGreen" | "ltSkyBlue" | "ltSlateGray" | "ltSlateGrey" | "ltSteelBlue" | "ltYellow" | "magenta" | "maroon" | "medAquamarine" | "medBlue" | "mediumAquamarine" | "mediumBlue" | "mediumOrchid" | "mediumPurple" | "mediumSeaGreen" | "mediumSlateBlue" | "mediumSpringGreen" | "mediumTurquoise" | "mediumVioletRed" | "medOrchid" | "medPurple" | "medSeaGreen" | "medSlateBlue" | "medSpringGreen" | "medTurquoise" | "medVioletRed" | "midnightBlue" | "mintCream" | "mistyRose" | "moccasin" | "navajoWhite" | "navy" | "oldLace" | "olive" | "oliveDrab" | "orange" | "orangeRed" | "orchid" | "paleGoldenrod" | "paleGreen" | "paleTurquoise" | "paleVioletRed" | "papayaWhip" | "peachPuff" | "peru" | "pink" | "plum" | "powderBlue" | "purple" | "red" | "rosyBrown" | "royalBlue" | "saddleBrown" | "salmon" | "sandyBrown" | "seaGreen" | "seaShell" | "sienna" | "silver" | "skyBlue" | "slateBlue" | "slateGray" | "slateGrey" | "snow" | "springGreen" | "steelBlue" | "tan" | "teal" | "thistle" | "tomato" | "turquoise" | "violet" | "wheat" | "white" | "whiteSmoke" | "yellow" | "yellowGreen")} PresetColor
* @see office-js-api/Examples/Enumerations/PresetColor.js
*/
/**
* Possible values for the position of chart tick labels (either horizontal or vertical).
* <b>"none"</b> - not display the selected tick labels.
* <b>"nextTo"</b> - set the position of the selected tick labels next to the main label.
* <b>"low"</b> - set the position of the selected tick labels in the part of the chart with lower values.
* <b>"high"</b> - set the position of the selected tick labels in the part of the chart with higher values.
* @typedef {("none" | "nextTo" | "low" | "high")} TickLabelPosition
* @see office-js-api/Examples/Enumerations/TickLabelPosition.js
*/
/**
* The type of a fill which uses an image as a background.
* <b>"tile"</b> - if the image is smaller than the shape which is filled, the image will be tiled all over the created shape surface.
* <b>"stretch"</b> - if the image is smaller than the shape which is filled, the image will be stretched to fit the created shape surface.
* @typedef {"tile" | "stretch"} BlipFillType
* @see office-js-api/Examples/Enumerations/BlipFillType.js
*/
/**
* The available preset patterns which can be used for the fill.
* @typedef {"cross" | "dashDnDiag" | "dashHorz" | "dashUpDiag" | "dashVert" | "diagBrick" | "diagCross" | "divot" | "dkDnDiag" | "dkHorz" | "dkUpDiag" | "dkVert" | "dnDiag" | "dotDmnd" | "dotGrid" | "horz" | "horzBrick" | "lgCheck" | "lgConfetti" | "lgGrid" | "ltDnDiag" | "ltHorz" | "ltUpDiag" | "ltVert" | "narHorz" | "narVert" | "openDmnd" | "pct10" | "pct20" | "pct25" | "pct30" | "pct40" | "pct5" | "pct50" | "pct60" | "pct70" | "pct75" | "pct80" | "pct90" | "plaid" | "shingle" | "smCheck" | "smConfetti" | "smGrid" | "solidDmnd" | "sphere" | "trellis" | "upDiag" | "vert" | "wave" | "wdDnDiag" | "wdUpDiag" | "weave" | "zigZag"} PatternType
* @see office-js-api/Examples/Enumerations/PatternType.js
*/
/**
* The available types of tick mark appearance.
* @typedef {("cross" | "in" | "none" | "out")} TickMark
* @see office-js-api/Examples/Enumerations/TickMark.js
*/
/**
* Text transform type.
* @typedef {("textArchDown" | "textArchDownPour" | "textArchUp" | "textArchUpPour" | "textButton" | "textButtonPour" | "textCanDown"
* | "textCanUp" | "textCascadeDown" | "textCascadeUp" | "textChevron" | "textChevronInverted" | "textCircle" | "textCirclePour"
* | "textCurveDown" | "textCurveUp" | "textDeflate" | "textDeflateBottom" | "textDeflateInflate" | "textDeflateInflateDeflate" | "textDeflateTop"
* | "textDoubleWave1" | "textFadeDown" | "textFadeLeft" | "textFadeRight" | "textFadeUp" | "textInflate" | "textInflateBottom" | "textInflateTop"
* | "textPlain" | "textRingInside" | "textRingOutside" | "textSlantDown" | "textSlantUp" | "textStop" | "textTriangle" | "textTriangleInverted"
* | "textWave1" | "textWave2" | "textWave4" | "textNoShape")} TextTransform
* @see office-js-api/Examples/Enumerations/TextTransform.js
*/
/**
* Axis position in the chart.
* @typedef {("top" | "bottom" | "right" | "left")} AxisPos
* @see office-js-api/Examples/Enumerations/AxisPos.js
*/
/**
* Standard numeric format.
* @typedef {("General" | "0" | "0.00" | "#,##0" | "#,##0.00" | "0%" | "0.00%" |
* "0.00E+00" | "# ?/?" | "# ??/??" | "m/d/yyyy" | "d-mmm-yy" | "d-mmm" | "mmm-yy" | "h:mm AM/PM" |
* "h:mm:ss AM/PM" | "h:mm" | "h:mm:ss" | "m/d/yyyy h:mm" | "#,##0_\);(#,##0)" | "#,##0_\);\[Red\]\(#,##0)" |
* "#,##0.00_\);\(#,##0.00\)" | "#,##0.00_\);\[Red\]\(#,##0.00\)" | "mm:ss" | "[h]:mm:ss" | "mm:ss.0" | "##0.0E+0" | "@")} NumFormat
* @see office-js-api/Examples/Enumerations/NumFormat.js
*/
/**
* Available placeholder types.
* @typedef {("body" | "chart" | "clipArt" | "ctrTitle" | "diagram" | "date" | "footer" | "header" | "media" | "object" | "picture" | "sldImage" | "sldNumber" | "subTitle" | "table" | "title")} PlaceholderType
*/
/**
* Available layout types.
* @typedef {("blank" | "chart" | "chartAndTx" | "clipArtAndTx" | "clipArtAndVertTx" | "cust" | "dgm" | "fourObj" | "mediaAndTx" | "obj" | "objAndTwoObj" | "objAndTx" | "objOnly" | "objOverTx" | "objTx" | "picTx" | "secHead" | "tbl" | "title" | "titleOnly" | "twoColTx" | "twoObj" | "twoObjAndObj" | "twoObjAndTx" | "twoObjOverTx" | "twoTxTwoObj" | "tx" | "txAndChart" | "txAndClipArt" | "txAndMedia" | "txAndObj" | "txAndTwoObj" | "txOverObj" | "vertTitleAndTx" | "vertTitleAndTxOverChart" | "vertTx")} LayoutType
*/
/**
* Any valid drawing element.
* @typedef {(ApiShape | ApiImage | ApiGroup | ApiOleObject | ApiTable | ApiChart )} Drawing
* @see office-js-api/Examples/Enumerations/Drawing.js
*/
/**
* Available drawing element for grouping.
* @typedef {(ApiShape | ApiGroup | ApiImage | ApiChart)} DrawingForGroup
* @see office-js-api/Examples/Enumerations/DrawingForGroup.js
*/
/**
* Any valid element which can be added to the document structure.
* @typedef {(ApiParagraph)} DocumentElement
* @see office-js-api/Examples/Enumerations/DocumentElement.js
*/
/**
* The types of elements that can be added to the paragraph structure.
* @typedef {(ApiUnsupported | ApiRun | ApiHyperlink)} ParagraphContent
* @see office-js-api/Examples/Enumerations/ParagraphContent.js
*/
/**
* The 1000th of a percent (100000 = 100%).
* @typedef {number} PositivePercentage
* @see office-js-api/Examples/Enumerations/PositivePercentage.js
*/
/**
* Represents the type of objects in a selection.
* @typedef {("none" | "shapes" | "slides" | "text")} SelectionType - Available selection types.
* @see office-js-api/Examples/Enumerations/SelectionType.js
*
*/
//------------------------------------------------------------------------------------------------------------------
//
// Base Api
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the main presentation.
* @typeofeditors ["CPE"]
* @memberof Api
* @returns {ApiPresentation}
* @see office-js-api/Examples/{Editor}/Api/Methods/GetPresentation.js
*/
Api.prototype.GetPresentation = function(){
if(this.WordControl && this.WordControl.m_oLogicDocument){
return new ApiPresentation(this.WordControl.m_oLogicDocument);
}
return null;
};
Api.prototype.GetByInternalId = function(id)
{
let obj = AscCommon.g_oTableId.Get_ById(id);
if (!obj)
return null;
if (obj instanceof AscWord.CDocument)
return new AscBuilder.ApiDocument(obj);
else if (obj instanceof AscWord.CDocumentContent)
return new AscBuilder.ApiDocumentContent(obj);
else if (obj instanceof AscWord.Paragraph)
return new AscBuilder.ApiParagraph(obj);
else if (obj instanceof AscFormat.CGraphicFrame) {
return new ApiTable(obj);
}
else if (obj instanceof AscFormat.CShape) {
return new ApiShape(obj);
}
else if (obj instanceof AscFormat.CGraphicObjectBase) {
return new ApiDrawing(obj);
}
else if (obj instanceof AscCommonSlide.MasterSlide) {
return new ApiMaster(obj);
}
return null;
};
/**
* Creates a new slide master.
* @typeofeditors ["CPE"]
* @memberof Api
* @param {ApiTheme} [oTheme = ApiPresentation.GetMaster(0).GetTheme()] - The presentation theme object.
* @returns {?ApiMaster} - returns null if presentation theme doesn't exist.
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateMaster.js
*/
Api.prototype.CreateMaster = function(oTheme)
{
const rawMaster = new AscCommonSlide.MasterSlide();
const isThemeValid = oTheme && oTheme.GetClassType && oTheme.GetClassType() === "theme";
if (!isThemeValid) {
const zeroMaster = editor.GetPresentation().GetMaster(0);
if (zeroMaster) {
oTheme = zeroMaster.GetTheme();
} else {
const currentTheme = Asc.editor.getCurrentTheme();
const themeLoadInfo = new AscCommonSlide.CThemeLoadInfo();
themeLoadInfo.Master = rawMaster;
themeLoadInfo.Layouts = rawMaster.sldLayoutLst;
themeLoadInfo.Theme = currentTheme;
oTheme = new ApiTheme(themeLoadInfo);
}
}
if (!oTheme)
return null;
var oThemeCopy = oTheme.ThemeInfo.Theme.createDuplicate();
const oMaster = new ApiMaster(rawMaster);
oMaster.Master.setTheme(oThemeCopy);
oMaster.Master.setPreserve(true);
return oMaster;
};
Api.prototype.CreateDefaultMasterSlide = function () {
let master = AscCommonSlide.CreateDefaultMaster();
let pres = private_GetPresentation()
pres.pushSlideMaster(master);
return new ApiMaster(master);
};
/**
* Creates a new slide layout and adds it to the slide master if it is specified.
* @typeofeditors ["CPE"]
* @memberof Api
* @param {ApiMaster} [oMaster = null] - Parent slide master.
* @returns {ApiLayout}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateLayout.js
*/
Api.prototype.CreateLayout = function(oMaster){
var oLayout = new ApiLayout(new AscCommonSlide.SlideLayout());
oLayout.Layout.setPreserve(true);
if (oMaster && oMaster.GetClassType && oMaster.GetClassType() === "master")
oMaster.AddLayout(undefined, oLayout);
return oLayout;
};
/**
* Creates a new placeholder.
* @typeofeditors ["CPE"]
* @memberof Api
* @param {string} sType - The placeholder type ("body", "chart", "clipArt", "ctrTitle", "diagram", "date", "footer", "header", "media", "object", "picture", "sldImage", "sldNumber", "subTitle", "table", "title").
* @returns {ApiPlaceholder}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreatePlaceholder.js
*/
Api.prototype.CreatePlaceholder = function(sType){
if (typeof(sType) !== "string")
sType = "body";
var oPh = new ApiPlaceholder(new AscFormat.Ph());
oPh.SetType(sType);
return oPh;
};
/**
* Creates a new presentation theme.
* @typeofeditors ["CPE"]
* @memberof Api
* @param {string} sName - Theme name.
* @param {ApiMaster} oMaster - Slide master. Required parameter.
* @param {ApiThemeColorScheme} oClrScheme - Theme color scheme. Required parameter.
* @param {ApiThemeFormatScheme} oFormatScheme - Theme format scheme. Required parameter.
* @param {ApiThemeFontScheme} oFontScheme - Theme font scheme. Required parameter.
* @returns {ApiTheme | null}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateTheme.js
*/
Api.prototype.CreateTheme = function(sName, oMaster, oClrScheme, oFormatScheme, oFontScheme){
if (typeof(sName) !== "string")
sName = "";
if (oMaster.GetClassType() !== "master" || oClrScheme.GetClassType() !== "themeColorScheme" ||
oFormatScheme.GetClassType() !== "themeFormatScheme" || oFontScheme.GetClassType() !== "themeFontScheme")
return null;
var oPresentation = private_GetPresentation();
var oThemeLoadInfo = new AscCommonSlide.CThemeLoadInfo();
oThemeLoadInfo.Master = oMaster.Master;
oThemeLoadInfo.Layouts = oMaster.Master.sldLayoutLst;
var oTheme = new AscFormat.CTheme();
oTheme.setName(sName);
var presentation = {};
presentation.ImageMap = {};
presentation.Fonts = [];
presentation.Masters = [oMaster.Master];
presentation.DrawingDocument = editor.WordControl.m_oDrawingDocument;
presentation.pres = oPresentation;
presentation.Width = oPresentation.Width;
presentation.Height = oPresentation.Height;
presentation.defaultTextStyle = oPresentation.defaultTextStyle;
oTheme.presentation = presentation;
oTheme.themeElements.clrScheme = oClrScheme.ColorScheme;
oTheme.themeElements.fmtScheme = oFormatScheme.FormatScheme;
oTheme.themeElements.fontScheme = oFontScheme.FontScheme;
oThemeLoadInfo.Theme = oTheme;
oMaster.Master.setTheme(oTheme);
return new ApiTheme(oThemeLoadInfo);
};
/**
* Creates a new theme color scheme.
* @typeofeditors ["CPE"]
* @memberof Api
* @param {(ApiUniColor[] | ApiRGBColor[])} arrColors - Set of colors which are referred to as a color scheme.
* The color scheme is responsible for defining a list of twelve colors.
* The array should contain a sequence of colors: 2 dark, 2 light, 6 primary, a color for a hyperlink and a color for the followed hyperlink.
* @param {string} sName - Theme color scheme name.
* @returns {?ApiThemeColorScheme}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateThemeColorScheme.js
*/
Api.prototype.CreateThemeColorScheme = function(arrColors, sName){
if (typeof(sName) !== "string")
sName = "New theme's color scheme";
if (!Array.isArray(arrColors) || arrColors.length !== 12)
return null;
var oClrScheme = new AscFormat.ClrScheme();
oClrScheme.setName(sName);
oClrScheme.addColor(0, arrColors[0].Unicolor);
oClrScheme.addColor(2, arrColors[2].Unicolor);
oClrScheme.addColor(1, arrColors[1].Unicolor);
oClrScheme.addColor(3, arrColors[3].Unicolor);
oClrScheme.addColor(4, arrColors[4].Unicolor);
oClrScheme.addColor(5, arrColors[5].Unicolor);
for (var nColor = 6; nColor < 12; nColor++)
{
oClrScheme.addColor(nColor + 2, arrColors[nColor].Unicolor);
}
return new ApiThemeColorScheme(oClrScheme);
};
/**
* Creates a new theme format scheme.
* @typeofeditors ["CPE"]
* @memberof Api
* @param {ApiFill[]} arrFill - This array contains the fill styles. It should be consist of subtle, moderate and intense fills.
* @param {ApiFill[]} arrBgFill - This array contains the background fill styles. It should be consist of subtle, moderate and intense fills.
* @param {ApiStroke[]} arrLine - This array contains the line styles. It should be consist of subtle, moderate and intense lines.
* @param {string} sName - Theme format scheme name.
* @returns {?ApiThemeFormatScheme}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateThemeFormatScheme.js
*/
Api.prototype.CreateThemeFormatScheme = function(arrFill, arrBgFill, arrLine, sName){
if (typeof(sName) !== "string")
sName = "New format scheme";
if (Array.isArray(arrFill) && Array.isArray(arrBgFill) && Array.isArray(arrLine) &&
arrFill.length === 3 && arrBgFill.length === 3 && arrLine.length === 3)
{
var oFormatScheme = new ApiThemeFormatScheme(new AscFormat.FmtScheme());
oFormatScheme.SetSchemeName(sName);
oFormatScheme.ChangeFillStyles(arrFill);
oFormatScheme.ChangeBgFillStyles(arrBgFill);
oFormatScheme.ChangeLineStyles(arrLine);
//oFormatScheme.ChangeEffectStyles(arrEffect);
return oFormatScheme;
}
return null;
};
/**
* Creates a new theme font scheme.
* @typeofeditors ["CPE"]
* @memberof Api
* @param {string} mjLatin - The major theme font applied to the latin text.
* @param {string} mjEa - The major theme font applied to the east asian text.
* @param {string} mjCs - The major theme font applied to the complex script text.
* @param {string} mnLatin - The minor theme font applied to the latin text.
* @param {string} mnEa - The minor theme font applied to the east asian text.
* @param {string} mnCs - The minor theme font applied to the complex script text.
* @param {string} sName - Theme font scheme name.
* @returns {ApiThemeFontScheme}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateThemeFontScheme.js
*/
Api.prototype.CreateThemeFontScheme = function(mjLatin, mjEa, mjCs, mnLatin, mnEa, mnCs, sName){
if (typeof(sName) !== "string")
sName = "New format scheme";
var oFontScheme = new AscFormat.FontScheme();
var oMajorFontCollection = new AscFormat.FontCollection(oFontScheme);
var oMinorFontCollection = new AscFormat.FontCollection(oFontScheme);
oFontScheme.setName(sName);
oFontScheme.setMajorFont(oMajorFontCollection);
oFontScheme.setMinorFont(oMinorFontCollection);
oMajorFontCollection.setLatin(mjLatin);
oMajorFontCollection.setEA(mjEa);
oMajorFontCollection.setCS(mjCs);
oMinorFontCollection.setLatin(mnLatin);
oMinorFontCollection.setEA(mnEa);
oMinorFontCollection.setCS(mnCs);
return new ApiThemeFontScheme(oFontScheme);
};
/**
* Creates a new slide.
* @typeofeditors ["CPE"]
* @memberof Api
* @returns {ApiSlide}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateSlide.js
*/
Api.prototype.CreateSlide = function(){
var oPresentation = private_GetPresentation();
var oSlide = new AscCommonSlide.Slide(oPresentation, oPresentation.slideMasters[0].sldLayoutLst[0], 0);
oSlide.setNotes(AscCommonSlide.CreateNotes());
oSlide.notes.setNotesMaster(oPresentation.notesMasters[0]);
oSlide.notes.setSlide(oSlide);
return new ApiSlide(oSlide);
};
/**
* Creates an image with the parameters specified.
* @memberof Api
* @typeofeditors ["CPE"]
* @param {string} sImageSrc - The image source where the image to be inserted should be taken from (currently,
* only internet URL or Base64 encoded images are supported).
* @param {EMU} nWidth - The image width in English measure units.
* @param {EMU} nHeight - The image height in English measure units.
* @returns {ApiImage}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateImage.js
*/
Api.prototype.CreateImage = function(sImageSrc, nWidth, nHeight){
var oImage = AscFormat.DrawingObjectsController.prototype.createImage(sImageSrc, 0, 0, nWidth/36000, nHeight/36000);
oImage.setParent(private_GetCurrentSlide());
return new ApiImage(oImage);
};
/**
* Creates an OLE object with the parameters specified.
* @memberof Api
* @typeofeditors ["CPE"]
* @param {string} sImageSrc - The image source where the image to be inserted should be taken from (currently, only internet URL or Base64 encoded images are supported).
* @param {EMU} nWidth - The OLE object width in English measure units.
* @param {EMU} nHeight - The OLE object height in English measure units.
* @param {string} sData - The OLE object string data.
* @param {string} sAppId - The application ID associated with the current OLE object.
* @returns {ApiOleObject}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateOleObject.js
*/
Api.prototype.CreateOleObject = function(sImageSrc, nWidth, nHeight, sData, sAppId)
{
if (typeof sImageSrc === "string" && sImageSrc.length > 0 && typeof sData === "string"
&& typeof sAppId === "string" && sAppId.length > 0
&& AscFormat.isRealNumber(nWidth) && AscFormat.isRealNumber(nHeight)
)
var nW = private_EMU2MM(nWidth);
var nH = private_EMU2MM(nHeight);
var oOleObject = AscFormat.DrawingObjectsController.prototype.createOleObject(sData, sAppId, sImageSrc, 0, 0, nW, nH);
oOleObject.setParent(private_GetCurrentSlide());
return new ApiOleObject(oOleObject);
};
/**
* Creates a shape with the parameters specified.
* @memberof Api
* @typeofeditors ["CPE"]
* @param {ShapeType} [sType="rect"] - The shape type which specifies the preset shape geometry.
* @param {EMU} [nWidth = 914400] - The shape width in English measure units.
* @param {EMU} [nHeight = 914400] - The shape height in English measure units.
* @param {ApiFill} [oFill = Api.CreateNoFill()] - The color or pattern used to fill the shape.
* @param {ApiStroke} [oStroke = Api.CreateStroke(0, Api.CreateNoFill())] - The stroke used to create the element shadow.
* @returns {ApiShape}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateShape.js
*/
Api.prototype.CreateShape = function(sType, nWidth, nHeight, oFill, oStroke){
var oCurrentSlide = private_GetCurrentSlide();
sType = sType || "rect";
nWidth = nWidth || 914400;
nHeight = nHeight || 914400;
oFill = oFill || editor.CreateNoFill();
oStroke = oStroke || editor.CreateStroke(0, editor.CreateNoFill());
var oTheme = oCurrentSlide && oCurrentSlide.Layout && oCurrentSlide.Layout.Master && oCurrentSlide.Layout.Master.Theme;
return new ApiShape(AscFormat.builder_CreateShape(sType, nWidth/36000, nHeight/36000, oFill.UniFill, oStroke.Ln, oCurrentSlide, oTheme, private_GetDrawingDocument(), false));
};
/**
* Creates a chart with the parameters specified.
* @memberof Api
* @typeofeditors ["CPE"]
* @param {ChartType} [sType="bar"] - The chart type used for the chart display.
* @param {number[][]} aSeries - The array of the data used to build the chart from.
* @param {number[] | string[]} aSeriesNames - The array of the names (the source table column names) used for the data which the chart will be build from.
* @param {number[] | string[]} aCatNames - The array of the names (the source table row names) used for the data which the chart will be build from.
* @param {EMU} nWidth - The chart width in English measure units.
* @param {EMU} nHeight - The chart height in English measure units.
* @param {number} nStyleIndex - The chart color style index (can be <b>1 - 48</b>, as described in OOXML specification).
* @param {NumFormat[] | String[]} aNumFormats - Numeric formats which will be applied to the series (can be custom formats).
* The default numeric format is "General".
* @returns {ApiChart}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateChart.js
*/
Api.prototype.CreateChart = function(sType, aSeries, aSeriesNames, aCatNames, nWidth, nHeight, nStyleIndex, aNumFormats)
{
var oChartSpace = AscFormat.builder_CreateChart(nWidth/36000, nHeight/36000, sType, aCatNames, aSeriesNames, aSeries, nStyleIndex, aNumFormats);
oChartSpace.setParent(private_GetCurrentSlide());
return Asc.editor.private_CreateApiChart(oChartSpace);
};
/**
* Creates a group of drawings.
* @memberof Api
* @typeofeditors ["CPE"]
* @param {DrawingForGroup[]} aDrawings - An array of drawings to group.
* @returns {ApiGroup}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateGroup.js
*/
Api.prototype.CreateGroup = function(aDrawings) {
let oSlide = private_GetCurrentSlide();
if (oSlide) {
if (aDrawings.find(function(drawing) {
return drawing.Drawing.IsUseInDocument();
}))
return null;
aDrawings.forEach(function(drawing) { drawing.Drawing.recalculate(); })
let oGroup = AscFormat.builder_CreateGroup(aDrawings, oSlide.graphicObjects);
if (oGroup) {
return new ApiGroup(oGroup);
}
}
return null;
};
/**
* Creates a table.
* @memberof Api
* @typeofeditors ["CPE"]
* @param nCols - Number of columns.
* @param nRows - Number of rows.
* @returns {?ApiTable}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateTable.js
*/
Api.prototype.CreateTable = function(nCols, nRows){
var oPresentation = private_GetPresentation();
var oSlide = private_GetCurrentSlide();
if(oPresentation && oSlide){
var oGraphicFrame = oPresentation.Create_TableGraphicFrame(nCols, nRows, oSlide, oPresentation.DefaultTableStyleId);
var content = oGraphicFrame.graphicObject.Content, i;
for(i = 0; i < content.length; ++i)
{
content[i].Set_Height(0, Asc.linerule_AtLeast );
}
return new ApiTable(oGraphicFrame);
}
return null;
};
/**
* Creates a new paragraph.
* @memberof Api
* @typeofeditors ["CPE"]
* @returns {ApiParagraph}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateParagraph.js
*/
Api.prototype.CreateParagraph = function()
{
return this.private_CreateApiParagraph(new AscWord.Paragraph(null, true));
};
/**
* Saves changes to the specified document.
* @typeofeditors ["CPE"]
* @memberof Api
* @see office-js-api/Examples/{Editor}/Api/Methods/Save.js
*/
Api.prototype.Save = function () {
this.SaveAfterMacros = true;
};
/**
* Checks for duplicate placeholders and sets indexes.
* Called when a placeholder is added to a shape.
* @typeofeditors ["CPE"]
* @memberof Api
* @param {ApiSlide | ApiLayout | ApiMaster} object - Object in which placeholders will be checked.
* @param {ApiPlaceholder} oPlaceholder - Placeholder to be added.
* @return {boolean} - return false if object is unsupported or oPlaceholder isn't a placeholder.
*/
Api.prototype.private_checkPlaceholders = function(object, oPlaceholder)
{
if (object.GetClassType() !== "slide" && object.GetClassType() !== "layout" && object.GetClassType() !== "master" )
return false;
if (!oPlaceholder || !oPlaceholder.GetClassType || oPlaceholder.GetClassType() !== "placeholder")
return false;
var allDrawings = object.GetAllDrawings();
var maxIndex = 0;
var oTempPlaceholder = null;
var noIdxPlaceholders = [];
for (var nDrawing = 0; nDrawing < allDrawings.length; nDrawing++)
{
oTempPlaceholder = allDrawings[nDrawing].GetPlaceholder();
if (oTempPlaceholder && oTempPlaceholder.Placeholder.type === oPlaceholder.Placeholder.type)
{
if (oTempPlaceholder.Placeholder.idx && +oTempPlaceholder.Placeholder.idx > maxIndex)
maxIndex = +oTempPlaceholder.Placeholder.idx;
else if (!oTempPlaceholder.Placeholder.idx)
noIdxPlaceholders.push(oTempPlaceholder.Placeholder);
}
}
for (var nPh = 0; nPh < noIdxPlaceholders.length; nPh++)
{
noIdxPlaceholders[nPh].idx = String(maxIndex + 1);
maxIndex++;
}
return true;
};
/**
* Creates a Text Art object with the parameters specified.
* @memberof Api
* @typeofeditors ["CPE"]
* @param {ApiTextPr} [oTextPr=Api.CreateTextPr()] - The text properties.
* @param {string} [sText="Your text here"] - The text for the Text Art object.
* @param {TextTransform} [sTransform="textNoShape"] - Text transform type.
* @param {ApiFill} [oFill=Api.CreateNoFill()] - The color or pattern used to fill the Text Art object.
* @param {ApiStroke} [oStroke=Api.CreateStroke(0, Api.CreateNoFill())] - The stroke used to create the Text Art object shadow.
* @param {number} [nRotAngle=0] - Rotation angle.
* @param {EMU} [nWidth=1828800] - The Text Art width measured in English measure units.
* @param {EMU} [nHeight=1828800] - The Text Art heigth measured in English measure units.
* @param {EMU} [nIndLeft=ApiPresentation.GetWidth() / 2] - The Text Art left side indentation value measured in English measure units.
* @param {EMU} [nIndTop=ApiPresentation.GetHeight() / 2] - The Text Art top side indentation value measured in English measure units.
* @returns {ApiDrawing}
* @see office-js-api/Examples/{Editor}/Api/Methods/CreateWordArt.js
*/
Api.prototype.CreateWordArt = function(oTextPr, sText, sTransform, oFill, oStroke, nRotAngle, nWidth, nHeight, nIndLeft, nIndTop) {
var oPres = private_GetPresentation();
oTextPr = oTextPr && oTextPr.TextPr ? oTextPr.TextPr : null;
nRotAngle = typeof(nRotAngle) === "number" && nRotAngle > 0 ? nRotAngle : 0;
nWidth = typeof(nWidth) === "number" && nWidth > 0 ? nWidth : 1828800;
nHeight = typeof(nHeight) === "number" && nHeight > 0 ? nHeight : 1828800;
oFill = oFill && oFill.UniFill ? oFill.UniFill : this.CreateNoFill().UniFill;
oStroke = oStroke && oStroke.Ln ? oStroke.Ln : this.CreateStroke(0, this.CreateNoFill()).Ln;
sTransform = typeof(sTransform) === "string" && sTransform !== "" ? sTransform : "textNoShape";
var oArt = this.private_createWordArt(oTextPr, sText, sTransform, oFill, oStroke, nRotAngle, nWidth, nHeight);
nIndLeft = typeof(nIndLeft) === "number" && nIndLeft > -1 ? nIndLeft : (oPres.GetWidthMM() - oArt.spPr.xfrm.extX) / 2;
nIndTop = typeof(nIndTop) === "number" && nIndTop > -1 ? nIndTop : (oPres.GetHeightMM() - oArt.spPr.xfrm.extY) / 2;
oArt.spPr.xfrm.setOffX(nIndLeft);
oArt.spPr.xfrm.setOffY(nIndTop);
return new ApiDrawing(oArt);
};
/**
* Converts the specified JSON object into the Document Builder object of the corresponding type.
* @memberof Api
* @param {JSON} sMessage - The JSON object to convert.
* @typeofeditors ["CPE"]
* @see office-js-api/Examples/{Editor}/Api/Methods/FromJSON.js
*/
Api.prototype.FromJSON = function(sMessage)
{
let oReader = new AscJsonConverter.ReaderFromJSON();
let oApiPresentation = this.GetPresentation();
let oPresentation = private_GetPresentation();
let oParsedObj = JSON.parse(sMessage);
let oResult = null;
if (oParsedObj["tblStyleLst"])
oReader.TableStylesFromJSON(oParsedObj["tblStyleLst"]);
switch (oParsedObj["type"])
{
case "presentation":
let oSldSize = oParsedObj["sldSz"] ? oReader.SlideSizeFromJSON(oParsedObj["sldSz"]) : null;
let oShowPr = oParsedObj["showPr"] ? oReader.ShowPrFromJSON(oParsedObj["showPr"]) : null;
oSldSize && oPresentation.setSldSz(oSldSize);
oShowPr && oPresentation.setShowPr(oShowPr);
for (let nNoteMaster = 0; nNoteMaster < oParsedObj["notesMasters"].length; nNoteMaster++)
oReader.NotesMasterFromJSON(oParsedObj["notesMasters"][nNoteMaster], oPresentation);
for (let nMaster = 0; nMaster < oParsedObj["sldMasters"].length; nMaster++)
oReader.MasterSlideFromJSON(oParsedObj["sldMasters"][nMaster], oPresentation);
for (let nSlide = 0; nSlide < oParsedObj["slides"].length; nSlide++)
{
let oSlide = oReader.SlideFromJSON(oParsedObj["slides"][nSlide]);
oSlide.setSlideSize(oPresentation.GetWidthMM(), oPresentation.GetHeightMM());
oSlide.setSlideNum(oPresentation.Slides.length);
oPresentation.insertSlide(oPresentation.Slides.length, oSlide);
}
let oCPres = new AscCommon.CPres();
oCPres.defaultTextStyle = oReader.LstStyleFromJSON(oParsedObj["defaultTextStyle"]);
oCPres.attrAutoCompressPictures = oParsedObj["autoCompressPictures"];
oCPres.attrBookmarkIdSeed = oParsedObj["bookmarkIdSeed"];
oCPres.attrCompatMode = oParsedObj["compatMode"];
oCPres.attrConformance = oParsedObj["conformance"] === "strict" ? Asc.c_oAscConformanceType.Strict : Asc.c_oAscConformanceType.Transitional;
oCPres.attrEmbedTrueTypeFonts = oParsedObj["embedTrueTypeFonts"];
oCPres.attrFirstSlideNum = oParsedObj["firstSlideNum"];
oCPres.attrRemovePersonalInfoOnSave = oParsedObj["removePersonalInfoOnSave"];
oCPres.attrRtl = oParsedObj["rtl"];
oCPres.attrSaveSubsetFonts = oParsedObj["saveSubsetFonts"];
oCPres.attrServerZoom = oParsedObj["serverZoom"];
oCPres.attrShowSpecialPlsOnTitleSld = oParsedObj["showSpecialPlsOnTitleSld"];
oCPres.attrStrictFirstAndLastChars = oParsedObj["strictFirstAndLastChars"];
oPresentation.pres = oCPres;
oPresentation.setDefaultTextStyle(oCPres.defaultTextStyle);
oPresentation.setShowSpecialPlsOnTitleSld(oCPres.attrShowSpecialPlsOnTitleSld);
oPresentation.setFirstSlideNum(oCPres.attrFirstSlideNum);
oResult = oApiPresentation;
break;
case "docContent":
oResult = this.private_CreateApiDocContent(oReader.DocContentFromJSON(oParsedObj));
break;
case "drawingDocContent":
oResult = this.private_CreateApiDocContent(oReader.DrawingDocContentFromJSON(oParsedObj));
break;
case "paragraph":
oResult = this.private_CreateApiParagraph(oReader.ParagraphFromJSON(oParsedObj));
break;
case "run":
case "mathRun":
case "endRun":
oResult = this.private_CreateApiRun(oReader.ParaRunFromJSON(oParsedObj));
break;
case "hyperlink":
oResult = this.private_CreateApiHyperlink(oReader.HyperlinkFromJSON(oParsedObj));
break;
case "graphicFrame":
oResult = new ApiTable(oReader.GraphicObjFromJSON(oParsedObj));
break;
case "image":
oResult = new ApiImage(oReader.GraphicObjFromJSON(oParsedObj));
break;
case "shape":
case "connectShape":
oResult = new ApiShape(oReader.GraphicObjFromJSON(oParsedObj));
break;
case "chartSpace":
oResult = this.private_CreateApiChart(oReader.GraphicObjFromJSON(oParsedObj));
break;
case "textPr":
oResult = this.private_CreateApiTextPr(oReader.TextPrDrawingFromJSON(oParsedObj));
break;
case "paraPr":
oResult = this.private_CreateApiParaPr(oReader.ParaPrDrawingFromJSON(oParsedObj));
break;
case "fill":
oResult = this.private_CreateApiFill(oReader.FillFromJSON(oParsedObj));
break;
case "stroke":
oResult = this.private_CreateApiStroke(oReader.LnFromJSON(oParsedObj));
break;
case "gradStop":
let oGs = oReader.GradStopFromJSON(oParsedObj);
oResult = this.private_CreateApiGradStop(this.private_CreateApiUniColor(oGs.color), oGs.pos);
break;
case "uniColor":
oResult = this.private_CreateApiUniColor(oReader.ColorFromJSON(oParsedObj));
break;
case "slide":
oResult = new ApiSlide(oReader.SlideFromJSON(oParsedObj));
break;
case "sldLayout":
oResult = new ApiLayout(oReader.SlideLayoutFromJSON(oParsedObj));
break;
case "sldMaster":
oResult = new ApiMaster(oReader.MasterSlideFromJSON(oParsedObj));
break;
case "fontScheme":
oResult = new ApiThemeFontScheme(oReader.FontSchemeFromJSON(oParsedObj));
break;
case "fmtScheme":
oResult = new ApiThemeFormatScheme(oReader.FmtSchemeFromJSON(oParsedObj));
break;
case "clrScheme":
oResult = new ApiThemeColorScheme(oReader.ClrSchemeFromJSON(oParsedObj));
break;
case "slides":
let aApiSlides = []
let aSlides = oReader.SlidesFromJSON(oParsedObj);
for (let nSlide = 0; nSlide < aSlides.length; nSlide++)
aApiSlides.push(new ApiSlide(aSlides[nSlide]));
oResult = aApiSlides;
break;
}
oReader.AssignConnectedObjects();
return oResult;
};
/**
* Returns the selection from the current presentation.
* @memberof Api
* @typeofeditors ["CPE"]
* @returns {ApiSelection}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/Api/Methods/GetSelection.js
*/
Api.prototype.GetSelection = function()
{
return new ApiSelection();
};
/**
* Subscribes to the specified event and calls the callback function when the event fires.
* @function
* @memberof Api
* @typeofeditors ["CPE"]
* @param {string} eventName - The event name.
* @param {function} callback - Function to be called when the event fires.
* @see office-js-api/Examples/{Editor}/Api/Methods/attachEvent.js
*/
Api.prototype["attachEvent"] = Api.prototype.attachEvent;
/**
* Unsubscribes from the specified event.
* @function
* @memberof Api
* @typeofeditors ["CPE"]
* @param {string} eventName - The event name.
* @see office-js-api/Examples/{Editor}/Api/Methods/detachEvent.js
*/
Api.prototype["detachEvent"] = Api.prototype.detachEvent;
//------------------------------------------------------------------------------------------------------------------
//
// ApiPresentation
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns a type of the ApiPresentation class.
* @typeofeditors ["CPE"]
* @returns {"presentation"}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetClassType.js
*/
ApiPresentation.prototype.GetClassType = function()
{
return "presentation";
};
/**
* Returns the index for the current slide.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @returns {number}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetCurSlideIndex.js
*/
ApiPresentation.prototype.GetCurSlideIndex = function(){
if(this.Presentation){
return this.Presentation.CurPage;
}
return -1;
};
/**
* Returns a slide by its position in the presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @param {number} nIndex - The slide number (position) in the presentation.
* @returns {?ApiSlide}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetSlideByIndex.js
*/
ApiPresentation.prototype.GetSlideByIndex = function(nIndex){
if(this.Presentation && this.Presentation.Slides[nIndex]){
return new ApiSlide(this.Presentation.Slides[nIndex]);
}
return null;
};
/**
* Returns the current slide.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @returns {?ApiSlide}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetCurrentSlide.js
*/
ApiPresentation.prototype.GetCurrentSlide = function () {
return this.GetSlideByIndex(this.GetCurSlideIndex());
};
/**
* Returns the current visible slide.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @returns {ApiSlide | null} - Returns null if the current slide is not found or not visible.
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetCurrentVisibleSlide.js
*/
ApiPresentation.prototype.GetCurrentVisibleSlide = function () {
if (!Asc.editor.isNormalMode()) {
return null;
}
return this.GetSlideByIndex(this.GetCurSlideIndex());
};
/**
* Appends a new slide to the end of the presentation.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @param {ApiSlide} oSlide - The slide created using the {@link Api#CreateSlide} method.
* @param {?number} nIndex - Index of the slide to be added. If not specified, the slide will be added to the end of the presentation.
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/AddSlide.js
*/
ApiPresentation.prototype.AddSlide = function(oSlide, nIndex) {
if(this.Presentation){
oSlide.Slide.setSlideNum(this.Presentation.Slides.length);
let index = this.Presentation.Slides.length;
if(AscFormat.isRealNumber(nIndex) && nIndex >= 0 && nIndex < this.Presentation.Slides.length) {
index = nIndex;
}
this.Presentation.insertSlide(index, oSlide.Slide);
this.Presentation.CurPage = index;
this.Presentation.bGoToPage = true;
}
};
/**
* Sets the size to the current presentation.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @param {EMU} nWidth - The presentation width in English measure units.
* @param {EMU} nHeight - The presentation height in English measure units.
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/SetSizes.js
*/
ApiPresentation.prototype.SetSizes = function(nWidth, nHeight) {
if(this.Presentation){
this.Presentation.internalChangeSizes(nWidth, nHeight);
}
};
/**
* Creates a new history point.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/CreateNewHistoryPoint.js
*/
ApiPresentation.prototype.CreateNewHistoryPoint = function()
{
this.Presentation.Create_NewHistoryPoint(AscDFH.historydescription_Document_ApiBuilder);
};
/**
* Replaces the current image with an image specified.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @param {string} sImageUrl - The image source where the image to be inserted should be taken from (currently, only internet URL or Base64 encoded images are supported).
* @param {EMU} Width - The image width in English measure units.
* @param {EMU} Height - The image height in English measure units.
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/ReplaceCurrentImage.js
*/
ApiPresentation.prototype.ReplaceCurrentImage = function(sImageUrl, Width, Height)
{
let oPr = this.Presentation;
if(oPr.Slides[oPr.CurPage]){
let _slide = oPr.Slides[oPr.CurPage];
let oController = _slide.graphicObjects;
let dK = 1 / 36000 / AscCommon.g_dKoef_pix_to_mm;
oController.putImageToSelection(sImageUrl, Width * dK, Height * dK );
}
};
/**
* Specifies the languages which will be used to check spelling and grammar (if requested).
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @param {string} sLangId - The possible value for this parameter is a language identifier as defined by
* RFC 4646/BCP 47. Example: "en-CA".
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/SetLanguage.js
*/
ApiPresentation.prototype.SetLanguage = function(sLangId)
{
var nLcid = Asc.g_oLcidNameToIdMap[sLangId];
if (nLcid === undefined)
return false;
this.Presentation.SetLanguage(nLcid);
return true;
};
/**
* Returns a number of slides.
* @typeofeditors ["CPE"]
* @returns {number}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetSlidesCount.js
*/
ApiPresentation.prototype.GetSlidesCount = function()
{
return this.Presentation.Slides.length;
};
/**
* Returns an array of all slides from the current presentation.
* @typeofeditors ["CPE"]
* @returns {ApiSlide[]}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllSlides.js
*/
ApiPresentation.prototype.GetAllSlides = function()
{
let oPresentation = Asc.editor.getLogicDocument();
let aApiSlides = [];
let aSlides = oPresentation.Slides;
for(let nIdx = 0; nIdx < aSlides.length; ++nIdx) {
aApiSlides.push(new ApiSlide(aSlides[nIdx]));
}
return aApiSlides;
};
/**
* Returns a number of slide masters.
* @typeofeditors ["CPE"]
* @returns {number}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetMastersCount.js
*/
ApiPresentation.prototype.GetMastersCount = function()
{
return this.Presentation.slideMasters.length;
};
/**
* Returns an array of all slide masters from the current presentation.
* @typeofeditors ["CPE"]
* @returns {ApiMaster[]}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllSlideMasters.js
*/
ApiPresentation.prototype.GetAllSlideMasters = function()
{
let aSlideMasters = this.Presentation.slideMasters;
let aApiSlideMasters = [];
for(let nIdx = 0; nIdx < aSlideMasters.length; ++nIdx) {
aApiSlideMasters.push(new ApiMaster(aSlideMasters[nIdx]));
}
return aApiSlideMasters;
};
/**
* Returns a slide master by its position in the presentation.
* @typeofeditors ["CPE"]
* @param {number} nPos - Slide master position in the presentation
* @returns {ApiMaster | null} - returns null if position is invalid.
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetMaster.js
*/
ApiPresentation.prototype.GetMaster = function(nPos)
{
if (nPos < 0 || nPos >= this.Presentation.slideMasters.length)
return null;
return new ApiMaster(this.Presentation.slideMasters[nPos]);
};
/**
* Adds the slide master to the presentation slide masters collection.
* @typeofeditors ["CPE"]
* @param {number} [nPos = ApiPresentation.GetMastersCount()]
* @param {ApiMaster} oApiMaster - The slide master to be added.
* @returns {boolean} - return false if position is invalid or oApiMaster doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/AddMaster.js
*/
ApiPresentation.prototype.AddMaster = function(nPos, oApiMaster)
{
if (oApiMaster && oApiMaster.GetClassType && oApiMaster.GetClassType() === "master")
{
let master = oApiMaster.Master;
let position = getArrayAddIndex(nPos, master, this.Presentation.slideMasters);
if (position === null)
return false;
this.Presentation.addSlideMaster(position, master)
return true;
}
return false;
};
/**
* Applies a theme to all the slides in the presentation.
* @typeofeditors ["CPE"]
* @param {ApiTheme} oApiTheme - The presentation theme.
* @returns {boolean} - returns false if param isn't theme or presentation doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/ApplyTheme.js
*/
ApiPresentation.prototype.ApplyTheme = function(oApiTheme){
if (this.Presentation && oApiTheme.GetClassType && oApiTheme.GetClassType() === "theme")
{
this.Presentation.changeTheme(oApiTheme.ThemeInfo);
return true;
}
return false;
};
/**
* Removes a range of slides from the presentation.
* Deletes all the slides from the presentation if no parameters are specified.
* @memberof ApiPresentation
* @param {Number} [nStart=0] - The starting position for the deletion range.
* @param {Number} [nCount=ApiPresentation.GetSlidesCount()] - The number of slides to delete.
* @typeofeditors ["CPE"]
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/RemoveSlides.js
*/
ApiPresentation.prototype.RemoveSlides = function(nStart, nCount)
{
nStart = nStart || 0;
nCount = nCount || this.GetSlidesCount();
if (AscFormat.isRealNumber(nStart) && nStart > -1 && nStart < this.GetSlidesCount())
{
if (AscFormat.isRealNumber(nCount) && nCount > 0)
{
nCount = Math.min(nCount, this.GetSlidesCount());
for (var nSlide = 0; nSlide < nCount; nSlide++)
this.Presentation.removeSlide(nStart);
return true;
}
}
return false;
};
/**
* Returns the presentation width in English measure units.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @returns {EMU}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetWidth.js
*/
ApiPresentation.prototype.GetWidth = function() {
if(this.Presentation){
return this.Presentation.GetWidthEMU();
}
};
/**
* Returns the presentation height in English measure units.
* @typeofeditors ["CPE"]
* @memberof ApiPresentation
* @returns {EMU}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetHeight.js
*/
ApiPresentation.prototype.GetHeight = function() {
if(this.Presentation){
return this.Presentation.GetHeightEMU();
}
};
/**
* Converts the ApiPresentation object into the JSON object.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @param {boolean} [bWriteTableStyles=false] - Specifies whether to write used table styles to the JSON object (true) or not (false).
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/ToJSON.js
*/
ApiPresentation.prototype.ToJSON = function(bWriteTableStyles){
let oWriter = new AscJsonConverter.WriterToJSON();
let oResult = oWriter.SerPresentation(this.Presentation);
if (bWriteTableStyles)
oResult["tblStyleLst"] = oWriter.SerTableStylesForWrite();
return JSON.stringify(oResult);
};
/**
* Converts the slides from the current ApiPresentation object into the JSON objects.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @param {boolean} [nStart=0] - The index to the start slide.
* @param {boolean} [nStart=ApiPresentation.GetSlidesCount() - 1] - The index to the end slide.
* @param {boolean} [bWriteLayout=false] - Specifies if the slide layout will be written to the JSON object or not.
* @param {boolean} [bWriteMaster=false] - Specifies if the slide master will be written to the JSON object or not (bWriteMaster is false if bWriteLayout === false).
* @param {boolean} [bWriteAllMasLayouts=false] - Specifies if all child layouts from the slide master will be written to the JSON object or not.
* @param {boolean} [bWriteTableStyles=false] - Specifies whether to write used table styles to the JSON object (true) or not (false).
* @returns {JSON[]}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/SlidesToJSON.js
*/
ApiPresentation.prototype.SlidesToJSON = function(nStart, nEnd, bWriteLayout, bWriteMaster, bWriteAllMasLayouts, bWriteTableStyles){
let oWriter = new AscJsonConverter.WriterToJSON();
nStart = nStart == undefined ? 0 : nStart;
nEnd = nEnd == undefined ? this.Presentation.Slides.length - 1 : nEnd;
if (nStart < 0 || nStart >= this.Presentation.Slides.length)
return;
if (nEnd < 0 || nEnd >= this.Presentation.Slides.length)
return;
let oResult = oWriter.SerSlides(nStart, nEnd, bWriteLayout, bWriteMaster, bWriteAllMasLayouts);
if (bWriteTableStyles)
oResult["tblStyleLst"] = oWriter.SerTableStylesForWrite();
return JSON.stringify(oResult);
};
/**
* Returns all comments from the current presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @returns {ApiComment[]}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllComments.js
*/
ApiPresentation.prototype.GetAllComments = function()
{
let aCommentsData = this.Presentation.GetAllComments();
let aApiComments = [];
for(let nComment = 0; nComment < aCommentsData.length; ++nComment) {
aApiComments.push(private_GetApi().private_CreateApiComment(aCommentsData[nComment].comment));
}
return aApiComments;
};
/**
* Private method to collect all objects of a specific type from the presentation (OleObjects, Charts, Shapes, Images).
* Calls 'getObjectsMethod' method on each slide, master and layout to get the objects.
*/
ApiPresentation.prototype._collectAllObjects = function (getObjectsMethod) {
const aObjects = [];
function collectObjects(aSource) {
aSource.forEach(function (oSource) {
oSource[getObjectsMethod]().forEach(function (oObject) {
aObjects.push(oObject);
});
});
}
const aSlides = this.GetAllSlides();
const aMasters = this.GetAllSlideMasters();
// Can't use flatMap because it's not supported in IE11
const aLayouts = aMasters.reduce(function (acc, oMaster) {
return acc.concat(oMaster.GetAllLayouts());
}, []);
collectObjects(aSlides);
collectObjects(aMasters);
collectObjects(aLayouts);
return aObjects;
};
/**
* Returns an array with all the OLE objects from the current presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @returns {ApiOleObject[]}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllOleObjects.js
*/
ApiPresentation.prototype.GetAllOleObjects = function () {
return this._collectAllObjects('GetAllOleObjects');
};
/**
* Returns an array with all tables from the current presentation (including slide masters and slide layouts).
*
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @returns {ApiTable[]} An array with all tables from the current presentation.
* @since 9.1.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllTables.js
*/
ApiPresentation.prototype.GetAllTables = function () {
return this._collectAllObjects('GetAllTables');
};
/**
* Returns an array with all the chart objects from the current presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @returns {ApiChart[]}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllCharts.js
*/
ApiPresentation.prototype.GetAllCharts = function () {
return this._collectAllObjects('GetAllCharts');
};
/**
* Returns an array with all the shape objects from the current presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @returns {ApiShape[]}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllShapes.js
*/
ApiPresentation.prototype.GetAllShapes = function () {
return this._collectAllObjects('GetAllShapes');
};
/**
* Returns an array with all the image objects from the current presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @returns {ApiImage[]}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllImages.js
*/
ApiPresentation.prototype.GetAllImages = function () {
return this._collectAllObjects('GetAllImages');
};
/**
* Returns an array with all the drawing objects from the current presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @returns {Drawing[]}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetAllDrawings.js
*/
ApiPresentation.prototype.GetAllDrawings = function () {
return this._collectAllObjects('GetAllDrawings');
};
/**
* Returns the document information:
* <b>Application</b> - the application the document has been created with.
* <b>CreatedRaw</b> - the date and time when the file was created.
* <b>Created</b> - the parsed date and time when the file was created.
* <b>LastModifiedRaw</b> - the date and time when the file was last modified.
* <b>LastModified</b> - the parsed date and time when the file was last modified.
* <b>LastModifiedBy</b> - the name of the user who has made the latest change to the document.
* <b>Authors</b> - the persons who has created the file.
* <b>Title</b> - this property allows you to simplify your documents classification.
* <b>Tags</b> - this property allows you to simplify your documents classification.
* <b>Subject</b> - this property allows you to simplify your documents classification.
* <b>Comment</b> - this property allows you to simplify your documents classification.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @returns {object}
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetDocumentInfo.js
*/
ApiPresentation.prototype.GetDocumentInfo = function()
{
const oDocInfo = {
"Application": '',
"CreatedRaw": null,
"Created": '',
"LastModifiedRaw": null,
"LastModified": '',
"LastModifiedBy": '',
"Authors": [],
"Title": '',
"Tags": '',
"Subject": '',
"Comment": ''
};
const api = this.Presentation.Api;
let props = (api) ? api.asc_getAppProps() : null;
oDocInfo["Application"] = (props.asc_getApplication() || '') + (props.asc_getAppVersion() ? ' ' : '') + (props.asc_getAppVersion() || '');
let langCode = 1033; // en-US
let langName = 'en-us';
if (api.asc_getLocale) {
let locale = api.asc_getLocale();
if (locale)
langName = locale.replace('_', '-').toLowerCase();
} else if (this.Presentation.GetDefaultLanguage && window['Common']) {
langCode = this.Presentation.GetDefaultLanguage();
langName = window['Common']['util']['LanguageInfo']['getLocalLanguageName'](langCode)[0].toLowerCase();
}
props = api.asc_getCoreProps();
oDocInfo["CreatedRaw"] = props.asc_getCreated();
oDocInfo["LastModifiedRaw"] = props.asc_getModified();
try {
if (oDocInfo["CreatedRaw"])
oDocInfo["Created"] = (oDocInfo["CreatedRaw"].toLocaleString(langName, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + oDocInfo["CreatedRaw"].toLocaleString(langName, {timeStyle: 'short'}));
if (oDocInfo["LastModifiedRaw"])
oDocInfo["LastModified"] = (oDocInfo["LastModifiedRaw"].toLocaleString(langName, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + oDocInfo["LastModifiedRaw"].toLocaleString(langName, {timeStyle: 'short'}));
} catch (e) {
langName = 'en';
if (oDocInfo["CreatedRaw"])
oDocInfo["Created"] = (oDocInfo["CreatedRaw"].toLocaleString(langName, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + oDocInfo["CreatedRaw"].toLocaleString(langName, {timeStyle: 'short'}));
if (oDocInfo["LastModifiedRaw"])
oDocInfo["LastModified"] = (oDocInfo["LastModifiedRaw"].toLocaleString(langName, {year: 'numeric', month: '2-digit', day: '2-digit'}) + ' ' + oDocInfo["LastModifiedRaw"].toLocaleString(langName, {timeStyle: 'short'}));
}
const LastModifiedBy = props.asc_getLastModifiedBy();
oDocInfo["LastModifiedBy"] = AscCommon.UserInfoParser.getParsedName(LastModifiedBy);
oDocInfo["Title"] = (props.asc_getTitle() || '');
oDocInfo["Tags"] = (props.asc_getKeywords() || '');
oDocInfo["Subject"] = (props.asc_getSubject() || '');
oDocInfo["Comment"] = (props.asc_getDescription() || '');
const authors = props.asc_getCreator();
if (authors)
oDocInfo["Authors"] = authors.split(/\s*[,;]\s*/);
return oDocInfo;
};
/**
* Returns the core properties interface for the current presentation.
* This method is used to view or modify standard metadata such as title, author, and keywords.
* @memberof ApiPresentation
* @returns {ApiCore}
* @typeofeditors ["CPE"]
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetCore.js
*/
ApiPresentation.prototype.GetCore = function () {
return new AscBuilder.ApiCore(this.Presentation.Core);
};
/**
* Returns the custom properties from the current presentation.
* @memberof ApiPresentation
* @returns {ApiCustomProperties}
* @typeofeditors ["CPE"]
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetCustomProperties.js
*/
ApiPresentation.prototype.GetCustomProperties = function () {
return new AscBuilder.ApiCustomProperties(this.Presentation.CustomProperties);
};
/**
* Adds a math equation to the current presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @param {string} sText - The math equation text.
* @param {string} sFormat - The math equation format. Possible values are "unicode", "latex", and "mathml".
* @returns {boolean}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/AddMathEquation.js
*/
ApiPresentation.prototype.AddMathEquation = function (sText, sFormat) {
if (!Asc.editor) {
return false;
}
Asc.editor.addBuilderFont('Cambria Math');
Asc.editor.loadBuilderFonts(insertMathEquation);
function insertMathEquation() {
const format = AscBuilder.GetStringParameter(sFormat, "unicode");
const text = AscBuilder.GetStringParameter(sText, "");
const logicDocument = Asc.editor.getLogicDocument();
logicDocument.RemoveBeforePaste();
logicDocument.RemoveSelection();
const mathPr = new AscCommonWord.MathMenu(c_oAscMathType.Default_Text, logicDocument.GetDirectTextPr());
let mathformat = null;
switch (format) {
case 'latex':
mathformat = Asc.c_oAscMathInputType.LaTeX;
break;
case 'unicode':
mathformat = Asc.c_oAscMathInputType.Unicode;
break;
case 'mathml':
mathformat = Asc.c_oAscMathInputType.MathML;
break;
default:
mathformat = Asc.c_oAscMathInputType.LaTeX;
break;
}
logicDocument.AddToParagraph(mathPr);
const targetDocContent = editor.getGraphicController().getSelectedArray()[0].txBody.content;
const info = new CSelectedElementsInfo();
targetDocContent.GetSelectedElementsInfo(info);
const paraMath = info.GetMath();
if (!paraMath) {
return;
}
paraMath.ConvertView(false, mathformat, text);
const graphicController = Asc.editor.getGraphicController();
graphicController.startRecalculate();
}
return true;
};
/**
* Retrieves the custom XML manager associated with the presentation.
* This manager allows manipulation and access to custom XML parts within the presentation.
* @memberof ApiPresentation
* @typeofeditors ["CPE"]
* @since 9.1.0
* @returns {ApiCustomXmlParts|null} Returns an instance of ApiCustomXmlParts if the custom XML manager exists, otherwise returns null.
* @see office-js-api/Examples/{Editor}/ApiPresentation/Methods/GetCustomXmlParts.js
*/
ApiPresentation.prototype.GetCustomXmlParts = function()
{
return new AscBuilder.ApiCustomXmlParts(this.Presentation);
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiMaster
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiMaster class.
* @typeofeditors ["CPE"]
* @returns {"master"}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetClassType.js
*/
ApiMaster.prototype.GetClassType = function()
{
return "master";
};
ApiMaster.prototype.GetInternalId = function()
{
return this.Master.Get_Id();
};
/**
* Returns all layouts from the slide master.
* @typeofeditors ["CPE"]
* @returns {ApiLayout[]} - Returns an empty array if the slide master doesn't have layouts.
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetAllLayouts.js
*/
ApiMaster.prototype.GetAllLayouts = function () {
const aLayouts = this.Master.sldLayoutLst;
const aApiLayouts = [];
aLayouts.forEach(function (oLayout) {
aApiLayouts.push(new ApiLayout(oLayout));
});
return aApiLayouts;
};
/**
* Returns a layout of the specified slide master by its position.
* @typeofeditors ["CPE"]
* @param {number} nPos - Layout position.
* @returns {ApiLayout | null} - returns null if position is invalid.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetLayout.js
*/
ApiMaster.prototype.GetLayout = function(nPos)
{
if (nPos < 0 || nPos > this.Master.sldLayoutLst.length || typeof (nPos) !== 'number')
return null;
return new ApiLayout(this.Master.sldLayoutLst[nPos])
};
/**
* Returns the layout corresponding to the specified layout type of the slide master.
* @typeofeditors ["CPE"]
* @param {LayoutType} sType - The layout type.
* @returns {ApiLayout | null} - The layout at the specified position, or null if the position is invalid.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetLayoutByType.js
*/
ApiMaster.prototype.GetLayoutByType = function(sType)
{
let type = AscCommonSlide.LAYOUT_TYPE_MAP[sType];
let layout = this.Master.getMatchingLayout(type, undefined, undefined, true);
if(!layout) return null;
return new ApiLayout(layout)
};
/**
* Adds a layout to the specified slide master.
* @typeofeditors ["CPE"]
* @param {number} [nPos = ApiMaster.GetLayoutsCount()] - Position where a layout will be added.
* @param {ApiLayout} oLayout - A layout to be added.
* @returns {boolean} - returns false if oLayout isn't a layout.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/AddLayout.js
*/
ApiMaster.prototype.AddLayout = function(nPos, oLayout)
{
if (nPos < 0 || nPos > this.Master.sldLayoutLst.length)
nPos = this.Master.sldLayoutLst.length;
if (oLayout && oLayout.GetClassType && oLayout.GetClassType() === "layout")
this.Master.addToSldLayoutLstToPos(nPos, oLayout.Layout);
else
return false;
return true;
};
/**
* Removes the layouts from the current slide master.
* @typeofeditors ["CPE"]
* @param {number} nPos - Position from which a layout will be deleted.
* @param {number} [nCount = 1] - Number of layouts to delete.
* @returns {boolean} - return false if position is invalid.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/RemoveLayout.js
*/
ApiMaster.prototype.RemoveLayout = function(nPos, nCount)
{
if (this.Master && this.Master.sldLayoutLst.length > 0)
{
if (nPos >= 0 && nPos < this.Master.sldLayoutLst.length)
{
if (!nCount || nCount <= 0 || nCount > this.GetLayoutsCount())
nCount = 1;
this.Master.removeFromSldLayoutLstByPos(nPos, nCount);
return true;
}
}
return false;
};
/**
* Returns a number of layout objects.
* @typeofeditors ["CPE"]
* @returns {number}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetLayoutsCount.js
*/
ApiMaster.prototype.GetLayoutsCount = function()
{
return this.Master.sldLayoutLst.length;
};
/**
* Adds an object (image, shape or chart) to the current slide master.
* @typeofeditors ["CPE"]
* @memberof ApiMaster
* @param {ApiDrawing} oDrawing - The object which will be added to the current slide master.
* @returns {boolean} - returns false if slide master doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/AddObject.js
*/
ApiMaster.prototype.AddObject = function(oDrawing)
{
if (this.Master)
{
if (oDrawing.Drawing.group || oDrawing.Drawing.IsUseInDocument())
return false;
oDrawing.Drawing.setParent(this.Master);
this.Master.shapeAdd(this.Master.cSld.spTree.length, oDrawing.Drawing);
editor.private_checkPlaceholders(this, oDrawing.GetPlaceholder());
return true;
}
return false;
};
/**
* Removes objects (image, shape or chart) from the current slide master.
* @typeofeditors ["CPE"]
* @memberof ApiMaster
* @param {number} nPos - Position from which the object will be deleted.
* @param {number} [nCount = 1] - Number of objects to delete.
* @returns {boolean} - returns false if master doesn't exist or position is invalid or master hasn't objects.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/RemoveObject.js
*/
ApiMaster.prototype.RemoveObject = function(nPos, nCount)
{
if (this.Master && this.Master.cSld.spTree.length > 0)
{
if (nPos >= 0 && nPos < this.Master.cSld.spTree.length)
{
if (!nCount || nCount <= 0 || nCount > this.Master.cSld.spTree.length)
nCount = 1;
this.Master.shapeRemove(nPos, nCount);
return true;
}
}
return false;
};
/**
* Sets the background to the current slide master.
* @memberOf ApiMaster
* @typeofeditors ["CPE"]
* @param {ApiFill} oApiFill - The color or pattern used to fill the presentation slide master background.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/SetBackground.js
*/
ApiMaster.prototype.SetBackground = function(oApiFill){
if(oApiFill && oApiFill.GetClassType && oApiFill.GetClassType() === "fill" && this.Master){
var bg = new AscFormat.CBg();
bg.bgPr = new AscFormat.CBgPr();
bg.bgPr.Fill = oApiFill.UniFill;
this.Master.changeBackground(bg);
return true;
}
return false;
};
/**
* Clears the slide master background.
* @typeofeditors ["CPE"]
* @returns {boolean} - return false if slide master doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/ClearBackground.js
*/
ApiMaster.prototype.ClearBackground = function(){
if (!this.Master)
return false;
var apiNoFill = editor.CreateNoFill();
var bg = new AscFormat.CBg();
bg.bgPr = new AscFormat.CBgPr();
bg.bgPr.Fill = apiNoFill.UniFill;
this.Master.changeBackground(bg);
return true;
};
/**
* Creates a copy of the specified slide master object.
* @typeofeditors ["CPE"]
* @returns {ApiMaster | null} - returns new ApiMaster object that represents the copy of slide master.
* Returns null if slide doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/Copy.js
*/
ApiMaster.prototype.Copy = function(){
if (!this.Master)
return null;
var oMasterCopy = this.Master.createDuplicate();
return new ApiMaster(oMasterCopy);
};
/**
* Creates a duplicate of the specified slide master object, adds the new slide master to the slide masters collection.
* @typeofeditors ["CPE"]
* @param {number} [nPos = ApiPresentation.GetMastersCount()] - Position where the new slide master will be added.
* @returns {ApiMaster | null} - returns new ApiMaster object that represents the copy of slide master.
* Returns null if slide master doesn't exist or is not in the presentation.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/Duplicate.js
*/
ApiMaster.prototype.Duplicate = function(nPos){
if (!this.Master)
return null;
let presentation = private_GetPresentation();
let masterCopy = this.Master.createDuplicate();
let position = getAddIndex(nPos, presentation.slideMasters.length);
presentation.addSlideMaster(position, masterCopy);
return new ApiMaster(masterCopy);
};
/**
* Deletes the specified object from the parent if it exists.
* Note: Master can't be deleted if it's the last one in the presentation.
*
* @memberof ApiMaster
* @typeofeditors ["CPE"]
* @returns {boolean} - return false if master doesn't exist or is not in the presentation or couldn't be deleted (e.g. the last master).
*
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/Delete.js
*/
ApiMaster.prototype.Delete = function () {
const presentation = this.Master && this.Master.presentation;
if (!presentation) {
return false;
}
const masters = presentation.slideMasters;
if (masters.length <= 1) {
return false;
}
for (let nMaster = 0; nMaster < masters.length; nMaster++) {
if (this.Master.Id === masters[nMaster].Id) {
presentation.removeSlideMaster(nMaster, 1);
return true;
}
}
return false;
};
/**
* Returns a theme of the slide master.
* @typeofeditors ["CPE"]
* @returns {ApiTheme | null} - returns null if theme doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetTheme.js
*/
ApiMaster.prototype.GetTheme = function(){
if (this.Master && this.Master.Theme)
{
var oThemeLoadInfo = new AscCommonSlide.CThemeLoadInfo();
oThemeLoadInfo.Master = this.Master;
oThemeLoadInfo.Layouts = this.Master.sldLayoutLst;
oThemeLoadInfo.Theme = this.Master.Theme;
return new ApiTheme(oThemeLoadInfo);
}
return null;
};
/**
* Sets a theme to the slide master.
* Sets a copy of the theme object.
* @typeofeditors ["CPE"]
* @param {ApiTheme} oTheme - Presentation theme.
* @returns {boolean} - return false if oTheme isn't a theme or slide master doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/SetTheme.js
*/
ApiMaster.prototype.SetTheme = function(oTheme){
if (this.Master && oTheme && oTheme.GetClassType && oTheme.GetClassType() === "theme")
{
var oThemeCopy = oTheme.ThemeInfo.Theme.createDuplicate();
this.Master.setTheme(oThemeCopy);
return true;
}
return false;
};
/**
* Returns an array with all the drawing objects from the slide master.
* @typeofeditors ["CPE"]
* @returns {Drawing[]}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetAllDrawings.js
*/
ApiMaster.prototype.GetAllDrawings = function(){
if (!this.Master) {
return [];
}
let drawingObjects = this.Master.cSld.spTree;
return AscBuilder.GetApiDrawings(drawingObjects);
};
/**
* Returns an array with all the shape objects from the slide master.
* @typeofeditors ["CPE"]
* @returns {ApiShape[]}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetAllShapes.js
*/
ApiMaster.prototype.GetAllShapes = function(){
if(!this.Master) {
return [];
}
return private_GetAllDrawingsWithType(this.Master.cSld.spTree, AscDFH.historyitem_type_Shape,
function (oDrawing) {return new ApiShape(oDrawing);});
};
/**
* Returns an array with all the image objects from the slide master.
* @typeofeditors ["CPE"]
* @returns {ApiImage[]}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetAllImages.js
*/
ApiMaster.prototype.GetAllImages = function(){
if(!this.Master) return [];
return private_GetAllDrawingsWithType(this.Master.cSld.spTree, AscDFH.historyitem_type_ImageShape,
function (oDrawing) {return new ApiImage(oDrawing);});
};
/**
* Returns an array with all the chart objects from the slide master.
* @typeofeditors ["CPE"]
* @returns {ApiChart[]}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetAllCharts.js
*/
ApiMaster.prototype.GetAllCharts = function() {
if(!this.Master) return [];
return private_GetAllDrawingsWithType(this.Master.cSld.spTree, AscDFH.historyitem_type_ChartSpace,
function (oDrawing) {return private_GetApi().private_CreateApiChart(oDrawing);});
};
/**
* Returns an array with all the OLE objects from the slide master.
* @typeofeditors ["CPE"]
* @returns {ApiOleObject[]}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetAllOleObjects.js
*/
ApiMaster.prototype.GetAllOleObjects = function() {
if(!this.Master) return [];
return private_GetAllDrawingsWithType(this.Master.cSld.spTree, AscDFH.historyitem_type_OleObject,
function (oDrawing) {return new ApiOleObject(oDrawing);});
};
/**
* Returns an array with all tables from the slide master.
*
* @typeofeditors ["CPE"]
* @returns {ApiTable[]} An array with all tables from the slide master.
* @since 9.1.0
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetAllTables.js
*/
ApiMaster.prototype.GetAllTables = function () {
const tables = [];
if (this.Master) {
this.Master.cSld.spTree.forEach(function (obj) {
const isTable = obj.getObjectType() === AscDFH.historyitem_type_GraphicFrame && obj.isTable();
if (isTable) tables.push(new ApiTable(obj));
})
}
return tables;
};
/**
* Converts the ApiMaster object into the JSON object.
* @memberof ApiMaster
* @typeofeditors ["CPE"]
* @param {boolean} [bWriteTableStyles=false] - Specifies whether to write used table styles to the JSON object (true) or not (false).
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/ToJSON.js
*/
ApiMaster.prototype.ToJSON = function(bWriteTableStyles){
let oWriter = new AscJsonConverter.WriterToJSON();
let oResult = oWriter.SerMasterSlide(this.Master, true);
if (bWriteTableStyles)
oResult["tblStyleLst"] = oWriter.SerTableStylesForWrite();
return JSON.stringify(oResult);
};
/**
* Returns an array of drawings by the specified placeholder type.
* @memberof ApiMaster
* @typeofeditors ["CPE"]
* @param {PlaceholderType} sType - The placeholder type.
* @returns {Drawing[]}
* @since 8.2.0
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GetDrawingsByPlaceholderType.js
*/
ApiMaster.prototype.GetDrawingsByPlaceholderType = function(sType) {
let aDrawings = this.GetAllDrawings();
let nType = private_GetPlaceholderInnerType(sType);
return aDrawings.filter(function(drawing) {
return drawing.Drawing.getPlaceholderType() == nType;
});
};
/**
* Groups an array of drawings in the current slide master.
* @memberof ApiMaster
* @typeofeditors ["CPE"]
* @param {DrawingForGroup[]} aDrawings - An array of drawings to group.
* @returns {ApiGroup}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiMaster/Methods/GroupDrawings.js
*/
ApiMaster.prototype.GroupDrawings = function(aDrawings)
{
if (!Array.isArray(aDrawings) || aDrawings.length == 0)
return null;
let oMaster = this.Master;
if (aDrawings.find(function(drawing) {
return drawing.Drawing.parent != oMaster || !drawing.Drawing.IsUseInDocument();
}))
return null;
let oGraphicObjects = oMaster.graphicObjects;
oGraphicObjects.resetSelection();
aDrawings.forEach(function(drawing) {
oGraphicObjects.selectObject(drawing.Drawing, drawing.Drawing.GetAbsolutePage());
});
let canGroup = oGraphicObjects.canGroup();
if (!canGroup)
return null;
aDrawings.forEach(function(drawing) {
drawing.Drawing.recalculate();
});
let oGroup = oGraphicObjects.createGroup();
if (!oGroup) {
return null;
}
return new ApiGroup(oGroup);
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiLayout
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiLayout class.
* @typeofeditors ["CPE"]
* @returns {"layout"}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetClassType.js
*/
ApiLayout.prototype.GetClassType = function()
{
return "layout";
};
/**
* Sets a name to the current layout.
* @typeofeditors ["CPE"]
* @param {string} sName - Layout name to be set.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/SetName.js
*/
ApiLayout.prototype.SetName = function(sName)
{
if (typeof(sName) !== "string")
this.Layout.setCSldName(sName);
else
return false;
return true;
};
/**
* Returns the type of the current layout.
* @typeofeditors ["CPE"]
* @returns {LayoutType} The layout type.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetLayoutType.js
*/
ApiLayout.prototype.GetLayoutType = function()
{
this.Layout.getType();
};
/**
* Returns a name of the current layout.
* @typeofeditors ["CPE"]
* @returns {string}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetName.js
*/
ApiLayout.prototype.GetName = function()
{
return this.Layout.getName();
};
/**
* Adds an object (image, shape or chart) to the current slide layout.
* @typeofeditors ["CPE"]
* @memberof ApiLayout
* @param {ApiDrawing} oDrawing - The object which will be added to the current slide layout.
* @returns {boolean} - returns false if slide layout doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/AddObject.js
*/
ApiLayout.prototype.AddObject = function(oDrawing)
{
if (this.Layout)
{
if (oDrawing.Drawing.group || oDrawing.Drawing.IsUseInDocument())
return false;
oDrawing.Drawing.setParent(this.Layout);
this.Layout.shapeAdd(this.Layout.cSld.spTree.length, oDrawing.Drawing);
editor.private_checkPlaceholders(this, oDrawing.GetPlaceholder());
return true;
}
return false;
};
/**
* Removes objects (image, shape or chart) from the current slide layout.
* @typeofeditors ["CPE"]
* @memberof ApiLayout
* @param {number} nPos - Position from which the object will be deleted.
* @param {number} [nCount = 1] - The number of elements to delete.
* @returns {boolean} - returns false if layout doesn't exist or position is invalid or layout hasn't objects.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/RemoveObject.js
*/
ApiLayout.prototype.RemoveObject = function(nPos, nCount)
{
if (this.Layout && this.Layout.cSld.spTree.length > 0)
{
if (nPos >= 0 && nPos < this.Layout.cSld.spTree.length)
{
if (!nCount || nCount <= 0 || nCount > this.Layout.cSld.spTree.length)
nCount = 1;
this.Layout.shapeRemove(nPos, nCount);
return true;
}
}
return false;
};
/**
* Sets the background to the current slide layout.
* @memberOf ApiLayout
* @typeofeditors ["CPE"]
* @param {ApiFill} oApiFill - The color or pattern used to fill the presentation slide layout background.\
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/SetBackground.js
*/
ApiLayout.prototype.SetBackground = function(oApiFill){
if(oApiFill && oApiFill.GetClassType && oApiFill.GetClassType() === "fill" && this.Layout){
var bg = new AscFormat.CBg();
bg.bgPr = new AscFormat.CBgPr();
bg.bgPr.Fill = oApiFill.UniFill;
this.Layout.changeBackground(bg);
return true;
}
return false;
};
/**
* Clears the slide layout background.
* @typeofeditors ["CPE"]
* @returns {boolean} - return false if slide layout doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/ClearBackground.js
*/
ApiLayout.prototype.ClearBackground = function(){
if (!this.Layout)
return false;
var apiNoFill = editor.CreateNoFill();
var bg = new AscFormat.CBg();
bg.bgPr = new AscFormat.CBgPr();
bg.bgPr.Fill = apiNoFill.UniFill;
this.Layout.changeBackground(bg);
return true;
};
/**
* Sets the master background as the background of the layout.
* @typeofeditors ["CPE"]
* @returns {boolean} - returns false if master is null or master hasn't background.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/FollowMasterBackground.js
*/
ApiLayout.prototype.FollowMasterBackground = function(){
if (!this.Layout)
return false;
var oMaster = this.Layout.Master;
if (oMaster && oMaster.cSld.Bg)
{
this.Layout.changeBackground(oMaster.cSld.Bg);
return true;
}
else
return false;
};
/**
* Creates a copy of the specified slide layout object.
* Copies without master slide.
* @typeofeditors ["CPE"]
* @returns {ApiLayout | null} - returns new ApiLayout object that represents the copy of slide layout.
* Returns null if slide layout doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/Copy.js
*/
ApiLayout.prototype.Copy = function(){
if (!this.Layout)
return null;
var oLayoutCopy = this.Layout.createDuplicate();
return new ApiLayout(oLayoutCopy);
};
/**
* Deletes the specified object from the parent slide master if it exists.
* @typeofeditors ["CPE"]
* @returns {boolean} - return false if parent slide master doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/Delete.js
*/
ApiLayout.prototype.Delete = function(){
if (this.Layout && this.Layout.Master)
{
for (var nLayout = 0; nLayout < this.Layout.Master.sldLayoutLst.length; nLayout++)
{
if (this.Layout.Id === this.Layout.Master.sldLayoutLst[nLayout].Id)
{
this.Layout.Master.removeFromSldLayoutLstByPos(nLayout, 1);
return true;
}
}
}
return false;
};
/**
* Creates a duplicate of the specified slide layout object, adds the new slide layout to the slide layout collection.
* @typeofeditors ["CPE"]
* @param {number} [nPos = ApiMaster.GetLayoutsCount()] - Position where the new slide layout will be added.
* @returns {ApiLayout | null} - returns new ApiLayout object that represents the copy of slide layout.
* Returns null if slide layout doesn't exist or is not in the slide master.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/Duplicate.js
*/
ApiLayout.prototype.Duplicate = function(nPos)
{
if (this.Layout && this.Layout.Master)
{
let master = this.Layout.Master;
let layoutCopy = this.Layout.createDuplicate();
let position = getAddIndex(nPos, master.sldLayoutLst.length);
master.addToSldLayoutLstToPos(position, layoutCopy);
return new ApiLayout(layoutCopy);
}
return null;
};
/**
* Moves the specified layout to a specific location within the same collection.
* @typeofeditors ["CPE"]
* @param {number} nPos - Position where the specified slide layout will be moved to.
* @returns {boolean} - returns false if layout or parent slide master doesn't exist or position is invalid.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/MoveTo.js
*/
ApiLayout.prototype.MoveTo = function(nPos){
if (!this.Layout || !this.Layout.Master)
return false;
if (nPos < 0 || nPos >= this.Layout.Master.sldLayoutLst.length)
return false;
for (var Index = 0; Index < this.Layout.Master.sldLayoutLst.length; Index++)
{
if (this.Layout.Id === this.Layout.Master.sldLayoutLst[Index].Id)
{
this.Layout.Master.moveLayouts([Index], nPos)
return true;
}
}
};
/**
* Returns an array with all the drawing objects from the slide layout.
* @typeofeditors ["CPE"]
* @returns {Drawing[]}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetAllDrawings.js
*/
ApiLayout.prototype.GetAllDrawings = function(){
if (!this.Layout) {
return [];
}
let drawingObjects = this.Layout.cSld.spTree;
return AscBuilder.GetApiDrawings(drawingObjects);
};
/**
* Returns an array with all the shape objects from the slide layout.
* @typeofeditors ["CPE"]
* @returns {ApiShape[]}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetAllShapes.js
*/
ApiLayout.prototype.GetAllShapes = function(){
if(!this.Layout) {
return [];
}
return private_GetAllDrawingsWithType(this.Layout.cSld.spTree, AscDFH.historyitem_type_Shape,
function (oDrawing) {return new ApiShape(oDrawing);});
};
/**
* Returns an array with all the image objects from the slide layout.
* @typeofeditors ["CPE"]
* @returns {ApiImage[]}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetAllImages.js
*/
ApiLayout.prototype.GetAllImages = function(){
if(!this.Layout) {
return [];
}
return private_GetAllDrawingsWithType(this.Layout.cSld.spTree, AscDFH.historyitem_type_ImageShape,
function (oDrawing) {return new ApiImage(oDrawing);});
};
/**
* Returns an array with all the chart objects from the slide layout.
* @typeofeditors ["CPE"]
* @returns {ApiChart[]}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetAllCharts.js
*/
ApiLayout.prototype.GetAllCharts = function() {
if(!this.Layout) {
return [];
}
return private_GetAllDrawingsWithType(this.Layout.cSld.spTree, AscDFH.historyitem_type_ChartSpace,
function (oDrawing) {return private_GetApi().private_CreateApiChart(oDrawing);});
};
/**
* Returns an array with all the OLE objects from the slide layout.
* @typeofeditors ["CPE"]
* @returns {ApiOleObject[]}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetAllOleObjects.js
*/
ApiLayout.prototype.GetAllOleObjects = function(){
if(!this.Layout) return [];
return private_GetAllDrawingsWithType(this.Layout.cSld.spTree, AscDFH.historyitem_type_OleObject,
function (oDrawing) {return new ApiOleObject(oDrawing);});
};
/**
* Returns an array with all tables from the current slide layout.
*
* @typeofeditors ["CPE"]
* @returns {ApiTable[]} An array with all tables from the current slide layout.
* @sine 9.1.0
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetAllTables.js
*/
ApiLayout.prototype.GetAllTables = function () {
const tables = [];
if (this.Layout) {
this.Layout.cSld.spTree.forEach(function (obj) {
const isTable = obj.getObjectType() === AscDFH.historyitem_type_GraphicFrame && obj.isTable();
if (isTable) tables.push(new ApiTable(obj));
})
}
return tables;
};
/**
* Returns the parent slide master of the current layout.
* @typeofeditors ["CPE"]
* @returns {?ApiMaster} - returns null if parent slide master doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetMaster.js
*/
ApiLayout.prototype.GetMaster = function(){
if (this.Layout && this.Layout.Master)
return new ApiMaster(this.Layout.Master);
return null;
};
/**
* Converts the ApiLayout object into the JSON object.
* @memberof ApiLayout
* @typeofeditors ["CPE"]
* @param {boolean} [bWriteMaster=false] - Specifies if the slide master will be written to the JSON object or not.
* @param {boolean} [bWriteTableStyles=false] - Specifies whether to write used table styles to the JSON object (true) or not (false).
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/ToJSON.js
*/
ApiLayout.prototype.ToJSON = function(bWriteMaster, bWriteTableStyles){
let oWriter = new AscJsonConverter.WriterToJSON();
let oResult = oWriter.SerSlideLayout(this.Layout, bWriteMaster);
if (bWriteTableStyles)
oResult["tblStyleLst"] = oWriter.SerTableStylesForWrite();
return JSON.stringify(oResult);
};
/**
* Returns an array of drawings by the specified placeholder type.
* @memberof ApiLayout
* @typeofeditors ["CPE"]
* @param {PlaceholderType} sType - The placeholder type.
* @returns {Drawing[]}
* @since 8.2.0
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GetDrawingsByPlaceholderType.js
*/
ApiLayout.prototype.GetDrawingsByPlaceholderType = function(sType) {
let aDrawings = this.GetAllDrawings();
let nType = private_GetPlaceholderInnerType(sType);
return aDrawings.filter(function(drawing) {
return drawing.Drawing.getPlaceholderType() == nType;
});
};
/**
* Groups an array of drawings in the current layout.
* @memberof ApiLayout
* @typeofeditors ["CPE"]
* @param {DrawingForGroup[]} aDrawings - An array of drawings to group.
* @returns {ApiGroup}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiLayout/Methods/GroupDrawings.js
*/
ApiLayout.prototype.GroupDrawings = function(aDrawings)
{
if (!Array.isArray(aDrawings) || aDrawings.length == 0)
return null;
let oLayout = this.Layout;
if (aDrawings.find(function(drawing) {
return drawing.Drawing.parent != oLayout || !drawing.Drawing.IsUseInDocument();
}))
return null;
let oGraphicObjects = oLayout.graphicObjects;
oGraphicObjects.resetSelection();
aDrawings.forEach(function(drawing) {
oGraphicObjects.selectObject(drawing.Drawing, drawing.Drawing.GetAbsolutePage());
});
let canGroup = oGraphicObjects.canGroup();
if (!canGroup)
return null;
aDrawings.forEach(function(drawing) {
drawing.Drawing.recalculate();
});
let oGroup = oGraphicObjects.createGroup();
if (!oGroup) {
return null;
}
return new ApiGroup(oGroup);
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiPlaceholder
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiPlaceholder class.
* @typeofeditors ["CPE"]
* @returns {"placeholder"}
* @see office-js-api/Examples/{Editor}/ApiPlaceholder/Methods/GetClassType.js
*/
ApiPlaceholder.prototype.GetClassType = function()
{
return "placeholder";
};
/**
* Sets the placeholder type.
* @typeofeditors ["CPE"]
* @param {PlaceholderType} sType - Placeholder type
* @returns {boolean} - returns false if placeholder type doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiPlaceholder/Methods/SetType.js
*/
ApiPlaceholder.prototype.SetType = function(sType)
{
this.Placeholder.setType(private_GetPlaceholderInnerType(sType));
};
/**
* Returns the placeholder type.
* @typeofeditors ["CPE"]
* @returns {PlaceholderType} - Returns the placeholder type.
* @since 8.2.0
* @see office-js-api/Examples/{Editor}/ApiPlaceholder/Methods/GetType.js
*/
ApiPlaceholder.prototype.GetType = function()
{
return private_GetPlaceholderStrType(this.Placeholder.getType());
};
Object.defineProperty(ApiPlaceholder.prototype, "Type", {
get: function () {
return this.GetType();
},
set: function (sType) {
this.SetType(sType);
}
});
/**
* Sets the placeholder index.
* @typeofeditors ["CPE"]
* @param {number} nIdx - The placeholder index.
* @returns {boolean} - Returns false if the placeholder index wasn't set.
* @since 8.2.0
* @see office-js-api/Examples/{Editor}/ApiPlaceholder/Methods/SetIndex.js
*/
ApiPlaceholder.prototype.SetIndex = function(nIdx)
{
if (typeof(nIdx) != 'number' || nIdx < 0) {
return false;
}
nIdx >>= 0;
this.Placeholder.setIdx(nIdx);
};
/**
* Retuns the placeholder index.
* @typeofeditors ["CPE"]
* @returns {number | undefined} - Returns the placeholder index.
* @since 8.2.0
* @see office-js-api/Examples/{Editor}/ApiPlaceholder/Methods/GetIndex.js
*/
ApiPlaceholder.prototype.GetIndex = function()
{
return this.Placeholder.getIdx();
};
Object.defineProperty(ApiPlaceholder.prototype, "Index", {
get: function () {
return this.GetIndex();
},
set: function (nIndex) {
this.SetIndex(nIndex);
}
});
//------------------------------------------------------------------------------------------------------------------
//
// ApiTheme
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiTheme class.
* @typeofeditors ["CPE"]
* @returns {"theme"}
* @see office-js-api/Examples/{Editor}/ApiTheme/Methods/GetClassType.js
*/
ApiTheme.prototype.GetClassType = function()
{
return "theme";
};
/**
* Returns the slide master of the current theme.
* @typeofeditors ["CPE"]
* @returns {ApiMaster | null} - returns null if slide master doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiTheme/Methods/GetMaster.js
*/
ApiTheme.prototype.GetMaster = function()
{
if (this.ThemeInfo && this.ThemeInfo.Master)
return new ApiMaster(this.ThemeInfo.Master);
return null;
};
/**
* Sets the color scheme to the current presentation theme.
* @typeofeditors ["CPE"]
* @param {ApiThemeColorScheme} oApiColorScheme - Theme color scheme.
* @returns {boolean} - return false if color scheme doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiTheme/Methods/SetColorScheme.js
*/
ApiTheme.prototype.SetColorScheme = function(oApiColorScheme)
{
if (oApiColorScheme && oApiColorScheme.GetClassType && oApiColorScheme.GetClassType() === "themeColorScheme")
{
this.ThemeInfo.Theme.setColorScheme(oApiColorScheme.ColorScheme);
return true;
}
return false;
};
/**
* Returns the color scheme of the current theme.
* @typeofeditors ["CPE"]
* @returns {?ApiThemeColorScheme}
* @see office-js-api/Examples/{Editor}/ApiTheme/Methods/GetColorScheme.js
*/
ApiTheme.prototype.GetColorScheme = function()
{
if (this.ThemeInfo && this.ThemeInfo.Theme && this.ThemeInfo.Theme.themeElements)
{
return new ApiThemeColorScheme(this.ThemeInfo.Theme.themeElements.clrScheme, this.ThemeInfo.Theme);
}
return null;
};
/**
* Sets the format scheme to the current presentation theme.
* @typeofeditors ["CPE"]
* @param {ApiThemeFormatScheme} oApiFormatScheme - Theme format scheme.
* @returns {boolean} - return false if format scheme doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiTheme/Methods/SetFormatScheme.js
*/
ApiTheme.prototype.SetFormatScheme = function(oApiFormatScheme)
{
if (oApiFormatScheme && oApiFormatScheme.GetClassType && oApiFormatScheme.GetClassType() === "themeFormatScheme")
{
this.ThemeInfo.Theme.setFormatScheme(oApiFormatScheme.FormatScheme);
return true;
}
return false;
};
/**
* Returns the format scheme of the current theme.
* @typeofeditors ["CPE"]
* @returns {?ApiThemeFormatScheme}
* @see office-js-api/Examples/{Editor}/ApiTheme/Methods/GetFormatScheme.js
*/
ApiTheme.prototype.GetFormatScheme = function()
{
if (this.ThemeInfo && this.ThemeInfo.Theme && this.ThemeInfo.Theme.themeElements)
{
return new ApiThemeFormatScheme(this.ThemeInfo.Theme.themeElements.fmtScheme, this.ThemeInfo.Theme);
}
return null;
};
/**
* Sets the font scheme to the current presentation theme.
* @typeofeditors ["CPE"]
* @param {ApiThemeFontScheme} oApiFontScheme - Theme font scheme.
* @returns {boolean} - return false if font scheme doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiTheme/Methods/SetFontScheme.js
*/
ApiTheme.prototype.SetFontScheme = function(oApiFontScheme)
{
if (oApiFontScheme && oApiFontScheme.GetClassType && oApiFontScheme.GetClassType() === "themeFontScheme")
{
this.ThemeInfo.Theme.changeFontScheme(oApiFontScheme.FontScheme);
return true;
}
return false;
};
/**
* Returns the font scheme of the current theme.
* @typeofeditors ["CPE"]
* @returns {?ApiThemeFontScheme}
* @see office-js-api/Examples/{Editor}/ApiTheme/Methods/GetFontScheme.js
*/
ApiTheme.prototype.GetFontScheme = function()
{
if (this.ThemeInfo && this.ThemeInfo.Theme && this.ThemeInfo.Theme.themeElements)
{
return new ApiThemeFontScheme(this.ThemeInfo.Theme.themeElements.fontScheme, this.ThemeInfo.Theme);
}
return null;
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiThemeColorScheme
//
//------------------------------------------------------------------------------------------------------------------
ApiThemeColorScheme.prototype.checkThemeElement = function(fCallback)
{
let bUpdateTheme = false;
if(this.Theme && this.Theme.themeElements && this.Theme.themeElements.clrScheme === this.ColorScheme)
{
let oldScheme = this.ColorScheme;
this.ColorScheme = oldScheme.createDuplicate();
bUpdateTheme = true;
}
fCallback(this.ColorScheme);
if (bUpdateTheme)
{
this.Theme.setColorScheme(this.ColorScheme);
}
};
/**
* Returns the type of the ApiThemeColorScheme class.
* @typeofeditors ["CPE"]
* @returns {"themeColorScheme"}
* @see office-js-api/Examples/{Editor}/ApiThemeColorScheme/Methods/GetClassType.js
*/
ApiThemeColorScheme.prototype.GetClassType = function()
{
return "themeColorScheme";
};
/**
* Sets a name to the current theme color scheme.
* @typeofeditors ["CPE"]
* @param {string} sName - Theme color scheme name.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiThemeColorScheme/Methods/SetSchemeName.js
*/
ApiThemeColorScheme.prototype.SetSchemeName = function(sName)
{
if (typeof(sName) !== "string")
sName = "";
this.checkThemeElement(function (colorScheme) {
colorScheme.setName(sName);
});
return true;
};
/**
* Changes a color in the theme color scheme.
* @typeofeditors ["CPE"]
* @param {number} nPos - Color position in the color scheme which will be changed.
* @param {ApiUniColor | ApiRGBColor} oColor - New color of the theme color scheme.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiThemeColorScheme/Methods/ChangeColor.js
*/
ApiThemeColorScheme.prototype.ChangeColor = function(nPos, oColor)
{
if (nPos < 0 || nPos > 12 || (oColor.GetClassType() !== "rgbColor" && oColor.GetClassType() !== "uniColor"))
return false;
this.checkThemeElement(function (colorScheme) {
if (nPos <= 5)
colorScheme.addColor(nPos, oColor.Unicolor);
else if (nPos > 5)
colorScheme.addColor(nPos + 2, oColor.Unicolor)
});
return true;
};
/**
* Creates a copy of the current theme color scheme.
* @typeofeditors ["CPE"]
* @returns {ApiThemeColorScheme}
* @see office-js-api/Examples/{Editor}/ApiThemeColorScheme/Methods/Copy.js
*/
ApiThemeColorScheme.prototype.Copy = function()
{
return new ApiThemeColorScheme(this.ColorScheme.createDuplicate(), null);
};
/**
* Converts the ApiThemeColorScheme object into the JSON object.
* @memberof ApiThemeColorScheme
* @typeofeditors ["CPE"]
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiThemeColorScheme/Methods/ToJSON.js
*/
ApiThemeColorScheme.prototype.ToJSON = function(){
var oWriter = new AscJsonConverter.WriterToJSON();
return JSON.stringify(oWriter.SerClrScheme(this.ColorScheme));
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiThemeFormatScheme
//
//------------------------------------------------------------------------------------------------------------------
ApiThemeFormatScheme.prototype.checkThemeElement = function(fCallback)
{
let bUpdateTheme = false;
if(this.Theme && this.Theme.themeElements && this.Theme.themeElements.fmtScheme === this.FormatScheme)
{
let oldScheme = this.FormatScheme;
this.FormatScheme = oldScheme.createDuplicate();
bUpdateTheme = true;
}
fCallback(this.FormatScheme);
if (bUpdateTheme)
{
this.Theme.setFormatScheme(this.FormatScheme);
}
};
/**
* Returns the type of the ApiThemeFormatScheme class.
* @typeofeditors ["CPE"]
* @returns {"themeFormatScheme"}
* @see office-js-api/Examples/{Editor}/ApiThemeFormatScheme/Methods/GetClassType.js
*/
ApiThemeFormatScheme.prototype.GetClassType = function()
{
return "themeFormatScheme";
};
/**
* Sets a name to the current theme format scheme.
* @typeofeditors ["CPE"]
* @param {string} sName - Theme format scheme name.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiThemeFormatScheme/Methods/SetSchemeName.js
*/
ApiThemeFormatScheme.prototype.SetSchemeName = function(sName)
{
if (typeof(sName) !== "string")
sName = "";
this.checkThemeElement(function (formatScheme) {
formatScheme.setName(sName);
});
return true;
};
/**
* Sets the fill styles to the current theme format scheme.
* @typeofeditors ["CPE"]
* @param {ApiFill[]} arrFill - The array of fill styles must contain 3 elements - subtle, moderate and intense fills.
* If an array is empty or NoFill elements are in the array, it will be filled with the Api.CreateNoFill() elements.
* @see office-js-api/Examples/{Editor}/ApiThemeFormatScheme/Methods/ChangeFillStyles.js
*/
ApiThemeFormatScheme.prototype.ChangeFillStyles = function(arrFill)
{
if (!arrFill)
arrFill = [];
this.checkThemeElement(function (formatScheme) {
formatScheme.fillStyleLst = [];
for (let nFill = 0; nFill < 3; nFill++)
{
if (arrFill[nFill] && arrFill[nFill].GetClassType() === "fill")
formatScheme.addFillToStyleLst(arrFill[nFill].UniFill);
else
formatScheme.addFillToStyleLst(editor.CreateNoFill().UniFill);
}
});
return true;
};
/**
* Sets the background fill styles to the current theme format scheme.
* @typeofeditors ["CPE"]
* @param {ApiFill[]} arrBgFill - The array of background fill styles must contain 3 elements - subtle, moderate and intense fills.
* If an array is empty or NoFill elements are in the array, it will be filled with the Api.CreateNoFill() elements.
* @see office-js-api/Examples/{Editor}/ApiThemeFormatScheme/Methods/ChangeBgFillStyles.js
*/
ApiThemeFormatScheme.prototype.ChangeBgFillStyles = function(arrBgFill)
{
if (!arrBgFill)
arrBgFill = [];
this.checkThemeElement(function (formatScheme) {
formatScheme.bgFillStyleLst = [];
for (let nFill = 0; nFill < 3; nFill++)
{
if (arrBgFill[nFill] && arrBgFill[nFill].GetClassType() === "fill")
formatScheme.addBgFillToStyleLst(arrBgFill[nFill].UniFill);
else
formatScheme.addBgFillToStyleLst(editor.CreateNoFill().UniFill);
}
});
return true;
};
/**
* Sets the line styles to the current theme format scheme.
* @typeofeditors ["CPE"]
* @param {ApiStroke[]} arrLine - The array of line styles must contain 3 elements - subtle, moderate and intense fills.
* If an array is empty or ApiStroke elements are with no fill, it will be filled with the Api.CreateStroke(0, Api.CreateNoFill()) elements.
* @see office-js-api/Examples/{Editor}/ApiThemeFormatScheme/Methods/ChangeLineStyles.js
*/
ApiThemeFormatScheme.prototype.ChangeLineStyles = function(arrLine)
{
if (!arrLine)
arrLine = [];
this.checkThemeElement(function (formatScheme) {
formatScheme.lnStyleLst = [];
for (let nLine = 0; nLine < 3; nLine++)
{
if (arrLine[nLine] && arrLine[nLine].GetClassType() === "stroke")
formatScheme.addLnToStyleLst(arrLine[nLine].Ln);
else
formatScheme.addLnToStyleLst(editor.CreateStroke(0, editor.CreateNoFill()).Ln);
}
});
return true;
};
// /**
// * **Need to do**
// * Sets the effect styles to the current theme format scheme.
// * @typeofeditors ["CPE"]
// * @param {?Array} arrEffect - The array of effect styles must contain 3 elements - subtle, moderate and intense fills.
// * If an array is empty or NoFill elements are in the array, it will be filled with the Api.CreateStroke(0, Api.CreateNoFill()) elements.
// * @returns {boolean}
// * @see office-js-api/Examples/{Editor}/ApiThemeFormatScheme/Methods/ChangeEffectStyles.js
// */
// ApiThemeFormatScheme.prototype.ChangeEffectStyles = function(arrEffect)
// {
// // if (!arrEffect)
// // arrEffect = [];
// // this.FormatScheme.effectStyleLst = [];
// // for (var nFill = 0; nFill < 3; nFill++)
// // {
// // if (arrEffect[nFill] && arrEffect[nFill].GetClassType() === "stroke")
// // this.FormatScheme.addEffectToStyleLst(arrEffect[nFill].UniFill);
// // else
// // this.FormatScheme.addEffectToStyleLst(editor.CreateNoFill().UniFill);
// // }
// // return true;
// };
/**
* Creates a copy of the current theme format scheme.
* @typeofeditors ["CPE"]
* @returns {ApiThemeFormatScheme}
* @see office-js-api/Examples/{Editor}/ApiThemeFormatScheme/Methods/Copy.js
*/
ApiThemeFormatScheme.prototype.Copy = function()
{
return new ApiThemeFormatScheme(this.FormatScheme.createDuplicate());
};
/**
* Converts the ApiThemeFormatScheme object into the JSON object.
* @memberof ApiThemeFormatScheme
* @typeofeditors ["CPE"]
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiThemeFormatScheme/Methods/ToJSON.js
*/
ApiThemeFormatScheme.prototype.ToJSON = function(){
var oWriter = new AscJsonConverter.WriterToJSON();
return JSON.stringify(oWriter.SerFmtScheme(this.FormatScheme));
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiThemeFontScheme
//
//------------------------------------------------------------------------------------------------------------------
ApiThemeFontScheme.prototype.checkThemeElement = function(fCallback)
{
let bUpdateTheme = false;
if(this.Theme && this.Theme.themeElements && this.Theme.themeElements.fontScheme === this.FontScheme)
{
let oldScheme = this.FontScheme;
this.FontScheme = oldScheme.createDuplicate();
bUpdateTheme = true;
}
let bRet = fCallback(this.FontScheme);
if (bUpdateTheme)
{
this.Theme.setFontScheme(this.FontScheme);
}
return bRet;
};
/**
* Returns the type of the ApiThemeFontScheme class.
* @typeofeditors ["CPE"]
* @returns {"themeFontScheme"}
* @see office-js-api/Examples/{Editor}/ApiThemeFontScheme/Methods/GetClassType.js
*/
ApiThemeFontScheme.prototype.GetClassType = function()
{
return "themeFontScheme";
};
/**
* Sets a name to the current theme font scheme.
* @typeofeditors ["CPE"]
* @param {string} sName - Theme font scheme name.
* @returns {boolean} - returns false if font scheme doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiThemeFontScheme/Methods/SetSchemeName.js
*/
ApiThemeFontScheme.prototype.SetSchemeName = function(sName)
{
if (typeof(sName) !== "string")
sName = "";
return this.checkThemeElement(function (fontScheme) {
if (fontScheme)
{
fontScheme.setName(sName);
return true;
}
else
return false;
});
};
/**
* Sets the fonts to the current theme font scheme.
* @typeofeditors ["CPE"]
* @memberof ApiThemeFontScheme
* @param {string} mjLatin - The major theme font applied to the latin text.
* @param {string} mjEa - The major theme font applied to the east asian text.
* @param {string} mjCs - The major theme font applied to the complex script text.
* @param {string} mnLatin - The minor theme font applied to the latin text.
* @param {string} mnEa - The minor theme font applied to the east asian text.
* @param {string} mnCs - The minor theme font applied to the complex script text.
* @see office-js-api/Examples/{Editor}/ApiThemeFontScheme/Methods/SetFonts.js
*/
ApiThemeFontScheme.prototype.SetFonts = function(mjLatin, mjEa, mjCs, mnLatin, mnEa, mnCs){
this.checkThemeElement(function (fontScheme) {
var oMajorFontCollection = fontScheme.majorFont;
var oMinorFontCollection = fontScheme.minorFont;
if (typeof(mjLatin) === "string")
oMajorFontCollection.setLatin(mjLatin);
if (typeof(mjEa) === "string")
oMajorFontCollection.setEA(mjEa);
if (typeof(mjCs) === "string")
oMajorFontCollection.setCS(mjCs);
if (typeof(mnLatin) === "string")
oMinorFontCollection.setLatin(mnLatin);
if (typeof(mnEa) === "string")
oMinorFontCollection.setEA(mnEa);
if (typeof(mnCs) === "string")
oMinorFontCollection.setCS(mnCs);
});
};
/**
* Creates a copy of the current theme font scheme.
* @typeofeditors ["CPE"]
* @returns {ApiThemeFontScheme}
* @see office-js-api/Examples/{Editor}/ApiThemeFontScheme/Methods/Copy.js
*/
ApiThemeFontScheme.prototype.Copy = function()
{
return new ApiThemeFontScheme(this.FontScheme.createDuplicate());
};
/**
* Converts the ApiThemeFontScheme object into the JSON object.
* @memberof ApiThemeFontScheme
* @typeofeditors ["CPE"]
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiThemeFontScheme/Methods/ToJSON.js
*/
ApiThemeFontScheme.prototype.ToJSON = function(){
var oWriter = new AscJsonConverter.WriterToJSON();
return JSON.stringify(oWriter.SerFontScheme(this.FontScheme));
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiSlide
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiSlide class.
* @typeofeditors ["CPE"]
* @returns {"slide"}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetClassType.js
*/
ApiSlide.prototype.GetClassType = function()
{
return "slide";
};
/**
* Removes all the objects from the current slide.
* @typeofeditors ["CPE"]
* @memberof ApiSlide
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/RemoveAllObjects.js
*/
ApiSlide.prototype.RemoveAllObjects = function(){
if(this.Slide){
var spTree = this.Slide.cSld.spTree;
for(var i = spTree.length - 1; i > -1; --i){
this.Slide.removeFromSpTreeById(spTree[i].Get_Id());
}
}
};
/**
* Adds an object (image, shape or chart) to the current presentation slide.
* @typeofeditors ["CPE"]
* @memberof ApiSlide
* @param {ApiDrawing} oDrawing - The object which will be added to the current presentation slide.
* @returns {boolean} - returns false if slide doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/AddObject.js
*/
ApiSlide.prototype.AddObject = function(oDrawing){
if(this.Slide){
if (oDrawing.Drawing.group || oDrawing.Drawing.IsUseInDocument())
return false;
oDrawing.Drawing.setParent(this.Slide);
this.Slide.shapeAdd(this.Slide.cSld.spTree.length, oDrawing.Drawing);
editor.private_checkPlaceholders(this, oDrawing.GetPlaceholder());
return true;
}
return false;
};
/**
* Adds a comment to the current slide.
*
* @typeofeditors ["CPE"]
* @memberof ApiSlide
* @param {number} posX - The X position (in EMU) of the comment (defaults to 0).
* @param {number} posY - The Y position (in EMU) of the comment (defaults to 0).
* @param {string} text - The comment text.
* @param {string} [author] - The author's name (defaults to the current user name).
* @param {string} [userId] - The user ID of the comment author (defaults to the current user ID).
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/AddComment.js
*/
ApiSlide.prototype.AddComment = function (posX, posY, text, author, userId) {
if (!text || typeof text !== 'string') return false;
const currentDate = new Date();
const commentData = new AscCommon.CCommentData();
commentData.m_sText = text;
commentData.m_sUserName = author || AscCommon.UserInfoParser.getCurrentName();
commentData.m_sUserId = userId || Asc.editor.documentUserId;
commentData.m_sOOTime = currentDate.getTime().toString();
commentData.m_nTimeZoneBias = currentDate.getTimezoneOffset();
commentData.m_sTime = (currentDate.getTime() - currentDate.getTimezoneOffset() * 60 * 1000).toString();
commentData.m_sGuid = AscCommon.CreateGUID();
const comment = this.Slide.presentation.AddComment(commentData);
if (!comment) return false;
if (!AscFormat.isRealNumber(posX)) posX = 0;
if (!AscFormat.isRealNumber(posY)) posY = 0;
const xMm = private_EMU2MM(posX);
const yMm = private_EMU2MM(posY);
comment.setPosition(xMm, yMm);
return true;
};
/**
* Removes objects (image, shape or chart) from the current slide.
* @typeofeditors ["CPE"]
* @memberof ApiSlide
* @param {number} nPos - Position from which the object will be deleted.
* @param {number} [nCount = 1] - The number of elements to delete.
* @returns {boolean} - returns false if slide doesn't exist or position is invalid or slide hasn't objects.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/RemoveObject.js
*/
ApiSlide.prototype.RemoveObject = function(nPos, nCount)
{
if (this.Slide && this.Slide.cSld.spTree.length > 0)
{
if (nPos >= 0 && nPos < this.Slide.cSld.spTree.length)
{
if (!nCount || nCount <= 0 || nCount > this.Slide.cSld.spTree.length)
nCount = 1;
this.Slide.shapeRemove(nPos, nCount);
return true;
}
}
return false;
};
/**
* Sets the background to the current presentation slide.
* @memberOf ApiSlide
* @typeofeditors ["CPE"]
* @param {ApiFill} oApiFill - The color or pattern used to fill the presentation slide background.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/SetBackground.js
*/
ApiSlide.prototype.SetBackground = function(oApiFill){
if(oApiFill && oApiFill.GetClassType && oApiFill.GetClassType() === "fill" && this.Slide){
var bg = new AscFormat.CBg();
bg.bgPr = new AscFormat.CBgPr();
bg.bgPr.Fill = oApiFill.UniFill;
this.Slide.changeBackground(bg);
this.Slide.recalculateBackground();
return true;
}
return false;
};
/**
* Returns the visibility of the current presentation slide.
* @memberOf ApiSlide
* @typeofeditors ["CPE"]
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetVisible.js
*/
ApiSlide.prototype.GetVisible = function(){
if(this.Slide){
return this.Slide.isVisible();
}
return false;
};
/**
* Sets the visibility to the current presentation slide.
* @memberOf ApiSlide
* @typeofeditors ["CPE"]
* @param {boolean} value - Slide visibility.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/SetVisible.js
*/
ApiSlide.prototype.SetVisible = function(value){
if(this.Slide){
this.Slide.setShow(value);
return true;
}
return false;
};
/**
* Returns the slide width in English measure units.
* @typeofeditors ["CPE"]
* @returns {EMU}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetWidth.js
*/
ApiSlide.prototype.GetWidth = function(){
if(this.Slide){
return this.Slide.Width*36000;
}
return 0;
};
/**
* Returns the slide height in English measure units.
* @typeofeditors ["CPE"]
* @returns {EMU}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetHeight.js
*/
ApiSlide.prototype.GetHeight = function(){
if(this.Slide){
return this.Slide.Height*36000;
}
return 0;
};
/**
* Applies the specified layout to the current slide.
* The layout must be in slide master.
* @typeofeditors ["CPE"]
* @param {ApiLayout} oLayout - Layout to be applied.
* @returns {boolean} - returns false if slide doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/ApplyLayout.js
*/
ApiSlide.prototype.ApplyLayout = function(oLayout){
if (!this.Slide || !oLayout || !oLayout.Layout.Master)
return false;
this.Slide.changeLayout(oLayout.Layout);
return true;
};
/**
* Deletes the current slide from the presentation.
* @typeofeditors ["CPE"]
* @returns {boolean} - returns false if slide doesn't exist or is not in the presentation.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/Delete.js
*/
ApiSlide.prototype.Delete = function(){
if (!this.Slide)
return false;
let oPresentation = private_GetPresentation();
let nPosToDelete = this.GetSlideIndex();
if (nPosToDelete > -1)
{
oPresentation.removeSlide(nPosToDelete);
return true;
}
return false;
};
/**
* Creates a copy of the current slide object.
* @typeofeditors ["CPE"]
* @returns {ApiSlide | null} - returns new ApiSlide object that represents the duplicate slide.
* Returns null if slide doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/Copy.js
*/
ApiSlide.prototype.Copy = function(){
if (!this.Slide)
return null;
var oSlideCopy = this.Slide.createDuplicate();
return new ApiSlide(oSlideCopy);
};
/**
* Creates a duplicate of the specified slide object, adds the new slide to the slides collection.
* @typeofeditors ["CPE"]
* @param {number} [nPos = ApiPresentation.GetSlidesCount()] - Position where the new slide will be added.
* @returns {ApiSlide | null} - returns new ApiSlide object that represents the duplicate slide.
* Returns null if slide doesn't exist or is not in the presentation.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/Duplicate.js
*/
ApiSlide.prototype.Duplicate = function(nPos)
{
if (!this.Slide)
return null;
let presentation = private_GetPresentation();
let slideCopy = this.Slide.createDuplicate();
let position = getAddIndex(nPos, presentation.Slides.length);
presentation.insertSlide(position, slideCopy);
return new ApiSlide(slideCopy);
};
/**
* Moves the current slide to a specific location within the same collection.
* @typeofeditors ["CPE"]
* @param {number} nPos - Position where the current slide will be moved to.
* @returns {boolean} - returns false if slide doesn't exist or position is invalid or slide is not in the presentation.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/MoveTo.js
*/
ApiSlide.prototype.MoveTo = function(nPos){
var oPresentation = private_GetPresentation();
if (!this.Slide || nPos < 0 || nPos > oPresentation.Slides.length)
return false;
for (var Index = 0; Index < oPresentation.Slides.length; Index++)
{
if (this.Slide.Id === oPresentation.Slides[Index].Id)
{
oPresentation.moveSlides([Index], nPos)
return true;
}
}
return false;
};
/**
* Returns a position of the current slide in the presentation.
* @typeofeditors ["CPE"]
* @returns {number} - returns -1 if slide doesn't exist or is not in the presentation.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetSlideIndex.js
*/
ApiSlide.prototype.GetSlideIndex = function (){
if (!this.Slide)
return -1;
var oPresentation = private_GetPresentation();
for (var Index = 0; Index < oPresentation.Slides.length; Index++)
{
if (this.Slide.Id === oPresentation.Slides[Index].Id)
{
return Index;
}
}
return -1;
};
/**
* Clears the slide background.
* @typeofeditors ["CPE"]
* @returns {boolean} - return false if slide doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/ClearBackground.js
*/
ApiSlide.prototype.ClearBackground = function(){
if (!this.Slide)
return false;
var apiNoFill = editor.CreateNoFill();
var bg = new AscFormat.CBg();
bg.bgPr = new AscFormat.CBgPr();
bg.bgPr.Fill = apiNoFill.UniFill;
this.Slide.changeBackground(bg);
this.Slide.recalculateBackground();
return true;
};
/**
* Sets the layout background as the background of the slide.
* @typeofeditors ["CPE"]
* @returns {boolean} - returns false if layout is null or layout hasn't background or slide doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/FollowLayoutBackground.js
*/
ApiSlide.prototype.FollowLayoutBackground = function(){
if (!this.Slide)
return false;
var Layout = this.Slide.Layout;
if (Layout && Layout.cSld.Bg)
{
this.Slide.changeBackground(Layout.cSld.Bg);
this.Slide.recalculateBackground();
return true;
}
else
return false;
};
/**
* Sets the master background as the background of the slide.
* @typeofeditors ["CPE"]
* @returns {boolean} - returns false if master is null or master hasn't background or slide doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/FollowMasterBackground.js
*/
ApiSlide.prototype.FollowMasterBackground = function(){
if (!this.Slide)
return false;
var oMaster = this.Slide.Layout.Master;
if (oMaster && oMaster.cSld.Bg)
{
this.Slide.changeBackground(oMaster.cSld.Bg);
return true;
}
else
return false;
};
/**
* Applies the specified theme to the current slide.
* @typeofeditors ["CPE"]
* @param {ApiTheme} oApiTheme - Presentation theme.
* @returns {boolean} - returns false if master is null or master hasn't background.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/ApplyTheme.js
*/
ApiSlide.prototype.ApplyTheme = function(oApiTheme){
if (!this.Slide || !oApiTheme || !oApiTheme.GetClassType || oApiTheme.GetClassType() !== "theme")
return false;
var oPresentation = private_GetPresentation();
var i;
oPresentation.clearThemeTimeouts();
for (i = 0; i < oPresentation.slideMasters.length; ++i) {
if (oPresentation.slideMasters[i] === oApiTheme.ThemeInfo.Master) {
break;
}
}
if (i === oPresentation.slideMasters.length) {
oPresentation.pushSlideMaster(oApiTheme.ThemeInfo.Master);
}
var oldMaster = this.Slide && this.Slide.Layout && this.Slide.Layout.Master;
var _new_master = oApiTheme.ThemeInfo.Master;
_new_master.presentation = oPresentation;
oApiTheme.ThemeInfo.Master.changeSize(oPresentation.GetWidthMM(), oPresentation.GetHeightMM());
var oContent, oMasterSp, oMasterContent, oSp;
if (oldMaster && oldMaster.hf) {
oApiTheme.ThemeInfo.Master.setHF(oldMaster.hf.createDuplicate());
if (oldMaster.hf.dt !== false) {
oMasterSp = oldMaster.getMatchingShape(AscFormat.phType_dt, null, false, {});
if (oMasterSp) {
oMasterContent = oMasterSp.getDocContent && oMasterSp.getDocContent();
if (oMasterContent) {
oSp = oApiTheme.ThemeInfo.Master.getMatchingShape(AscFormat.phType_dt, null, false, {});
if (oSp) {
oContent = oSp.getDocContent && oSp.getDocContent();
oContent.Copy2(oMasterContent);
}
for (i = 0; i < oApiTheme.ThemeInfo.Master.sldLayoutLst.length; ++i) {
oSp = oApiTheme.ThemeInfo.Master.sldLayoutLst[i].getMatchingShape(AscFormat.phType_dt, null, false, {});
if (oSp) {
oContent = oSp.getDocContent && oSp.getDocContent();
oContent.Copy2(oMasterContent);
}
}
}
}
}
if (oldMaster.hf.hdr !== false) {
oMasterSp = oldMaster.getMatchingShape(AscFormat.phType_hdr, null, false, {});
if (oMasterSp) {
oMasterContent = oMasterSp.getDocContent && oMasterSp.getDocContent();
if (oMasterContent) {
oSp = oApiTheme.ThemeInfo.Master.getMatchingShape(AscFormat.phType_hdr, null, false, {});
if (oSp) {
oContent = oSp.getDocContent && oSp.getDocContent();
oContent.Copy2(oMasterContent);
}
for (i = 0; i < oApiTheme.ThemeInfo.Master.sldLayoutLst.length; ++i) {
oSp = oApiTheme.ThemeInfo.Master.sldLayoutLst[i].getMatchingShape(AscFormat.phType_hdr, null, false, {});
if (oSp) {
oContent = oSp.getDocContent && oSp.getDocContent();
oContent.Copy2(oMasterContent);
}
}
}
}
}
if (oldMaster.hf.ftr !== false) {
oMasterSp = oldMaster.getMatchingShape(AscFormat.phType_ftr, null, false, {});
if (oMasterSp) {
oMasterContent = oMasterSp.getDocContent && oMasterSp.getDocContent();
if (oMasterContent) {
oSp = oApiTheme.ThemeInfo.Master.getMatchingShape(AscFormat.phType_ftr, null, false, {});
if (oSp) {
oContent = oSp.getDocContent && oSp.getDocContent();
oContent.Copy2(oMasterContent);
}
for (i = 0; i < oApiTheme.ThemeInfo.Master.sldLayoutLst.length; ++i) {
oSp = oApiTheme.ThemeInfo.Master.sldLayoutLst[i].getMatchingShape(AscFormat.phType_ftr, null, false, {});
if (oSp) {
oContent = oSp.getDocContent && oSp.getDocContent();
oContent.Copy2(oMasterContent);
}
}
}
}
}
}
for (i = 0; i < oApiTheme.ThemeInfo.Master.sldLayoutLst.length; ++i) {
oApiTheme.ThemeInfo.Master.sldLayoutLst[i].changeSize(oPresentation.GetWidthMM(), oPresentation.GetHeightMM());
}
var new_layout;
if (this.Slide.Layout.calculatedType == null) {
this.Slide.Layout.calculateType();
}
new_layout = _new_master.getMatchingLayout(this.Slide.Layout.type, this.Slide.Layout.matchingName, this.Slide.Layout.cSld.name, true);
if (!isRealObject(new_layout)) {
new_layout = _new_master.sldLayoutLst[0];
}
this.Slide.setLayout(new_layout);
this.Slide.checkNoTransformPlaceholder();
return true;
};
/**
* Returns a layout of the current slide.
* @typeofeditors ["CPE"]
* @returns {ApiLayout | null} - returns null if slide or layout doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetLayout.js
*/
ApiSlide.prototype.GetLayout = function(){
if (this.Slide && this.Slide.Layout)
return new ApiLayout(this.Slide.Layout);
return null;
};
/**
* Returns a theme of the current slide.
* @typeofeditors ["CPE"]
* @returns {ApiTheme} - returns null if slide or layout or master or theme doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetTheme.js
*/
ApiSlide.prototype.GetTheme = function(){
if (this.Slide && this.Slide.Layout && this.Slide.Layout.Master && this.Slide.Layout.Master.Theme)
{
var oThemeLoadInfo = new AscCommonSlide.CThemeLoadInfo();
oThemeLoadInfo.Master = this.Slide.Layout.Master;
oThemeLoadInfo.Layouts = this.Slide.Layout.Master.sldLayoutLst;
oThemeLoadInfo.Theme = this.Slide.Layout.Master.Theme;
return new ApiTheme(oThemeLoadInfo);
}
return null;
};
/**
* Returns an array with all the drawing objects from the slide.
* @typeofeditors ["CPE"]
* @returns {Drawing[]}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetAllDrawings.js
*/
ApiSlide.prototype.GetAllDrawings = function(){
if (!this.Slide) {
return [];
}
let drawingObjects = this.Slide.getDrawingObjects();
return AscBuilder.GetApiDrawings(drawingObjects);
};
/**
* Returns an array with all the shape objects from the slide.
* @typeofeditors ["CPE"]
* @returns {ApiShape[]}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetAllShapes.js
*/
ApiSlide.prototype.GetAllShapes = function(){
if(!this.Slide) {
return [];
}
return private_GetAllDrawingsWithType(this.Slide.cSld.spTree, AscDFH.historyitem_type_Shape,
function (oDrawing) {return new ApiShape(oDrawing);});
};
/**
* Returns an array with all the image objects from the slide.
* @typeofeditors ["CPE"]
* @returns {ApiImage[]}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetAllImages.js
*/
ApiSlide.prototype.GetAllImages = function() {
if(!this.Slide) {
return [];
}
return private_GetAllDrawingsWithType(this.Slide.cSld.spTree, AscDFH.historyitem_type_ImageShape,
function (oDrawing) {return new ApiImage(oDrawing);});
};
/**
* Returns an array with all the chart objects from the slide.
* @typeofeditors ["CPE"]
* @returns {ApiChart[]}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetAllCharts.js
*/
ApiSlide.prototype.GetAllCharts = function() {
if(!this.Slide) {
return [];
}
return private_GetAllDrawingsWithType(this.Slide.cSld.spTree, AscDFH.historyitem_type_ChartSpace,
function (oDrawing) {return private_GetApi().private_CreateApiChart(oDrawing);});
};
/**
* Returns an array with all the OLE objects from the slide.
* @typeofeditors ["CPE"]
* @returns {ApiOleObject[]}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetAllOleObjects.js
*/
ApiSlide.prototype.GetAllOleObjects = function() {
if(!this.Slide) return [];
return private_GetAllDrawingsWithType(this.Slide.cSld.spTree, AscDFH.historyitem_type_OleObject,
function (oDrawing) {return new ApiOleObject(oDrawing);});
};
/**
* Returns an array with all tables from the current slide.
*
* @typeofeditors ["CPE"]
* @returns {ApiTable[]} An array with all tables from the current slide.
* @since 9.1.0
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetAllTables.js
*/
ApiSlide.prototype.GetAllTables = function () {
const tables = [];
if (this.Slide) {
this.Slide.cSld.spTree.forEach(function (obj) {
const isTable = obj.getObjectType() === AscDFH.historyitem_type_GraphicFrame && obj.isTable();
if (isTable) tables.push(new ApiTable(obj));
})
}
return tables;
};
/**
* Converts the ApiSlide object into the JSON object.
* @memberof ApiSlide
* @typeofeditors ["CPE"]
* @param {boolean} [bWriteLayout=false] - Specifies if the slide layout will be written to the JSON object or not.
* @param {boolean} [bWriteMaster=false] - Specifies if the slide master will be written to the JSON object or not (bWriteMaster is false if bWriteLayout === false).
* @param {boolean} [bWriteAllMasLayouts=false] - Specifies if all child layouts from the slide master will be written to the JSON object or not.
* @param {boolean} [bWriteTableStyles=false] - Specifies whether to write used table styles to the JSON object (true) or not (false).
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/ToJSON.js
*/
ApiSlide.prototype.ToJSON = function(bWriteLayout, bWriteMaster, bWriteAllMasLayouts, bWriteTableStyles){
let oWriter = new AscJsonConverter.WriterToJSON();
let oResult = oWriter.SerSlide(this.Slide, bWriteLayout, bWriteMaster, bWriteAllMasLayouts);
if (bWriteTableStyles)
oResult["tblStyleLst"] = oWriter.SerTableStylesForWrite();
return JSON.stringify(oResult);
};
/**
* Returns an array of drawings by the specified placeholder type.
* @memberof ApiSlide
* @typeofeditors ["CPE"]
* @param {PlaceholderType} sType - The placeholder type.
* @returns {Drawing[]}
* @since 8.2.0
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetDrawingsByPlaceholderType.js
*/
ApiSlide.prototype.GetDrawingsByPlaceholderType = function(sType) {
let aDrawings = this.GetAllDrawings();
let nType = private_GetPlaceholderInnerType(sType);
return aDrawings.filter(function(drawing) {
return drawing.Drawing.getPlaceholderType() == nType;
});
};
/**
* Selects the current slide.
* @memberof ApiSlide
* @typeofeditors ["CPE"]
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/Select.js
*/
ApiSlide.prototype.Select = function() {
if(!Asc.editor.isNormalMode())
return;
let oThumbnails = Asc.editor.getThumbnailsManager();
if(!oThumbnails) return;
oThumbnails.SetFocusElement(AscCommon.FOCUS_OBJECT_THUMBNAILS);
oThumbnails.SelectSlides([this.GetSlideIndex()], false);
};
/**
* Groups an array of drawings in the current slide.
* @memberof ApiSlide
* @typeofeditors ["CPE"]
* @param {DrawingForGroup[]} aDrawings - An array of drawings to group.
* @returns {ApiGroup}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GroupDrawings.js
*/
ApiSlide.prototype.GroupDrawings = function(aDrawings)
{
if (!Array.isArray(aDrawings) || aDrawings.length == 0)
return null;
let nSlideIdx = this.GetSlideIndex();
if (aDrawings.find(function(drawing) {
return drawing.Drawing.getSlideIndex() !== nSlideIdx || !drawing.Drawing.IsUseInDocument();
}))
return null;
let oSlide = this.Slide;
let oGraphicObjects = oSlide.graphicObjects;
oGraphicObjects.resetSelection();
aDrawings.forEach(function(drawing) {
oGraphicObjects.selectObject(drawing.Drawing, drawing.Drawing.GetAbsolutePage());
});
let canGroup = oGraphicObjects.canGroup();
if (!canGroup)
return null;
aDrawings.forEach(function(drawing) {
drawing.Drawing.recalculate();
});
let oGroup = oGraphicObjects.createGroup();
if (!oGroup) {
return null;
}
return new ApiGroup(oGroup);
};
/**
* Returns the notes page from the current slide.
* @typeofeditors ["CPE"]
* @memberof ApiSlide
* @returns {ApiNotesPage | null}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/GetNotesPage.js
*/
ApiSlide.prototype.GetNotesPage = function () {
if (this.Slide && this.Slide.notes) {
return new ApiNotesPage(this.Slide.notes);
}
return null;
};
/**
* Adds a text to the notes page of the current slide.
* @typeofeditors ["CPE"]
* @memberof ApiSlide
* @param {string} sText - The text to be added to the notes page.
* @returns {boolean} - Returns true if text was added successfully, otherwise false.
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiSlide/Methods/AddNotesText.js
*/
ApiSlide.prototype.AddNotesText = function (sText) {
let oNotesPage = this.GetNotesPage();
if (!oNotesPage) {
const presentation = private_GetPresentation();
const notes = AscCommonSlide.CreateNotes();
notes.setNotesMaster(presentation.notesMasters[0]);
notes.setSlide(this);
this.setNotes(notes);
oNotesPage = new ApiNotesPage(notes);
}
const oBodyShape = oNotesPage.GetBodyShape();
if (oBodyShape) {
const oDocContent = oBodyShape.GetDocContent();
if (oDocContent) {
const oParagraph = oDocContent.GetElement(0);
if (oParagraph) {
oParagraph.AddText(sText);
return true;
}
}
}
return false;
}
//------------------------------------------------------------------------------------------------------------------
//
// ApiNotesPage
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiNotesPage class.
*
* @typeofeditors ["CPE"]
* @returns {"notesPage"}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiNotesPage/Methods/GetClassType.js
*/
ApiNotesPage.prototype.GetClassType = function () {
return "notesPage";
};
/**
* Returns a shape with the type="body" attribute from the current notes page.
* @typeofeditors ["CPE"]
* @memberof ApiNotesPage
* @returns {ApiShape | null}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiNotesPage/Methods/GetBodyShape.js
*/
ApiNotesPage.prototype.GetBodyShape = function () {
if (this.NotesPage) {
let bodyShape = this.NotesPage.getBodyShape();
if (!bodyShape) {
bodyShape = this.NotesPage.createBodyShape();
}
return new ApiShape(bodyShape);
}
return null;
};
/**
* Adds a text to the body shape of the current notes page.
* @typeofeditors ["CPE"]
* @memberof ApiNotesPage
* @param {string} sText - The text to be added to the body shape.
* @returns {boolean} - Returns true if text was added successfully, otherwise false.
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiNotesPage/Methods/AddBodyShapeText.js
*/
ApiNotesPage.prototype.AddBodyShapeText = function (sText) {
const oBodyShape = this.GetBodyShape();
if (oBodyShape) {
const oDocContent = oBodyShape.GetContent();
if (oDocContent) {
const oParagraph = oDocContent.GetElement(0);
if (oParagraph) {
oParagraph.AddText(sText);
return true;
}
}
}
return false;
};
/**
* Returns the text from the body shape of the current notes page.
*
* @typeofeditors ["CPE"]
* @memberof ApiNotesPage
* @returns {string} The text from the body shape.
* @since 9.1.0
* @see office-js-api/Examples/{Editor}/ApiNotesPage/Methods/GetBodyShapeText.js
*/
ApiNotesPage.prototype.GetBodyShapeText = function () {
const oBodyShape = this.GetBodyShape();
if (oBodyShape) {
const oDocContent = oBodyShape.GetContent();
if (oDocContent) {
return oDocContent.GetText();
}
}
return '';
};
ApiNotesPage.prototype.GetTheme = function(){
if (this.NotesPage && this.NotesPage.Master && this.NotesPage.Master.Theme)
{
var oThemeLoadInfo = new AscCommonSlide.CThemeLoadInfo();
oThemeLoadInfo.Master = this.NotesPage.Master;
oThemeLoadInfo.Layouts = [];
oThemeLoadInfo.Theme = this.NotesPage.Master.Theme;
return new ApiTheme(oThemeLoadInfo);
}
return null;
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiDrawing
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiDrawing class.
* @typeofeditors ["CPE"]
* @returns {"drawing"}
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetClassType.js
*/
ApiDrawing.prototype.GetClassType = function()
{
return "drawing";
};
/**
* Sets the size of the object (image, shape, chart) bounding box.
* @typeofeditors ["CPE"]
* @param {EMU} nWidth - The object width measured in English measure units.
* @param {EMU} nHeight - The object height measured in English measure units.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/SetSize.js
*/
ApiDrawing.prototype.SetSize = function(nWidth, nHeight)
{
var fWidth = private_EMU2MM(nWidth);
var fHeight = private_EMU2MM(nHeight);
this.Drawing.checkTransformBeforeApply();
let xfrm = this.Drawing.getXfrm();
if(xfrm)
{
xfrm.setExtX(fWidth);
xfrm.setExtY(fHeight);
}
};
/**
* Sets the position of the drawing on the slide.
* @typeofeditors ["CPE"]
* @param {EMU} nPosX - The distance from the left side of the slide to the left side of the drawing measured in English measure units.
* @param {EMU} nPosY - The distance from the top side of the slide to the upper side of the drawing measured in English measure units.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/SetPosition.js
*/
ApiDrawing.prototype.SetPosition = function(nPosX, nPosY)
{
var fPosX = private_EMU2MM(nPosX);
var fPosY = private_EMU2MM(nPosY);
if(this.Drawing && this.Drawing.spPr && this.Drawing.spPr.xfrm)
{
this.Drawing.spPr.xfrm.setOffX(fPosX);
this.Drawing.spPr.xfrm.setOffY(fPosY);
}
};
/**
* Returns the drawing parent object.
* @typeofeditors ["CPE"]
* @returns {ApiSlide | ApiLayout | ApiMaster | null}
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetParent.js
*/
ApiDrawing.prototype.GetParent = function()
{
if (this.Drawing && this.Drawing.parent)
{
switch(this.Drawing.parent.getObjectType())
{
case AscDFH.historyitem_type_Slide:
return new ApiSlide(this.Drawing.parent);
case AscDFH.historyitem_type_SlideLayout:
return new ApiLayout(this.Drawing.parent);
case AscDFH.historyitem_type_SlideMaster:
return new ApiMaster(this.Drawing.parent);
}
}
return null;
};
/**
* Returns the drawing parent slide.
* @typeofeditors ["CPE"]
* @returns {ApiSlide | null} - return null if parent ins't a slide.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetParentSlide.js
*/
ApiDrawing.prototype.GetParentSlide = function()
{
if (this.Drawing && this.Drawing.parent && this.Drawing.parent.getObjectType() === AscDFH.historyitem_type_Slide)
{
return new ApiSlide(this.Drawing.parent);
}
return null;
};
/**
* Returns the drawing parent slide layout.
* @typeofeditors ["CPE"]
* @returns {ApiLayout | null} - return null if parent ins't a slide layout.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetParentLayout.js
*/
ApiDrawing.prototype.GetParentLayout = function()
{
if (this.Drawing && this.Drawing.parent && this.Drawing.parent.getObjectType() === AscDFH.historyitem_type_SlideLayout)
{
return new ApiLayout(this.Drawing.parent);
}
return null;
};
/**
* Returns the drawing parent slide master.
* @typeofeditors ["CPE"]
* @returns {ApiMaster | null} - return null if parent ins't a slide master.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetParentMaster.js
*/
ApiDrawing.prototype.GetParentMaster = function()
{
if (this.Drawing && this.Drawing.parent && this.Drawing.parent.getObjectType() === AscDFH.historyitem_type_SlideMaster)
{
return new ApiMaster(this.Drawing.parent);
}
return null;
};
/**
* Creates a copy of the specified drawing object.
* @typeofeditors ["CPE"]
* @returns {ApiDrawing} - return null if drawing doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/Copy.js
*/
ApiDrawing.prototype.Copy = function()
{
if (this.Drawing)
return new ApiDrawing(this.Drawing.copy());
return null;
};
/**
* Deletes the specified drawing object from the parent.
* @typeofeditors ["CPE"]
* @returns {boolean} - false if drawing doesn't exist or drawing hasn't a parent.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/Delete.js
*/
ApiDrawing.prototype.Delete = function()
{
var oParent = this.GetParent();
if (this.Drawing && oParent)
{
var drawingObjects = oParent.GetAllDrawings();
for (var nDrawing = 0; nDrawing < drawingObjects.length; nDrawing++)
{
if (this.Drawing.Id === drawingObjects[nDrawing].Drawing.Id)
{
oParent.RemoveObject(nDrawing, 1);
return true;
}
}
}
return false;
};
/**
* Sets the specified placeholder to the current drawing object.
* @typeofeditors ["CPE"]
* @param {ApiPlaceholder} oPlaceholder - Placeholder object.
* @returns {boolean} - returns false if parameter isn't a placeholder.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/SetPlaceholder.js
*/
ApiDrawing.prototype.SetPlaceholder = function(oPlaceholder)
{
if (!this.Drawing || !oPlaceholder || !oPlaceholder.GetClassType || oPlaceholder.GetClassType() !== "placeholder")
return false;
var drawingNvPr = null;
var drawingParent = this.GetParent();
var allDrawingsInParent = null;
this.Drawing.checkDrawingUniNvPr();
switch (this.Drawing.getObjectType())
{
case AscDFH.historyitem_type_ChartSpace:
case AscDFH.historyitem_type_GraphicFrame:
drawingNvPr = this.Drawing.nvGraphicFramePr.nvPr;
break;
case AscDFH.historyitem_type_GroupShape:
drawingNvPr = this.Drawing.nvGrpSpPr;
break;
case AscDFH.historyitem_type_ImageShape:
case AscDFH.historyitem_type_OleObject:
drawingNvPr = this.Drawing.nvPicPr.nvPr;
break;
case AscDFH.historyitem_type_Shape:
case AscDFH.historyitem_type_Cnx:
drawingNvPr = this.Drawing.nvSpPr.nvPr;
break;
}
if (!drawingNvPr)
return false;
drawingNvPr.setPh(oPlaceholder.Placeholder);
if (drawingParent)
{
allDrawingsInParent = drawingParent.GetAllDrawings();
for (var nDrawing = 0; nDrawing < allDrawingsInParent.length; nDrawing++)
{
if (allDrawingsInParent[nDrawing].Drawing.Id === this.Drawing.Id)
{
editor.private_checkPlaceholders(drawingParent, oPlaceholder);
break;
}
}
}
return true;
};
/**
* Returns a placeholder from the current drawing object.
* @typeofeditors ["CPE"]
* @returns {ApiPlaceholder | null} - returns null if placeholder doesn't exist.
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetPlaceholder.js
*/
ApiDrawing.prototype.GetPlaceholder = function()
{
var oPh = null;
if (this.Drawing)
{
this.Drawing.checkDrawingUniNvPr();
switch (this.Drawing.getObjectType())
{
case AscDFH.historyitem_type_ChartSpace:
case AscDFH.historyitem_type_GraphicFrame:
oPh = this.Drawing.nvGraphicFramePr.nvPr.ph;
break;
case AscDFH.historyitem_type_GroupShape:
oPh = this.Drawing.nvGrpSpPr.ph;
break;
case AscDFH.historyitem_type_ImageShape:
case AscDFH.historyitem_type_OleObject:
oPh = this.Drawing.nvPicPr.nvPr.ph;
break;
case AscDFH.historyitem_type_Shape:
case AscDFH.historyitem_type_Cnx:
oPh = this.Drawing.nvSpPr.nvPr.ph;
break;
}
}
if (oPh)
return new ApiPlaceholder(oPh);
return null;
};
/**
* Returns the width of the current drawing.
* @memberof ApiDrawing
* @typeofeditors ["CDE", "CPE", "CSE"]
* @returns {EMU}
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetWidth.js
*/
ApiDrawing.prototype.GetWidth = function()
{
return private_MM2EMU(this.Drawing.GetWidth());
};
/**
* Returns the height of the current drawing.
* @memberof ApiDrawing
* @typeofeditors ["CDE", "CPE", "CSE"]
* @returns {EMU}
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetHeight.js
*/
ApiDrawing.prototype.GetHeight = function()
{
return private_MM2EMU(this.Drawing.GetHeight());
};
/**
* Returns the lock value for the specified lock type of the current drawing.
* @typeofeditors ["CPE"]
* @param {DrawingLockType} sType - Lock type in the string format.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetLockValue.js
*/
ApiDrawing.prototype.GetLockValue = function(sType)
{
var nLockType = private_GetDrawingLockType(sType);
if (nLockType === -1)
return false;
if (this.Drawing)
return this.Drawing.getLockValue(nLockType);
return false;
};
/**
* Sets the lock value to the specified lock type of the current drawing.
* @typeofeditors ["CPE"]
* @param {DrawingLockType} sType - Lock type in the string format.
* @param {boolean} bValue - Specifies if the specified lock is applied to the current drawing.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/SetLockValue.js
*/
ApiDrawing.prototype.SetLockValue = function(sType, bValue)
{
var nLockType = private_GetDrawingLockType(sType);
if (nLockType === -1)
return false;
if (this.Drawing)
{
this.Drawing.setLockValue(nLockType, bValue);
return true;
}
return false;
};
/**
* Converts the ApiDrawing object into the JSON object.
* @memberof ApiDrawing
* @typeofeditors ["CPE"]
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/ToJSON.js
*/
ApiDrawing.prototype.ToJSON = function()
{
var oWriter = new AscJsonConverter.WriterToJSON();
return JSON.stringify(oWriter.SerGraphicObject(this.Drawing));
};
/**
* Selects the current graphic object.
* @memberof ApiDrawing
* @typeofeditors ["CPE"]
* @since 8.2.0
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/Select.js
*/
ApiDrawing.prototype.Select = function() {
let oDrawing = this.Drawing;
if(!oDrawing) return;
oDrawing.Set_CurrentElement(true, 0, true);
let oController = oDrawing.getDrawingObjectsController();
oController.updateSelectionState();
oController.updateOverlay();
};
/**
* Sets the rotation angle to the current drawing object.
* @memberof ApiDrawing
* @param {number} nRotAngle - New drawing rotation angle.
* @typeofeditors ["CPE"]
* @returns {boolean}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/SetRotation.js
*/
ApiDrawing.prototype.SetRotation = function(nRotAngle)
{
if (!this.Drawing.canRotate()) {
return false;
}
this.Drawing.checkTransformBeforeApply();
let oXfrm = this.Drawing.getXfrm();
oXfrm.setRot(nRotAngle * Math.PI / 180);
return true;
};
/**
* Returns the rotation angle of the current drawing object.
* @memberof ApiDrawing
* @typeofeditors ["CPE"]
* @returns {number}
* @since 9.0.0
* @see office-js-api/Examples/{Editor}/ApiDrawing/Methods/GetRotation.js
*/
ApiDrawing.prototype.GetRotation = function()
{
this.Drawing.checkRecalculateTransform();
return this.Drawing.rot * 180 / Math.PI
};
ApiDrawing.prototype.GetPosX = function()
{
return private_MM2EMU(this.Drawing.GetPosX());
};
ApiDrawing.prototype.GetPosY = function()
{
return private_MM2EMU(this.Drawing.GetPosY());
};
ApiDrawing.prototype.SetPosX = function(posX)
{
this.Drawing.checkTransformBeforeApply();
let oXfrm = this.Drawing.getXfrm();
oXfrm.setOffX(private_EMU2MM(posX));
};
ApiDrawing.prototype.SetPosY = function(posY)
{
this.Drawing.checkTransformBeforeApply();
let oXfrm = this.Drawing.getXfrm();
oXfrm.setOffY(private_EMU2MM(posY));
};
ApiDrawing.prototype.ReplacePlaceholder = function(oDrawing)
{
let ph = this.GetPlaceholder();
if (!ph) return false;
let slide = this.Drawing.parent;
if (!slide || !slide.graphicObjects) return false;
slide.replaceSp(this.Drawing, oDrawing.Drawing);
oDrawing.Drawing.setSpPr(this.Drawing.spPr.createDuplicate());
if(oDrawing.GetClassType() === "table")
{
let pr = {};
pr.FrameX = this.GetPosX() / 36000;
pr.FrameY = this.GetPosY() / 36000;
pr.FrameWidth = this.GetWidth() / 36000;
pr.FrameHeight = this.GetHeight() / 36000;
pr.Force = true;
oDrawing.Drawing.recalculate();
oDrawing.Drawing.setFrameTransform(pr);
}
return true;
};
ApiDrawing.prototype.GetInternalId = function()
{
return this.Drawing.GetId();
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiGroup
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns a type of the ApiGroup class.
* @memberof ApiGroup
* @typeofeditors ["CPE"]
* @returns {"group"}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiGroup/Methods/GetClassType.js
*/
ApiGroup.prototype.GetClassType = function()
{
return "group";
};
/**
* Ungroups the current group of drawings.
* @memberof ApiGroup
* @typeofeditors ["CPE"]
* @returns {boolean}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiGroup/Methods/Ungroup.js
*/
ApiGroup.prototype.Ungroup = function()
{
let oPresentation = Asc.editor.getLogicDocument();
let nSlideIdx = this.Drawing.getSlideIndex();
let oSlide = oPresentation.GetSlide(nSlideIdx);
if (!oSlide) {
return null;
}
let oGraphicObjects = oSlide.graphicObjects;
oGraphicObjects.resetSelection();
oGraphicObjects.selectObject(this.Drawing, this.Drawing.GetAbsolutePage())
let canUngroup = oGraphicObjects.canUnGroup();
if (!canUngroup) {
return false;
}
oGraphicObjects.unGroupCallback();
return true;
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiImage
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiImage class.
* @typeofeditors ["CPE"]
* @returns {"image"}
* @see office-js-api/Examples/{Editor}/ApiImage/Methods/GetClassType.js
*/
ApiImage.prototype.GetClassType = function()
{
return "image";
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiShape
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiShape class.
* @typeofeditors ["CPE"]
* @returns {"shape"}
* @see office-js-api/Examples/{Editor}/ApiShape/Methods/GetClassType.js
*/
ApiShape.prototype.GetClassType = function()
{
return "shape";
};
/**
* Deprecated in 6.2.
* Returns the shape inner contents where a paragraph or text runs can be inserted.
* @typeofeditors ["CPE"]
* @returns {?ApiDocumentContent}
* @see office-js-api/Examples/{Editor}/ApiShape/Methods/GetDocContent.js
*/
ApiShape.prototype.GetDocContent = function()
{
var oApi = private_GetApi();
if(oApi && this.Drawing && this.Drawing.txBody && this.Drawing.txBody.content)
{
return oApi.private_CreateApiDocContent(this.Drawing.txBody.content);
}
return null;
};
/**
* Returns the shape inner contents where a paragraph or text runs can be inserted.
* @typeofeditors ["CPE"]
* @returns {?ApiDocumentContent}
* @see office-js-api/Examples/{Editor}/ApiShape/Methods/GetContent.js
*/
ApiShape.prototype.GetContent = function()
{
var oApi = private_GetApi();
if(oApi && this.Drawing && this.Drawing.txBody && this.Drawing.txBody.content)
{
return oApi.private_CreateApiDocContent(this.Drawing.txBody.content);
}
return null;
};
/**
* Sets the vertical alignment to the shape content where a paragraph or text runs can be inserted.
* @typeofeditors ["CPE"]
* @param {VerticalTextAlign} VerticalAlign - The type of the vertical alignment for the shape inner contents.
* @see office-js-api/Examples/{Editor}/ApiShape/Methods/SetVerticalTextAlign.js
*/
ApiShape.prototype.SetVerticalTextAlign = function(VerticalAlign)
{
if(this.Shape)
{
switch(VerticalAlign)
{
case "top":
{
this.Shape.setVerticalAlign(4);
break;
}
case "center":
{
this.Shape.setVerticalAlign(1);
break;
}
case "bottom":
{
this.Shape.setVerticalAlign(0);
break;
}
}
}
};
/**
* Returns the geometry object from the current shape.
* @memberof ApiShape
* @typeofeditors ["CPE"]
* @returns {ApiGeometry}
* @see office-js-api/Examples/{Editor}/ApiShape/Methods/GetGeometry.js
* @since 9.1.0
*/
ApiShape.prototype.GetGeometry = function()
{
if (this.Shape && this.Shape.spPr && this.Shape.spPr.geometry)
{
return Api.prototype.private_CreateGeometry(this.Shape.spPr.geometry);
}
return null;
};
/**
* Sets a custom geometry for the current shape.
* @memberof ApiShape
* @typeofeditors ["CPE"]
* @param {ApiGeometry} oGeometry - The geometry to set.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiShape/Methods/SetGeometry.js
* @since 9.1.0
*/
ApiShape.prototype.SetGeometry = function(oGeometry)
{
if (this.Shape && this.Shape.spPr && oGeometry && oGeometry.geometry)
{
this.Shape.spPr.setGeometry(oGeometry.geometry);
return true;
}
return false;
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiChart
//
//------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------
//
// ApiOleObject
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns a type of the ApiOleObject class.
* @memberof ApiOleObject
* @typeofeditors ["CDE", "CPE", "CSE"]
* @returns {"oleObject"}
* @see office-js-api/Examples/{Editor}/ApiOleObject/Methods/GetClassType.js
*/
ApiOleObject.prototype.GetClassType = function()
{
return "oleObject";
};
/**
* Sets the data to the current OLE object.
* @memberof ApiOleObject
* @typeofeditors ["CDE", "CPE", "CSE"]
* @param {string} sData - The OLE object string data.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiOleObject/Methods/SetData.js
*/
ApiOleObject.prototype.SetData = function(sData)
{
if (typeof(sData) !== "string" || sData === "")
return false;
this.Drawing.setData(sData);
return true;
};
/**
* Returns the string data from the current OLE object.
* @memberof ApiOleObject
* @typeofeditors ["CDE", "CPE", "CSE"]
* @returns {string}
* @see office-js-api/Examples/{Editor}/ApiOleObject/Methods/GetData.js
*/
ApiOleObject.prototype.GetData = function()
{
if (typeof(this.Drawing.m_sData) === "string")
return this.Drawing.m_sData;
return "";
};
/**
* Sets the application ID to the current OLE object.
* @memberof ApiOleObject
* @typeofeditors ["CDE", "CPE", "CSE"]
* @param {string} sAppId - The application ID associated with the current OLE object.
* @returns {boolean}
* @see office-js-api/Examples/{Editor}/ApiOleObject/Methods/SetApplicationId.js
*/
ApiOleObject.prototype.SetApplicationId = function(sAppId)
{
if (typeof(sAppId) !== "string" || sAppId === "")
return false;
this.Drawing.setApplicationId(sAppId);
return true;
};
/**
* Returns the application ID from the current OLE object.
* @memberof ApiOleObject
* @typeofeditors ["CDE", "CPE", "CSE"]
* @returns {string}
* @see office-js-api/Examples/{Editor}/ApiOleObject/Methods/GetApplicationId.js
*/
ApiOleObject.prototype.GetApplicationId = function()
{
if (typeof(this.Drawing.m_sApplicationId) === "string")
return this.Drawing.m_sApplicationId;
return "";
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiTable
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiTable object.
* @typeofeditors ["CPE"]
* @returns {"table"}
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/GetClassType.js
*/
ApiTable.prototype.GetClassType = function(){
return "table";
};
/**
* Returns a row by its index.
* @typeofeditors ["CPE"]
* @param nIndex {number} - The row index (position) in the table.
* @returns {?ApiTableRow}
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/GetRow.js
*/
ApiTable.prototype.GetRow = function(nIndex){
if(!this.Drawing){
return null;
}
var aTableContent = this.Table.Content;
if(!aTableContent[nIndex]){
return null;
}
return new ApiTableRow(aTableContent[nIndex]);
};
/**
* Merges an array of cells. If merge is successful, it will return merged cell, otherwise "null".
* <b>Warning</b>: The number of cells in any row and the number of rows in the current table may be changed.
* @typeofeditors ["CPE"]
* @param {ApiTableCell[]} aCells - The array of cells.
* @returns {?ApiTableCell}
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/MergeCells.js
*/
ApiTable.prototype.MergeCells = function(aCells)
{
this.private_PrepareTableForActions();
var oTable = this.Table;
oTable.Selection.Use = true;
oTable.Selection.Type = table_Selection_Cell;
oTable.Selection.Data = [];
for (var nPos = 0, nCount = aCells.length; nPos < nCount; ++nPos)
{
var oCell = aCells[nPos].Cell;
var oPos = {Cell : oCell.Index, Row : oCell.Row.Index};
var nResultPos = 0;
var nResultLength = oTable.Selection.Data.length;
for (nResultPos = 0; nResultPos < nResultLength; ++nResultPos)
{
var oCurPos = oTable.Selection.Data[nResultPos];
if (oCurPos.Row < oPos.Row)
{
continue;
}
else if (oCurPos.Row > oPos.Row)
{
break;
}
else
{
if (oCurPos.Cell >= oPos.Cell)
break;
}
}
oTable.Selection.Data.splice(nResultPos, 0, oPos);
}
var isMerged = this.Table.MergeTableCells(true);
var oMergedCell = this.Table.CurCell;
oTable.RemoveSelection();
if (true === isMerged)
return new ApiTableCell(oMergedCell);
return null;
};
ApiTable.prototype.OnChangeTablePr = function(oApiTablePr)
{
this.Table.Set_Pr(oApiTablePr.TablePr);
oApiTablePr.TablePr = this.Table.Pr.Copy();
};
ApiTable.prototype.private_PrepareTableForActions = function()
{
this.Table.private_RecalculateGrid();
this.Table.private_UpdateCellsGrid();
};
/**
* Specifies the components of the conditional formatting of the referenced table style (if one exists)
* which shall be applied to the set of table rows with the current table-level property exceptions. A table style
* can specify up to six different optional conditional formats [Example: Different formatting for first column],
* which then can be applied or omitted from individual table rows in the parent table.
*
* The default setting is to apply the row and column banding formatting, but not the first row, last row, first
* column, or last column formatting.
* @typeofeditors ["CPE"]
* @param {boolean} isFirstColumn - Specifies that the first column conditional formatting shall be applied to the
* table.
* @param {boolean} isFirstRow - Specifies that the first row conditional formatting shall be applied to the table.
* @param {boolean} isLastColumn - Specifies that the last column conditional formatting shall be applied to the
* table.
* @param {boolean} isLastRow - Specifies that the last row conditional formatting shall be applied to the table.
* @param {boolean} isHorBand - Specifies that the horizontal banding conditional formatting shall not be applied
* to the table.
* @param {boolean} isVerBand - Specifies that the vertical banding conditional formatting shall not be applied to
* the table.
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/SetTableLook.js
*/
ApiTable.prototype.SetTableLook = function(isFirstColumn, isFirstRow, isLastColumn, isLastRow, isHorBand, isVerBand)
{
var oTableLook = new AscCommon.CTableLook(private_GetBoolean(isFirstColumn),
private_GetBoolean(isFirstRow),
private_GetBoolean(isLastColumn),
private_GetBoolean(isLastRow),
private_GetBoolean(isHorBand),
private_GetBoolean(isVerBand));
this.Table.Set_TableLook(oTableLook);
};
/**
* Adds a new row to the current table.
* @typeofeditors ["CPE"]
* @param {ApiTableCell} [oCell] - If not specified, a new row will be added to the end of the table.
* @param {boolean} [isBefore=false] - Adds a new row before or after the specified cell. If no cell is specified,
* then this parameter will be ignored.
* @returns {ApiTableRow}
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/AddRow.js
*/
ApiTable.prototype.AddRow = function(oCell, isBefore)
{
this.private_PrepareTableForActions();
var _isBefore = private_GetBoolean(isBefore, false);
var _oCell = (oCell instanceof ApiTableCell ? oCell.Cell : undefined);
if (_oCell && this.Table !== _oCell.Row.Table)
_oCell = undefined;
if (!_oCell)
{
_oCell = this.Table.Content[this.Table.Content.length - 1].Get_Cell(0);
_isBefore = false;
}
var nRowIndex = true === _isBefore ? _oCell.Row.Index : _oCell.Row.Index + 1;
this.Table.RemoveSelection();
this.Table.CurCell = _oCell;
this.Table.AddTableRow(_isBefore);
return new ApiTableRow(this.Table.Content[nRowIndex]);
};
/**
* Adds a new column to the end of the current table.
* @typeofeditors ["CPE"]
* @param {ApiTableCell} [oCell] - If not specified, a new column will be added to the end of the table.
* @param {boolean} [isBefore=false] - Add a new column before or after the specified cell. If no cell is specified,
* then this parameter will be ignored.
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/AddColumn.js
*/
ApiTable.prototype.AddColumn = function(oCell, isBefore)
{
this.private_PrepareTableForActions();
var _isBefore = private_GetBoolean(isBefore, false);
var _oCell = (oCell instanceof ApiTableCell ? oCell.Cell : undefined);
if (_oCell && this.Table !== _oCell.Row.Table)
_oCell = undefined;
if (!_oCell)
{
_oCell = this.Table.Content[0].Get_Cell(this.Table.Content[0].Get_CellsCount() - 1);
_isBefore = false;
}
this.Table.RemoveSelection();
this.Table.CurCell = _oCell;
this.Table.AddTableColumn(_isBefore);
};
/**
* Removes a table row with the specified cell.
* @typeofeditors ["CPE"]
* @param {ApiTableCell} oCell - The table cell from the row which will be removed.
* @returns {boolean} - defines if the table is empty after removing or not.
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/RemoveRow.js
*/
ApiTable.prototype.RemoveRow = function(oCell)
{
if (!(oCell instanceof ApiTableCell) || this.Table !== oCell.Cell.Row.Table)
return false;
this.private_PrepareTableForActions();
this.Table.RemoveSelection();
this.Table.CurCell = oCell.Cell;
return !(this.Table.RemoveTableRow());
};
/**
* Removes a table column with the specified cell.
* @typeofeditors ["CPE"]
* @param {ApiTableCell} oCell - The table cell from the column which will be removed.
* @returns {boolean} - defines if the table is empty after removing or not.
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/RemoveColumn.js
*/
ApiTable.prototype.RemoveColumn = function(oCell)
{
if (!(oCell instanceof ApiTableCell) || this.Table !== oCell.Cell.Row.Table)
return false;
this.private_PrepareTableForActions();
this.Table.RemoveSelection();
this.Table.CurCell = oCell.Cell;
return !(this.Table.RemoveTableColumn());
};
/**
* Specifies the shading which shall be applied to the extents of the current table.
* @typeofeditors ["CPE"]
* @param {ShdType | ApiFill} sType - The shading type applied to the contents of the current table. Can be ShdType or ApiFill.
* @param {byte} r - Red color component value.
* @param {byte} g - Green color component value.
* @param {byte} b - Blue color component value.
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/SetShd.js
*/
ApiTable.prototype.SetShd = function(sType, r, g, b)
{
var oPr = this.Table.Pr.Copy();
var color = new Asc.asc_CColor({r : r, g: g, b: b, Auto : false});
var oShd = new CDocumentShd();
var _Shd = null;
if (sType === "nil") {
_Shd = {Value : Asc.c_oAscShdNil};
oShd.Set_FromObject(_Shd);
oPr.Shd = oShd;
}
else if (sType === "clear") {
var Unifill = new AscFormat.CUniFill();
Unifill.fill = new AscFormat.CSolidFill();
Unifill.fill.color = AscFormat.CorrectUniColor(color, Unifill.fill.color, 1);
_Shd = {
Value : Asc.c_oAscShdClear,
Color : {
r : color.asc_getR(),
g : color.asc_getG(),
b : color.asc_getB()
},
Unifill : Unifill
};
oShd.Set_FromObject(_Shd);
oPr.Shd = oShd;
}
else if (sType.GetClassType && sType.GetClassType() === "fill") {
oShd.Value = Asc.c_oAscShdClear;
oShd.Unifill = sType.UniFill;
oPr.Shd = oShd;
}
else
oPr.Shd = null;
this.Table.Set_Pr(oPr);
};
/**
* Converts the ApiTable object into the JSON object.
* @memberof ApiTable
* @typeofeditors ["CPE"]
* @param {boolean} [bWriteTableStyles=false] - Specifies whether to write used table styles to the JSON object (true) or not (false).
* @returns {JSON}
* @see office-js-api/Examples/{Editor}/ApiTable/Methods/ToJSON.js
*/
ApiTable.prototype.ToJSON = function(bWriteTableStyles)
{
let oWriter = new AscJsonConverter.WriterToJSON();
let oResult = oWriter.SerGraphicObject(this.Drawing);
if (bWriteTableStyles)
oResult["tblStyleLst"] = oWriter.SerTableStylesForWrite();
return JSON.stringify(oResult);
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiTableRow
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiTableRow class.
* @typeofeditors ["CPE"]
* @returns {"tableRow"}
* @see office-js-api/Examples/{Editor}/ApiTableRow/Methods/GetClassType.js
*/
ApiTableRow.prototype.GetClassType = function()
{
return "tableRow";
};
/**
* Returns a number of cells in the current row.
* @typeofeditors ["CPE"]
* @returns {number}
* @see office-js-api/Examples/{Editor}/ApiTableRow/Methods/GetCellsCount.js
*/
ApiTableRow.prototype.GetCellsCount = function()
{
return this.Row.Content.length;
};
/**
* Returns a cell by its position in the current row.
* @typeofeditors ["CPE"]
* @param {number} nPos - The cell position in the table row.
* @returns {ApiTableCell}
* @see office-js-api/Examples/{Editor}/ApiTableRow/Methods/GetCell.js
*/
ApiTableRow.prototype.GetCell = function(nPos)
{
if (nPos < 0 || nPos >= this.Row.Content.length)
return null;
return new ApiTableCell(this.Row.Content[nPos]);
};
/**
* Sets the height to the current table row.
* @typeofeditors ["CPE"]
* @param {EMU} [nValue] - The row height in English measure units.
* @see office-js-api/Examples/{Editor}/ApiTableRow/Methods/SetHeight.js
*/
ApiTableRow.prototype.SetHeight = function(nValue)
{
var fMaxTopMargin = 0, fMaxBottomMargin = 0, fMaxTopBorder = 0, fMaxBottomBorder = 0;
for (var i = 0; i < this.Row.Content.length; ++i){
var oCell = this.Row.Content[i];
var oMargins = oCell.GetMargins();
if(oMargins.Bottom.W > fMaxBottomMargin){
fMaxBottomMargin = oMargins.Bottom.W;
}
if(oMargins.Top.W > fMaxTopMargin){
fMaxTopMargin = oMargins.Top.W;
}
var oBorders = oCell.Get_Borders();
if(oBorders.Top.Size > fMaxTopBorder){
fMaxTopBorder = oBorders.Top.Size;
}
if(oBorders.Bottom.Size > fMaxBottomBorder){
fMaxBottomBorder = oBorders.Bottom.Size;
}
}
this.Row.Set_Height(Math.max(1, nValue/36000 - fMaxTopMargin - fMaxBottomMargin - fMaxTopBorder/2 - fMaxBottomBorder/2), Asc.linerule_AtLeast);
};
//------------------------------------------------------------------------------------------------------------------
//
// ApiTableCell
//
//------------------------------------------------------------------------------------------------------------------
/**
* Returns the type of the ApiTableCell class.
* @typeofeditors ["CPE"]
* @returns {"tableCell"}
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/GetClassType.js
*/
ApiTableCell.prototype.GetClassType = function()
{
return "tableCell";
};
/**
* Returns the current cell content.
* @typeofeditors ["CPE"]
* @returns {ApiDocumentContent}
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/GetContent.js
*/
ApiTableCell.prototype.GetContent = function(){
var oApi = private_GetApi();
return oApi.private_CreateApiDocContent(this.Cell.Content);
};
/**
* Specifies the shading which shall be applied to the extents of the current table cell.
* @typeofeditors ["CPE"]
* @param {ShdType | ApiFill} sType - The shading type applied to the contents of the current table. Can be ShdType or ApiFill.
* @param {byte} r - Red color component value.
* @param {byte} g - Green color component value.
* @param {byte} b - Blue color component value.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetShd.js
*/
ApiTableCell.prototype.SetShd = function(sType, r, g, b)
{
var oPr = this.Cell.Pr.Copy();
var color = new Asc.asc_CColor({r : r, g: g, b: b, Auto : false});
var oShd = new CDocumentShd();
var _Shd = null;
if (sType === "nil") {
_Shd = {Value : Asc.c_oAscShdNil};
oShd.Set_FromObject(_Shd);
oPr.Shd = oShd;
}
else if (sType === "clear") {
var Unifill = new AscFormat.CUniFill();
Unifill.fill = new AscFormat.CSolidFill();
Unifill.fill.color = AscFormat.CorrectUniColor(color, Unifill.fill.color, 1);
_Shd = {
Value : Asc.c_oAscShdClear,
Color : {
r : color.asc_getR(),
g : color.asc_getG(),
b : color.asc_getB()
},
Unifill : Unifill
};
oShd.Set_FromObject(_Shd);
oPr.Shd = oShd;
}
else if (sType.GetClassType && sType.GetClassType() === "fill") {
oShd.Value = Asc.c_oAscShdClear;
oShd.Unifill = sType.UniFill;
oPr.Shd = oShd;
}
else
oPr.Shd = null;
this.Cell.Set_Pr(oPr);
};
/**
* Specifies an amount of space which shall be left between the bottom extent of the cell contents and the border
* of a specific individual table cell within a table.
* @typeofeditors ["CPE"]
* @param {?twips} nValue - If this value is <code>null</code>, then default table cell bottom margin shall be used,
* otherwise override the table cell bottom margin with specified value for the current cell.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetCellMarginBottom.js
*/
ApiTableCell.prototype.SetCellMarginBottom = function(nValue)
{
var oPr = this.Cell.Pr.Copy();
if (!oPr.TableCellMar)
{
oPr.TableCellMar =
{
Bottom : undefined,
Left : undefined,
Right : undefined,
Top : undefined
};
}
if (null === nValue)
oPr.TableCellMar.Bottom = undefined;
else
oPr.TableCellMar.Bottom = private_GetTableMeasure("twips", nValue);
this.Cell.Set_Pr(oPr);
};
/**
* Specifies an amount of space which shall be left between the left extent of the current cell contents and the
* left edge border of a specific individual table cell within a table.
* @typeofeditors ["CPE"]
* @param {?twips} nValue - If this value is <code>null</code>, then default table cell left margin shall be used,
* otherwise override the table cell left margin with specified value for the current cell.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetCellMarginLeft.js
*/
ApiTableCell.prototype.SetCellMarginLeft = function(nValue)
{
var oPr = this.Cell.Pr.Copy();
if (!oPr.TableCellMar)
{
oPr.TableCellMar =
{
Bottom : undefined,
Left : undefined,
Right : undefined,
Top : undefined
};
}
if (null === nValue)
oPr.TableCellMar.Left = undefined;
else
oPr.TableCellMar.Left = private_GetTableMeasure("twips", nValue);
this.Cell.Set_Pr(oPr);
};
/**
* Specifies an amount of space which shall be left between the right extent of the current cell contents and the
* right edge border of a specific individual table cell within a table.
* @typeofeditors ["CPE"]
* @param {?twips} nValue - If this value is <code>null</code>, then default table cell right margin shall be used,
* otherwise override the table cell right margin with specified value for the current cell.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetCellMarginRight.js
*/
ApiTableCell.prototype.SetCellMarginRight = function(nValue)
{
var oPr = this.Cell.Pr.Copy();
if (!oPr.TableCellMar)
{
oPr.TableCellMar =
{
Bottom : undefined,
Left : undefined,
Right : undefined,
Top : undefined
};
}
if (null === nValue)
oPr.TableCellMar.Right = undefined;
else
oPr.TableCellMar.Right = private_GetTableMeasure("twips", nValue);
this.Cell.Set_Pr(oPr);
};
/**
* Specifies an amount of space which shall be left between the top extent of the current cell contents and the
* top edge border of a specific individual table cell within a table.
* @typeofeditors ["CPE"]
* @param {?twips} nValue - If this value is <code>null</code>, then default table cell top margin shall be used,
* otherwise override the table cell top margin with specified value for the current cell.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetCellMarginTop.js
*/
ApiTableCell.prototype.SetCellMarginTop = function(nValue)
{
var oPr = this.Cell.Pr.Copy();
if (!oPr.TableCellMar)
{
oPr.TableCellMar =
{
Bottom : undefined,
Left : undefined,
Right : undefined,
Top : undefined
};
}
if (null === nValue)
oPr.TableCellMar.Top = undefined;
else
oPr.TableCellMar.Top = private_GetTableMeasure("twips", nValue);
this.Cell.Set_Pr(oPr);
};
/**
* Sets the border which shall be displayed at the bottom of the current table cell.
* @typeofeditors ["CPE"]
* @param {mm} fSize - The width of the current border.
* @param {ApiFill} oApiFill - The color or pattern used to fill the current border.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetCellBorderBottom.js
*/
ApiTableCell.prototype.SetCellBorderBottom = function(fSize, oApiFill)
{
var oBorder = new CDocumentBorder();
oBorder.Value = border_Single;
oBorder.Size = fSize;
oBorder.Space = 0;
oBorder.Unifill = oApiFill.UniFill;
var oPr = this.Cell.Pr.Copy();
oPr.TableCellBorders.Bottom = oBorder;
this.Cell.Set_Pr(oPr);
};
/**
* Sets the border which shall be displayed at the left of the current table cell.
* @typeofeditors ["CPE"]
* @param {mm} fSize - The width of the current border.
* @param {ApiFill} oApiFill - The color or pattern used to fill the current border.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetCellBorderLeft.js
*/
ApiTableCell.prototype.SetCellBorderLeft = function(fSize, oApiFill)
{
var oBorder = new CDocumentBorder();
oBorder.Value = border_Single;
oBorder.Size = fSize;
oBorder.Space = 0;
oBorder.Unifill = oApiFill.UniFill;
var oPr = this.Cell.Pr.Copy();
oPr.TableCellBorders.Left = oBorder;
this.Cell.Set_Pr(oPr);
};
/**
* Sets the border which shall be displayed at the right of the current table cell.
* @typeofeditors ["CPE"]
* @param {mm} fSize - The width of the current border.
* @param {ApiFill} oApiFill - The color or pattern used to fill the current border.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetCellBorderRight.js
*/
ApiTableCell.prototype.SetCellBorderRight = function(fSize, oApiFill)
{
var oBorder = new CDocumentBorder();
oBorder.Value = border_Single;
oBorder.Size = fSize;
oBorder.Space = 0;
oBorder.Unifill = oApiFill.UniFill;
var oPr = this.Cell.Pr.Copy();
oPr.TableCellBorders.Right = oBorder;
this.Cell.Set_Pr(oPr);
};
/**
* Sets the border which shall be displayed at the top of the current table cell.
* @typeofeditors ["CPE"]
* @param {mm} fSize - The width of the current border.
* @param {ApiFill} oApiFill - The color or pattern used to fill the current border.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetCellBorderTop.js
*/
ApiTableCell.prototype.SetCellBorderTop = function(fSize, oApiFill)
{
var oBorder = new CDocumentBorder();
oBorder.Value = border_Single;
oBorder.Size = fSize;
oBorder.Space = 0;
oBorder.Unifill = oApiFill.UniFill;
var oPr = this.Cell.Pr.Copy();
oPr.TableCellBorders.Top = oBorder;
this.Cell.Set_Pr(oPr);
};
/**
* Specifies the vertical alignment for text within the current table cell.
* @typeofeditors ["CPE"]
* @param {("top" | "center" | "bottom")} sType - The type of the vertical alignment.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetVerticalAlign.js
*/
ApiTableCell.prototype.SetVerticalAlign = function(sType)
{
var oPr = this.Cell.Pr.Copy();
if ("top" === sType)
oPr.VAlign = vertalignjc_Top;
else if ("bottom" === sType)
oPr.VAlign = vertalignjc_Bottom;
else if ("center" === sType)
oPr.VAlign = vertalignjc_Center;
this.Cell.Set_Pr(oPr);
};
/**
* Specifies the direction of the text flow for the current table cell.
* @typeofeditors ["CPE"]
* @param {("lrtb" | "tbrl" | "btlr")} sType - The type of the text flow direction.
* @see office-js-api/Examples/{Editor}/ApiTableCell/Methods/SetTextDirection.js
*/
ApiTableCell.prototype.SetTextDirection = function(sType)
{
var oPr = this.Cell.Pr.Copy();
if ("lrtb" === sType)
oPr.TextDirection = textdirection_LRTB;
else if ("tbrl" === sType)
oPr.TextDirection = textdirection_TBRL;
else if ("btlr" === sType)
oPr.TextDirection = textdirection_BTLR;
this.Cell.Set_Pr(oPr);
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Export
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Api.prototype["GetPresentation"] = Api.prototype.GetPresentation;
Api.prototype["CreateSlide"] = Api.prototype.CreateSlide;
Api.prototype["CreateImage"] = Api.prototype.CreateImage;
Api.prototype["CreateShape"] = Api.prototype.CreateShape;
Api.prototype["CreateChart"] = Api.prototype.CreateChart;
Api.prototype["CreateGroup"] = Api.prototype.CreateGroup;
Api.prototype["CreateOleObject"] = Api.prototype.CreateOleObject;
Api.prototype["CreateTable"] = Api.prototype.CreateTable;
Api.prototype["CreateParagraph"] = Api.prototype.CreateParagraph;
Api.prototype["Save"] = Api.prototype.Save;
Api.prototype["CreateMaster"] = Api.prototype.CreateMaster;
Api.prototype["CreateDefaultMasterSlide"] = Api.prototype.CreateDefaultMasterSlide;
Api.prototype["CreateLayout"] = Api.prototype.CreateLayout;
Api.prototype["CreatePlaceholder"] = Api.prototype.CreatePlaceholder;
Api.prototype["CreateTheme"] = Api.prototype.CreateTheme;
Api.prototype["CreateThemeColorScheme"] = Api.prototype.CreateThemeColorScheme;
Api.prototype["CreateThemeFormatScheme"] = Api.prototype.CreateThemeFormatScheme;
Api.prototype["CreateThemeFontScheme"] = Api.prototype.CreateThemeFontScheme;
Api.prototype["CreateWordArt"] = Api.prototype.CreateWordArt;
Api.prototype["FromJSON"] = Api.prototype.FromJSON;
Api.prototype["GetSelection"] = Api.prototype.GetSelection;
Api.prototype["GetByInternalId"] = Api.prototype.GetByInternalId;
ApiPresentation.prototype["GetClassType"] = ApiPresentation.prototype.GetClassType;
ApiPresentation.prototype["GetCurSlideIndex"] = ApiPresentation.prototype.GetCurSlideIndex;
ApiPresentation.prototype["GetSlideByIndex"] = ApiPresentation.prototype.GetSlideByIndex;
ApiPresentation.prototype["GetCurrentSlide"] = ApiPresentation.prototype.GetCurrentSlide;
ApiPresentation.prototype["GetCurrentVisibleSlide"] = ApiPresentation.prototype.GetCurrentVisibleSlide;
ApiPresentation.prototype["AddSlide"] = ApiPresentation.prototype.AddSlide;
ApiPresentation.prototype["CreateNewHistoryPoint"] = ApiPresentation.prototype.CreateNewHistoryPoint;
ApiPresentation.prototype["SetSizes"] = ApiPresentation.prototype.SetSizes;
ApiPresentation.prototype["ReplaceCurrentImage"] = ApiPresentation.prototype.ReplaceCurrentImage;
ApiPresentation.prototype["GetSlidesCount"] = ApiPresentation.prototype.GetSlidesCount;
ApiPresentation.prototype["GetAllSlides"] = ApiPresentation.prototype.GetAllSlides;
ApiPresentation.prototype["GetMastersCount"] = ApiPresentation.prototype.GetMastersCount;
ApiPresentation.prototype["GetAllSlideMasters"] = ApiPresentation.prototype.GetAllSlideMasters;
ApiPresentation.prototype["GetMaster"] = ApiPresentation.prototype.GetMaster;
ApiPresentation.prototype["AddMaster"] = ApiPresentation.prototype.AddMaster;
ApiPresentation.prototype["ApplyTheme"] = ApiPresentation.prototype.ApplyTheme;
ApiPresentation.prototype["RemoveSlides"] = ApiPresentation.prototype.RemoveSlides;
ApiPresentation.prototype["SetLanguage"] = ApiPresentation.prototype.SetLanguage;
ApiPresentation.prototype["GetWidth"] = ApiPresentation.prototype.GetWidth;
ApiPresentation.prototype["GetHeight"] = ApiPresentation.prototype.GetHeight;
ApiPresentation.prototype["GetAllComments"] = ApiPresentation.prototype.GetAllComments;
ApiPresentation.prototype["GetDocumentInfo"] = ApiPresentation.prototype.GetDocumentInfo;
ApiPresentation.prototype["AddMathEquation"] = ApiPresentation.prototype.AddMathEquation;
ApiPresentation.prototype["SlidesToJSON"] = ApiPresentation.prototype.SlidesToJSON;
ApiPresentation.prototype["ToJSON"] = ApiPresentation.prototype.ToJSON;
ApiPresentation.prototype["GetAllOleObjects"] = ApiPresentation.prototype.GetAllOleObjects;
ApiPresentation.prototype["GetAllTables"] = ApiPresentation.prototype.GetAllTables;
ApiPresentation.prototype["GetAllCharts"] = ApiPresentation.prototype.GetAllCharts;
ApiPresentation.prototype["GetAllShapes"] = ApiPresentation.prototype.GetAllShapes;
ApiPresentation.prototype["GetAllImages"] = ApiPresentation.prototype.GetAllImages;
ApiPresentation.prototype["GetAllDrawings"] = ApiPresentation.prototype.GetAllDrawings;
ApiPresentation.prototype["GetCore"] = ApiPresentation.prototype.GetCore;
ApiPresentation.prototype["GetCustomProperties"] = ApiPresentation.prototype.GetCustomProperties;
ApiPresentation.prototype["GetCustomXmlParts"] = ApiPresentation.prototype.GetCustomXmlParts;
ApiMaster.prototype["GetClassType"] = ApiMaster.prototype.GetClassType;
ApiMaster.prototype["GetInternalId"] = ApiMaster.prototype.GetInternalId;
ApiMaster.prototype["GetAllLayouts"] = ApiMaster.prototype.GetAllLayouts;
ApiMaster.prototype["GetLayout"] = ApiMaster.prototype.GetLayout;
ApiMaster.prototype["GetLayoutByType"] = ApiMaster.prototype.GetLayoutByType;
ApiMaster.prototype["AddLayout"] = ApiMaster.prototype.AddLayout;
ApiMaster.prototype["RemoveLayout"] = ApiMaster.prototype.RemoveLayout;
ApiMaster.prototype["GetLayoutsCount"] = ApiMaster.prototype.GetLayoutsCount;
ApiMaster.prototype["AddObject"] = ApiMaster.prototype.AddObject;
ApiMaster.prototype["RemoveObject"] = ApiMaster.prototype.RemoveObject;
ApiMaster.prototype["SetBackground"] = ApiMaster.prototype.SetBackground;
ApiMaster.prototype["ClearBackground"] = ApiMaster.prototype.ClearBackground;
ApiMaster.prototype["Copy"] = ApiMaster.prototype.Copy;
ApiMaster.prototype["Duplicate"] = ApiMaster.prototype.Duplicate;
ApiMaster.prototype["Delete"] = ApiMaster.prototype.Delete;
ApiMaster.prototype["GetTheme"] = ApiMaster.prototype.GetTheme;
ApiMaster.prototype["SetTheme"] = ApiMaster.prototype.SetTheme;
ApiMaster.prototype["GetAllDrawings"] = ApiMaster.prototype.GetAllDrawings;
ApiMaster.prototype["GetAllShapes"] = ApiMaster.prototype.GetAllShapes;
ApiMaster.prototype["GetAllImages"] = ApiMaster.prototype.GetAllImages;
ApiMaster.prototype["GetAllCharts"] = ApiMaster.prototype.GetAllCharts;
ApiMaster.prototype["GetAllOleObjects"] = ApiMaster.prototype.GetAllOleObjects;
ApiMaster.prototype["GetAllTables"] = ApiMaster.prototype.GetAllTables;
ApiMaster.prototype["ToJSON"] = ApiMaster.prototype.ToJSON;
ApiMaster.prototype["GetDrawingsByPlaceholderType"] = ApiMaster.prototype.GetDrawingsByPlaceholderType;
ApiMaster.prototype["GroupDrawings"] = ApiMaster.prototype.GroupDrawings;
ApiLayout.prototype["GetClassType"] = ApiLayout.prototype.GetClassType;
ApiLayout.prototype["SetName"] = ApiLayout.prototype.SetName;
ApiLayout.prototype["GetLayoutType"] = ApiLayout.prototype.GetLayoutType;
ApiLayout.prototype["GetName"] = ApiLayout.prototype.GetName;
ApiLayout.prototype["AddObject"] = ApiLayout.prototype.AddObject;
ApiLayout.prototype["RemoveObject"] = ApiLayout.prototype.RemoveObject;
ApiLayout.prototype["SetBackground"] = ApiLayout.prototype.SetBackground;
ApiLayout.prototype["ClearBackground"] = ApiLayout.prototype.ClearBackground;
ApiLayout.prototype["FollowMasterBackground"] = ApiLayout.prototype.FollowMasterBackground;
ApiLayout.prototype["Copy"] = ApiLayout.prototype.Copy;
ApiLayout.prototype["Delete"] = ApiLayout.prototype.Delete;
ApiLayout.prototype["Duplicate"] = ApiLayout.prototype.Duplicate;
ApiLayout.prototype["MoveTo"] = ApiLayout.prototype.MoveTo;
ApiLayout.prototype["GetAllDrawings"] = ApiLayout.prototype.GetAllDrawings;
ApiLayout.prototype["GetAllShapes"] = ApiLayout.prototype.GetAllShapes;
ApiLayout.prototype["GetAllImages"] = ApiLayout.prototype.GetAllImages;
ApiLayout.prototype["GetAllCharts"] = ApiLayout.prototype.GetAllCharts;
ApiLayout.prototype["GetAllOleObjects"] = ApiLayout.prototype.GetAllOleObjects;
ApiLayout.prototype["GetAllTables"] = ApiLayout.prototype.GetAllTables;
ApiLayout.prototype["GetMaster"] = ApiLayout.prototype.GetMaster;
ApiLayout.prototype["ToJSON"] = ApiLayout.prototype.ToJSON;
ApiLayout.prototype["GetDrawingsByPlaceholderType"] = ApiLayout.prototype.GetDrawingsByPlaceholderType;
ApiLayout.prototype["GroupDrawings"] = ApiLayout.prototype.GroupDrawings;
ApiPlaceholder.prototype["GetClassType"] = ApiPlaceholder.prototype.GetClassType;
ApiPlaceholder.prototype["SetType"] = ApiPlaceholder.prototype.SetType;
ApiPlaceholder.prototype["GetType"] = ApiPlaceholder.prototype.GetType;
ApiPlaceholder.prototype["SetIndex"] = ApiPlaceholder.prototype.SetIndex;
ApiPlaceholder.prototype["GetIndex"] = ApiPlaceholder.prototype.GetIndex;
ApiTheme.prototype["GetClassType"] = ApiTheme.prototype.GetClassType;
ApiTheme.prototype["GetMaster"] = ApiTheme.prototype.GetMaster;
ApiTheme.prototype["SetColorScheme"] = ApiTheme.prototype.SetColorScheme;
ApiTheme.prototype["GetColorScheme"] = ApiTheme.prototype.GetColorScheme;
ApiTheme.prototype["SetFormatScheme"] = ApiTheme.prototype.SetFormatScheme;
ApiTheme.prototype["GetFormatScheme"] = ApiTheme.prototype.GetFormatScheme;
ApiTheme.prototype["SetFontScheme"] = ApiTheme.prototype.SetFontScheme;
ApiTheme.prototype["GetFontScheme"] = ApiTheme.prototype.GetFontScheme;
ApiThemeColorScheme.prototype["GetClassType"] = ApiThemeColorScheme.prototype.GetClassType;
ApiThemeColorScheme.prototype["SetSchemeName"] = ApiThemeColorScheme.prototype.SetSchemeName;
ApiThemeColorScheme.prototype["ChangeColor"] = ApiThemeColorScheme.prototype.ChangeColor;
ApiThemeColorScheme.prototype["Copy"] = ApiThemeColorScheme.prototype.Copy;
ApiThemeColorScheme.prototype["ToJSON"] = ApiThemeColorScheme.prototype.ToJSON;
ApiThemeFormatScheme.prototype["GetClassType"] = ApiThemeFormatScheme.prototype.GetClassType;
ApiThemeFormatScheme.prototype["SetSchemeName"] = ApiThemeFormatScheme.prototype.SetSchemeName;
ApiThemeFormatScheme.prototype["ChangeFillStyles"] = ApiThemeFormatScheme.prototype.ChangeFillStyles;
ApiThemeFormatScheme.prototype["ChangeBgFillStyles"] = ApiThemeFormatScheme.prototype.ChangeBgFillStyles;
ApiThemeFormatScheme.prototype["ChangeLineStyles"] = ApiThemeFormatScheme.prototype.ChangeLineStyles;
ApiThemeFormatScheme.prototype["Copy"] = ApiThemeFormatScheme.prototype.Copy;
ApiThemeFormatScheme.prototype["ToJSON"] = ApiThemeFormatScheme.prototype.ToJSON;
ApiThemeFontScheme.prototype["GetClassType"] = ApiThemeFontScheme.prototype.GetClassType;
ApiThemeFontScheme.prototype["SetSchemeName"] = ApiThemeFontScheme.prototype.SetSchemeName;
ApiThemeFontScheme.prototype["SetFonts"] = ApiThemeFontScheme.prototype.SetFonts;
ApiThemeFontScheme.prototype["Copy"] = ApiThemeFontScheme.prototype.Copy;
ApiThemeFontScheme.prototype["ToJSON"] = ApiThemeFontScheme.prototype.ToJSON;
ApiSlide.prototype["GetClassType"] = ApiSlide.prototype.GetClassType;
ApiSlide.prototype["RemoveAllObjects"] = ApiSlide.prototype.RemoveAllObjects;
ApiSlide.prototype["AddObject"] = ApiSlide.prototype.AddObject;
ApiSlide.prototype["AddComment"] = ApiSlide.prototype.AddComment;
ApiSlide.prototype["RemoveObject"] = ApiSlide.prototype.RemoveObject;
ApiSlide.prototype["SetBackground"] = ApiSlide.prototype.SetBackground;
ApiSlide.prototype["GetVisible"] = ApiSlide.prototype.GetVisible;
ApiSlide.prototype["SetVisible"] = ApiSlide.prototype.SetVisible;
ApiSlide.prototype["GetWidth"] = ApiSlide.prototype.GetWidth;
ApiSlide.prototype["GetHeight"] = ApiSlide.prototype.GetHeight;
ApiSlide.prototype["ApplyLayout"] = ApiSlide.prototype.ApplyLayout;
ApiSlide.prototype["Delete"] = ApiSlide.prototype.Delete;
ApiSlide.prototype["Copy"] = ApiSlide.prototype.Copy;
ApiSlide.prototype["Duplicate"] = ApiSlide.prototype.Duplicate;
ApiSlide.prototype["MoveTo"] = ApiSlide.prototype.MoveTo;
ApiSlide.prototype["GetSlideIndex"] = ApiSlide.prototype.GetSlideIndex;
ApiSlide.prototype["ClearBackground"] = ApiSlide.prototype.ClearBackground;
ApiSlide.prototype["FollowLayoutBackground"] = ApiSlide.prototype.FollowLayoutBackground;
ApiSlide.prototype["FollowMasterBackground"] = ApiSlide.prototype.FollowMasterBackground;
ApiSlide.prototype["ApplyTheme"] = ApiSlide.prototype.ApplyTheme;
ApiSlide.prototype["GetLayout"] = ApiSlide.prototype.GetLayout;
ApiSlide.prototype["GetTheme"] = ApiSlide.prototype.GetTheme;
ApiSlide.prototype["GetAllDrawings"] = ApiSlide.prototype.GetAllDrawings;
ApiSlide.prototype["GetAllShapes"] = ApiSlide.prototype.GetAllShapes;
ApiSlide.prototype["GetAllImages"] = ApiSlide.prototype.GetAllImages;
ApiSlide.prototype["GetAllCharts"] = ApiSlide.prototype.GetAllCharts;
ApiSlide.prototype["GetAllOleObjects"] = ApiSlide.prototype.GetAllOleObjects;
ApiSlide.prototype["GetAllTables"] = ApiSlide.prototype.GetAllTables;
ApiSlide.prototype["ToJSON"] = ApiSlide.prototype.ToJSON;
ApiSlide.prototype["GetDrawingsByPlaceholderType"] = ApiSlide.prototype.GetDrawingsByPlaceholderType;
ApiSlide.prototype["Select"] = ApiSlide.prototype.Select;
ApiSlide.prototype["GroupDrawings"] = ApiSlide.prototype.GroupDrawings;
ApiSlide.prototype["GetNotesPage"] = ApiSlide.prototype.GetNotesPage;
ApiSlide.prototype["AddNotesText"] = ApiSlide.prototype.AddNotesText;
ApiNotesPage.prototype["GetClassType"] = ApiNotesPage.prototype.GetClassType;
ApiNotesPage.prototype["GetBodyShape"] = ApiNotesPage.prototype.GetBodyShape;
ApiNotesPage.prototype["AddBodyShapeText"] = ApiNotesPage.prototype.AddBodyShapeText;
ApiNotesPage.prototype["GetBodyShapeText"] = ApiNotesPage.prototype.GetBodyShapeText;
ApiNotesPage.prototype["GetTheme"] = ApiNotesPage.prototype.GetTheme;
ApiDrawing.prototype["GetClassType"] = ApiDrawing.prototype.GetClassType;
ApiDrawing.prototype["SetSize"] = ApiDrawing.prototype.SetSize;
ApiDrawing.prototype["SetPosition"] = ApiDrawing.prototype.SetPosition;
ApiDrawing.prototype["GetParent"] = ApiDrawing.prototype.GetParent;
ApiDrawing.prototype["GetParentSlide"] = ApiDrawing.prototype.GetParentSlide;
ApiDrawing.prototype["GetParentLayout"] = ApiDrawing.prototype.GetParentLayout;
ApiDrawing.prototype["GetParentMaster"] = ApiDrawing.prototype.GetParentMaster;
ApiDrawing.prototype["Copy"] = ApiDrawing.prototype.Copy;
ApiDrawing.prototype["Delete"] = ApiDrawing.prototype.Delete;
ApiDrawing.prototype["SetPlaceholder"] = ApiDrawing.prototype.SetPlaceholder;
ApiDrawing.prototype["GetPlaceholder"] = ApiDrawing.prototype.GetPlaceholder;
ApiDrawing.prototype["GetWidth"] = ApiDrawing.prototype.GetWidth;
ApiDrawing.prototype["GetHeight"] = ApiDrawing.prototype.GetHeight;
ApiDrawing.prototype["GetLockValue"] = ApiDrawing.prototype.GetLockValue;
ApiDrawing.prototype["SetLockValue"] = ApiDrawing.prototype.SetLockValue;
ApiDrawing.prototype["Select"] = ApiDrawing.prototype.Select;
ApiDrawing.prototype["SetRotation"] = ApiDrawing.prototype.SetRotation;
ApiDrawing.prototype["GetRotation"] = ApiDrawing.prototype.GetRotation;
ApiDrawing.prototype["GetPosX"] = ApiDrawing.prototype.GetPosX;
ApiDrawing.prototype["GetPosY"] = ApiDrawing.prototype.GetPosY;
ApiDrawing.prototype["SetPosX"] = ApiDrawing.prototype.SetPosX;
ApiDrawing.prototype["SetPosY"] = ApiDrawing.prototype.SetPosY;
ApiDrawing.prototype["ReplacePlaceholder"] = ApiDrawing.prototype.ReplacePlaceholder;
ApiDrawing.prototype["GetInternalId"] = ApiDrawing.prototype.GetInternalId;
ApiGroup.prototype["GetClassType"] = ApiGroup.prototype.GetClassType;
ApiGroup.prototype["Ungroup"] = ApiGroup.prototype.Ungroup;
ApiDrawing.prototype["ToJSON"] = ApiDrawing.prototype.ToJSON;
let ApiChart = AscBuilder.ApiChart;
ApiChart.prototype["SetSize"] = ApiChart.prototype.SetSize = ApiDrawing.prototype.SetSize;
ApiChart.prototype["SetPosition"] = ApiChart.prototype.SetPosition = ApiDrawing.prototype.SetPosition;
ApiChart.prototype["GetParent"] = ApiChart.prototype.GetParent = ApiDrawing.prototype.GetParent;
ApiChart.prototype["GetParentSlide"] = ApiChart.prototype.GetParentSlide = ApiDrawing.prototype.GetParentSlide;
ApiChart.prototype["GetParentLayout"] = ApiChart.prototype.GetParentLayout = ApiDrawing.prototype.GetParentLayout;
ApiChart.prototype["GetParentMaster"] = ApiChart.prototype.GetParentMaster = ApiDrawing.prototype.GetParentMaster;
ApiChart.prototype["Delete"] = ApiChart.prototype.Delete = ApiDrawing.prototype.Delete;
ApiChart.prototype["SetPlaceholder"] = ApiChart.prototype.SetPlaceholder = ApiDrawing.prototype.SetPlaceholder;
ApiChart.prototype["GetPlaceholder"] = ApiChart.prototype.GetPlaceholder = ApiDrawing.prototype.GetPlaceholder;
ApiChart.prototype["GetWidth"] = ApiChart.prototype.GetWidth = ApiDrawing.prototype.GetWidth;
ApiChart.prototype["GetHeight"] = ApiChart.prototype.GetHeight = ApiDrawing.prototype.GetHeight;
ApiChart.prototype["GetLockValue"] = ApiChart.prototype.GetLockValue = ApiDrawing.prototype.GetLockValue;
ApiChart.prototype["SetLockValue"] = ApiChart.prototype.SetLockValue = ApiDrawing.prototype.SetLockValue;
ApiImage.prototype["GetClassType"] = ApiImage.prototype.GetClassType;
ApiShape.prototype["GetClassType"] = ApiShape.prototype.GetClassType;
ApiShape.prototype["GetDocContent"] = ApiShape.prototype.GetDocContent;
ApiShape.prototype["GetContent"] = ApiShape.prototype.GetContent;
ApiShape.prototype["SetVerticalTextAlign"] = ApiShape.prototype.SetVerticalTextAlign;
ApiShape.prototype["GetGeometry"] = ApiShape.prototype.GetGeometry;
ApiShape.prototype["SetGeometry"] = ApiShape.prototype.SetGeometry;
ApiOleObject.prototype["GetClassType"] = ApiOleObject.prototype.GetClassType;
ApiOleObject.prototype["SetData"] = ApiOleObject.prototype.SetData;
ApiOleObject.prototype["GetData"] = ApiOleObject.prototype.GetData;
ApiOleObject.prototype["SetApplicationId"] = ApiOleObject.prototype.SetApplicationId;
ApiOleObject.prototype["GetApplicationId"] = ApiOleObject.prototype.GetApplicationId;
ApiTable.prototype["GetClassType"] = ApiTable.prototype.GetClassType;
ApiTable.prototype["GetRow"] = ApiTable.prototype.GetRow;
ApiTable.prototype["MergeCells"] = ApiTable.prototype.MergeCells;
ApiTable.prototype["SetTableLook"] = ApiTable.prototype.SetTableLook;
ApiTable.prototype["AddRow"] = ApiTable.prototype.AddRow;
ApiTable.prototype["AddColumn"] = ApiTable.prototype.AddColumn;
ApiTable.prototype["RemoveRow"] = ApiTable.prototype.RemoveRow;
ApiTable.prototype["RemoveColumn"] = ApiTable.prototype.RemoveColumn;
ApiTable.prototype["SetShd"] = ApiTable.prototype.SetShd;
ApiTable.prototype["ToJSON"] = ApiTable.prototype.ToJSON;
ApiTableRow.prototype["GetClassType"] = ApiTableRow.prototype.GetClassType;
ApiTableRow.prototype["GetCellsCount"] = ApiTableRow.prototype.GetCellsCount;
ApiTableRow.prototype["GetCell"] = ApiTableRow.prototype.GetCell;
ApiTableRow.prototype["SetHeight"] = ApiTableRow.prototype.SetHeight;
ApiTableCell.prototype["GetClassType"] = ApiTableCell.prototype.GetClassType;
ApiTableCell.prototype["GetContent"] = ApiTableCell.prototype.GetContent;
ApiTableCell.prototype["SetShd"] = ApiTableCell.prototype.SetShd;
ApiTableCell.prototype["SetCellMarginBottom"] = ApiTableCell.prototype.SetCellMarginBottom;
ApiTableCell.prototype["SetCellMarginLeft"] = ApiTableCell.prototype.SetCellMarginLeft;
ApiTableCell.prototype["SetCellMarginRight"] = ApiTableCell.prototype.SetCellMarginRight;
ApiTableCell.prototype["SetCellMarginTop"] = ApiTableCell.prototype.SetCellMarginTop;
ApiTableCell.prototype["SetCellBorderBottom"] = ApiTableCell.prototype.SetCellBorderBottom;
ApiTableCell.prototype["SetCellBorderLeft"] = ApiTableCell.prototype.SetCellBorderLeft;
ApiTableCell.prototype["SetCellBorderRight"] = ApiTableCell.prototype.SetCellBorderRight;
ApiTableCell.prototype["SetCellBorderTop"] = ApiTableCell.prototype.SetCellBorderTop;
ApiTableCell.prototype["SetVerticalAlign"] = ApiTableCell.prototype.SetVerticalAlign;
ApiTableCell.prototype["SetTextDirection"] = ApiTableCell.prototype.SetTextDirection;
Api.prototype.private_CreateApiSlide = function(oSlide){
return new ApiSlide(oSlide);
};
Api.prototype.private_CreateApiMaster = function(oMaster){
return new ApiMaster(oMaster);
};
Api.prototype.private_CreateApiLayout = function(oLayout){
return new ApiLayout(oLayout);
};
Api.prototype.private_CreateApiPresentation = function(oPresentation){
return new ApiPresentation(oPresentation);
};
/**
* Class representing the selection in the presentation.
* @constructor
*/
function ApiSelection() {
}
ApiSelection.prototype.getPresentation = function () {
return Asc.editor.getLogicDocument();
};
/**
* Returns the type of the current selection.
* @memberof ApiSelection
* @typeofeditors ["CPE"]
* @returns {SelectionType}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiSelection/Methods/GetType.js
*/
ApiSelection.prototype.GetType = function() {
let oPresentation = this.getPresentation();
let nFocusObjectType = oPresentation.GetFocusObjType();
if(nFocusObjectType === AscCommon.FOCUS_OBJECT_THUMBNAILS) {
return "slides";
}
else if(nFocusObjectType === AscCommon.FOCUS_OBJECT_MAIN && !oPresentation.IsFocusOnNotes()) {
let oController = oPresentation.GetCurrentController();
if(!oController || oController.selectedObjects.length === 0) {
return "none";
}
let oContent = oController.getTargetDocContent();
if(oContent) {
return "text";
}
return "shapes";
}
return "none";
};
/**
* Returns the selected shapes.
* @memberof ApiSelection
* @typeofeditors ["CPE"]
* @returns {ApiDrawing[]}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiSelection/Methods/GetShapes.js
*/
ApiSelection.prototype.GetShapes = function() {
let oController = Asc.editor.getGraphicController();
if(oController) {
let aApiDrawings = [];
let aSelectedDrawings = oController.selectedObjects;
for(let nIdx = 0; nIdx < aSelectedDrawings.length; ++nIdx) {
let oDrawing = AscBuilder.GetApiDrawing(aSelectedDrawings[nIdx]);
if(oDrawing) {
aApiDrawings.push(oDrawing);
}
}
return aApiDrawings;
}
return [];
};
/**
* Returns the selected slides.
* @memberof ApiSelection
* @typeofeditors ["CPE"]
* @returns {ApiSlide[]}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiSelection/Methods/GetSlides.js
*/
ApiSelection.prototype.GetSlides = function() {
if(!Asc.editor.isNormalMode()) {
return [];
}
let oPresentation = this.getPresentation();
let aSlides = oPresentation.GetSelectedSlideObjects();
let aApiSlides = [];
for(let nIdx = 0; nIdx < aSlides.length; ++nIdx) {
aApiSlides.push(new ApiSlide(aSlides[nIdx]));
}
return aApiSlides;
};
/**
* Specifies whether the current selection is empty or not.
* @memberof ApiSelection
* @typeofeditors ["CPE"]
* @returns {boolean}
* @since 8.3.0
* @see office-js-api/Examples/{Editor}/ApiSelection/Methods/IsEmpty.js
*/
ApiSelection.prototype.IsEmpty = function() {
return this.GetType() === "none";
};
ApiSelection.prototype["GetType"] = ApiSelection.prototype.GetType;
ApiSelection.prototype["GetShapes"] = ApiSelection.prototype.GetShapes;
ApiSelection.prototype["GetSlides"] = ApiSelection.prototype.GetSlides;
ApiSelection.prototype["IsEmpty"] = ApiSelection.prototype.IsEmpty;
function private_GetCurrentSlide(){
var oApiPresentation = editor.GetPresentation();
if(oApiPresentation){
var oApiSlide = oApiPresentation.GetCurrentSlide();
if(oApiSlide){
return oApiSlide.Slide;
}
}
return null;
}
function private_GetDrawingDocument(){
return Asc.editor.getDrawingDocument();
}
function private_GetPresentation(){
return Asc.editor.WordControl.m_oLogicDocument;
}
function private_EMU2MM(EMU)
{
return EMU / 36000.0;
}
function private_GetApi(){
return Asc.editor;
}
function private_GetBoolean(bValue, bDefValue)
{
if (true === bValue)
return true;
else if (false === bValue)
return false;
else
return (undefined !== bDefValue ? bDefValue : false);
}
function private_Twips2MM(twips)
{
return 25.4 / 72.0 / 20 * twips;
}
function private_GetInt(nValue, nMin, nMax)
{
var nResult = nValue | 0;
if (undefined !== nMin && null !== nMin)
nResult = Math.max(nMin, nResult);
if (undefined !== nMax && null !== nMax)
nResult = Math.min(nMax, nResult);
return nResult;
}
function private_GetTableMeasure(sType, nValue)
{
var nType = tblwidth_Auto;
var nW = 0;
if ("auto" === sType)
{
nType = tblwidth_Auto;
nW = 0;
}
else if ("nil" === sType)
{
nType = tblwidth_Nil;
nW = 0;
}
else if ("percent" === sType)
{
nType = tblwidth_Pct;
nW = private_GetInt(nValue, null, null);
}
else if ("twips" === sType)
{
nType = tblwidth_Mm;
nW = private_Twips2MM(nValue);
}
return new CTableMeasurement(nType, nW);
}
function private_MM2EMU(mm)
{
return mm * 36000.0;
}
function private_GetDrawingLockType(sType)
{
var nLockType = -1;
switch (sType)
{
case "noGrp":
nLockType = AscFormat.LOCKS_MASKS.noGrp;
break;
case "noUngrp":
nLockType = AscFormat.LOCKS_MASKS.noUngrp;
break;
case "noSelect":
nLockType = AscFormat.LOCKS_MASKS.noSelect;
break;
case "noRot":
nLockType = AscFormat.LOCKS_MASKS.noRot;
break;
case "noChangeAspect":
nLockType = AscFormat.LOCKS_MASKS.noChangeAspect;
break;
case "noMove":
nLockType = AscFormat.LOCKS_MASKS.noMove;
break;
case "noResize":
nLockType = AscFormat.LOCKS_MASKS.noResize;
break;
case "noEditPoints":
nLockType = AscFormat.LOCKS_MASKS.noEditPoints;
break;
case "noAdjustHandles":
nLockType = AscFormat.LOCKS_MASKS.noAdjustHandles;
break;
case "noChangeArrowheads":
nLockType = AscFormat.LOCKS_MASKS.noChangeArrowheads;
break;
case "noChangeShapeType":
nLockType = AscFormat.LOCKS_MASKS.noChangeShapeType;
break;
case "noDrilldown":
nLockType = AscFormat.LOCKS_MASKS.noDrilldown;
break;
case "noTextEdit":
nLockType = AscFormat.LOCKS_MASKS.noTextEdit;
break;
case "noCrop":
nLockType = AscFormat.LOCKS_MASKS.noCrop;
break;
case "txBox":
nLockType = AscFormat.LOCKS_MASKS.txBox;
break;
}
return nLockType;
}
function private_GetPlaceholderInnerType(sType) {
let nType;
switch (sType)
{
case "body":
nType = 0;
break;
case "chart":
nType = 1;
break;
case "clipArt":
nType = 2;
break;
case "ctrTitle":
nType = 3;
break;
case "diagram":
nType = 4;
break;
case "date":
nType = 5;
break;
case "footer":
nType = 6;
break;
case "header":
nType = 7;
break;
case "media":
nType = 8;
break;
case "object":
nType = 9;
break;
case "picture":
nType = 10;
break;
case "sldImage":
nType = 11;
break;
case "sldNumber":
nType = 12;
break;
case "subTitle":
nType = 13;
break;
case "table":
nType = 14;
break;
case "title":
nType = 15;
break;
default:
nType = 0;
}
return nType;
}
function private_GetPlaceholderStrType(nType) {
let sType;
switch (nType)
{
case 0:
sType = "body";
break;
case 1:
sType = "chart";
break;
case 2:
sType = "clipArt";
break;
case 3:
sType = "ctrTitle";
break;
case 4:
sType = "diagram";
break;
case 5:
sType = "date";
break;
case 6:
sType = "footer";
break;
case 7:
sType = "header";
break;
case 8:
sType = "media";
break;
case 9:
sType = "object";
break;
case 10:
sType = "picture";
break;
case 11:
sType = "sldImage";
break;
case 12:
sType = "sldNumber";
break;
case 13:
sType = "subTitle";
break;
case 14:
sType = "table";
break;
case 15:
sType = "title";
break;
default:
sType = "unknown";
}
return sType;
}
function private_GetAllDrawingsWithType(aDrawings, nObjectType, fCreateBuilderWrapper) {
let aWrappers = [];
for(let nIdx = 0; nIdx < aDrawings.length; ++nIdx) {
let oDrawing = aDrawings[nIdx];
if(oDrawing.getObjectType() === nObjectType) {
aWrappers.push(fCreateBuilderWrapper(oDrawing));
}
}
return aWrappers;
}
function getArrayAddIndex(position, element, aArray) {
if(!element) return null;
let arrayLength = aArray.length;
for(let idx = 0; idx < arrayLength; ++idx) {
if(aArray[idx] === element) {
return null;
}
}
return getAddIndex(position, arrayLength);
}
function getAddIndex(position, arrayLength) {
if(!AscFormat.isRealNumber(position) || position < 0 || position > arrayLength) {
return arrayLength;
}
return position;
}
window['AscBuilder'] = window['AscBuilder'] || {};
window['AscBuilder'].ApiShape = ApiShape;
window['AscBuilder'].ApiImage = ApiImage;
window['AscBuilder'].ApiGroup = ApiGroup;
window['AscBuilder'].ApiOleObject = ApiOleObject;
window['AscBuilder'].ApiTable = ApiTable;
})(window, null);