From ff1702c338a067ad228c01322a3fa737eecf7f51 Mon Sep 17 00:00:00 2001 From: wangxk Date: Fri, 28 Feb 2025 09:11:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=95=E9=AA=8C=E6=95=B0=E6=8D=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/index.html | 4 +- web/public/lib/pptxjs/pptxjs.css | 161 + web/public/lib/pptxjs/pptxjs.js | 14104 ++++++++++++++++ web/src/api/datamanagement/index.ts | 25 + web/src/assets/fileimg/mp3.png | Bin 0 -> 574 bytes web/src/assets/fileimg/mp4.png | Bin 0 -> 316 bytes web/src/assets/fileimg/pdf.png | Bin 0 -> 541 bytes web/src/assets/fileimg/ppt.png | Bin 0 -> 312 bytes web/src/assets/fileimg/text_line.png | Bin 0 -> 307 bytes web/src/assets/fileimg/wenjianjia.png | Bin 0 -> 298 bytes web/src/assets/fileimg/word.png | Bin 0 -> 446 bytes web/src/assets/fileimg/zip.png | Bin 0 -> 419 bytes web/src/assets/images/addNew.png | Bin 0 -> 617 bytes web/src/assets/project/chong.png | Bin 0 -> 258 bytes web/src/assets/project/gai.png | Bin 0 -> 333 bytes web/src/components/file/ZUpload.vue | 14 +- .../components/file/preview/AudioPlayer.vue | 83 +- .../components/file/preview/VideoPlayer.vue | 153 +- .../file/preview/VideoPlayerAsyncLoading.vue | 1 + web/src/lang/zh-cn.ts | 2 +- web/src/views/component/Viewfile.vue | 111 +- web/src/views/login/index.vue | 4 +- web/src/views/special/document/index.vue | 102 +- .../views/testdata/datamanagement/index.vue | 809 +- .../testdata/fileSynchronization/index.vue | 315 + 25 files changed, 15560 insertions(+), 328 deletions(-) create mode 100644 web/public/lib/pptxjs/pptxjs.css create mode 100644 web/public/lib/pptxjs/pptxjs.js create mode 100644 web/src/assets/fileimg/mp3.png create mode 100644 web/src/assets/fileimg/mp4.png create mode 100644 web/src/assets/fileimg/pdf.png create mode 100644 web/src/assets/fileimg/ppt.png create mode 100644 web/src/assets/fileimg/text_line.png create mode 100644 web/src/assets/fileimg/wenjianjia.png create mode 100644 web/src/assets/fileimg/word.png create mode 100644 web/src/assets/fileimg/zip.png create mode 100644 web/src/assets/images/addNew.png create mode 100644 web/src/assets/project/chong.png create mode 100644 web/src/assets/project/gai.png create mode 100644 web/src/views/testdata/fileSynchronization/index.vue diff --git a/web/index.html b/web/index.html index 7777d54..616b82a 100644 --- a/web/index.html +++ b/web/index.html @@ -7,7 +7,9 @@ - 明眸眼健康智慧管理系统 + + + 文档与数据管理系统
diff --git a/web/public/lib/pptxjs/pptxjs.css b/web/public/lib/pptxjs/pptxjs.css new file mode 100644 index 0000000..a722685 --- /dev/null +++ b/web/public/lib/pptxjs/pptxjs.css @@ -0,0 +1,161 @@ + + +.slide { + position: relative; + border: 1px solid #333; + border-radius: 10px; + overflow: hidden; + margin-bottom: 50px; + margin-left: auto; + margin-right: auto; +} + +.slide div.block { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + line-height: 1; +} + +.slide div.content { + display: flex; + flex-direction: column; +} +.slide div.diagram-content{ + display: flex; + flex-direction: column; +} + +.slide div.content-rtl { + display: flex; + flex-direction: column; + direction: rtl; +} +.slide .pregraph-rtl{ + direction: rtl; +} +.slide .pregraph-ltr{ + direction: ltr; +} +.slide .pregraph-inherit{ + direction: inherit; +} +.slide .slide-prgrph{ + width: 100%; + /* overflow-wrap:break-word; + word-wrap: break-word; */ + + /* word-break: break-word; */ + /* unicode-bidi: bidi-override; */ + /* hyphens: auto; + overflow-wrap: break-word; */ + +} + +.slide .line-break-br::before{ + content: "\A"; + white-space: pre; +} +.slide div.v-up { + justify-content: flex-start; +} +.slide div.v-mid { + justify-content: center; +} +.slide div.v-down { + justify-content: flex-end; +} + +.slide div.h-left { + justify-content: flex-start; + align-items: flex-start; + text-align: left; +} +.slide div.h-left-rtl { + justify-content: flex-end; + align-items: flex-end; + text-align: left; +} +.slide div.h-mid { + justify-content: center; + align-items: center; + text-align: center; +} +.slide div.h-right { + justify-content: flex-end; + align-items: flex-end; + text-align: right; +} +.slide div.h-right-rtl { + justify-content: flex-start; + align-items: flex-start; + text-align: right; +} + +.slide div.h-just, +.slide div.h-dist { + text-align: justify; +} + + +.slide div.up-left { + justify-content: flex-start; + align-items: flex-start; + text-align: left; +} +.slide div.up-center { + justify-content: flex-start; + align-items: center; +} +.slide div.up-right { + justify-content: flex-start; + align-items: flex-end; +} +.slide div.center-left { + justify-content: center; + align-items: flex-start; + text-align: left; +} +.slide div.center-center { + justify-content: center; + align-items: center; +} +.slide div.center-right { + justify-content: center; + align-items: flex-end; +} +.slide div.down-left { + justify-content: flex-end; + align-items: flex-start; + text-align: left; +} +.slide div.down-center { + justify-content: flex-end; + align-items: center; +} +.slide div.down-right { + justify-content: flex-end; + align-items: flex-end; +} + + +.slide li.slide { + margin: 10px 0px; + font-size: 18px; +} + +.slide table { + position: absolute; +} + +.slide svg.drawing { + position: absolute; + overflow: visible; +} +/* +#pptx-thumb { + min-width: 240px; + height: 180px; +} +*/ \ No newline at end of file diff --git a/web/public/lib/pptxjs/pptxjs.js b/web/public/lib/pptxjs/pptxjs.js new file mode 100644 index 0000000..0f1f6b0 --- /dev/null +++ b/web/public/lib/pptxjs/pptxjs.js @@ -0,0 +1,14104 @@ +/** + * pptxjs.js + * Ver. : 1.21.1 + * last update: 16/11/2021 + * Author: meshesha , https://github.com/meshesha + * LICENSE: MIT + * url:https://pptx.js.org/ + * fix issues: + * [#16](https://github.com/meshesha/PPTXjs/issues/16) + */ + +(function ($) { + $.fn.pptxToHtml = function (options) { + //var worker; + var $result = $(this); + var divId = $result.attr("id"); + + var isDone = false; + + var MsgQueue = new Array(); + + //var slideLayoutClrOvride = ""; + + var defaultTextStyle = null; + + var chartID = 0; + + var _order = 1; + + var app_verssion ; + + var rtl_langs_array = ["he-IL", "ar-AE", "ar-SA", "dv-MV", "fa-IR","ur-PK"] + + var slideFactor = 96 / 914400; + var fontSizeFactor = 4 / 3.2; + ////////////////////// + var slideWidth = 0; + var slideHeight = 0; + var isSlideMode = false; + var processFullTheme = true; + var styleTable = {}; + var settings = $.extend(true, { + // These are the defaults. + pptxFileUrl: "", + fileInputId: "", + slidesScale: "", //Change Slides scale by percent + slideMode: false, /** true,false*/ + slideType: "divs2slidesjs", /*'divs2slidesjs' (default) , 'revealjs'(https://revealjs.com) -TODO*/ + revealjsPath: "", /*path to js file of revealjs - TODO*/ + keyBoardShortCut: false, /** true,false ,condition: slideMode: true XXXXX - need to remove - this is doublcated*/ + mediaProcess: true, /** true,false: if true then process video and audio files */ + jsZipV2: false, + themeProcess: true, /*true (default) , false, "colorsAndImageOnly"*/ + incSlide:{ + width: 0, + height: 0 + }, + slideModeConfig: { + first: 1, + nav: true, /** true,false : show or not nav buttons*/ + navTxtColor: "black", /** color */ + keyBoardShortCut: true, /** true,false ,condition: */ + showSlideNum: true, /** true,false */ + showTotalSlideNum: true, /** true,false */ + autoSlide: true, /** false or seconds , F8 to active ,keyBoardShortCut: true */ + randomAutoSlide: false, /** true,false ,autoSlide:true */ + loop: false, /** true,false */ + background: false, /** false or color*/ + transition: "default", /** transition type: "slid","fade","default","random" , to show transition efects :transitionTime > 0.5 */ + transitionTime: 1 /** transition time between slides in seconds */ + }, + revealjsConfig: {} + }, options); + + processFullTheme = settings.themeProcess; + + $("#" + divId).prepend( + $("
").attr({ + "class": "slides-loadnig-msg", + "style": "display:block; width:100%; color:white; background-color: #ddd;" + })/*.html("Loading...")*/ + .html($("
").attr({ + "class": "slides-loading-progress-bar", + "style": "width: 1%; background-color: #4775d1;" + }).html("Loading... (1%)")) + ); + if (settings.slideMode) { + if (!jQuery().divs2slides) { + jQuery.getScript('./js/divs2slides.js'); + } + } + if (settings.jsZipV2 !== false) { + jQuery.getScript(settings.jsZipV2); + if (localStorage.getItem('isPPTXjsReLoaded') !== 'yes') { + localStorage.setItem('isPPTXjsReLoaded', 'yes'); + location.reload(); + } + } + + if (settings.keyBoardShortCut) { + $(document).bind("keydown", function (event) { + event.preventDefault(); + var key = event.keyCode; + console.log(key, isDone) + if (key == 116 && !isSlideMode) { //F5 + isSlideMode = true; + initSlideMode(divId, settings); + } else if (key == 116 && isSlideMode) { + //exit slide mode - TODO + + } + }); + } + FileReaderJS.setSync(false); + if (settings.pptxFileUrl != "") { + try{ + JSZipUtils.getBinaryContent(settings.pptxFileUrl, function (err, content) { + var blob = new Blob([content]); + var file_name = settings.pptxFileUrl; + var fArry = file_name.split("."); + fArry.pop(); + blob.name = fArry[0]; + FileReaderJS.setupBlob(blob, { + readAsDefault: "ArrayBuffer", + on: { + load: function (e, file) { + //console.log(e.target.result); + convertToHtml(e.target.result); + } + } + }); + }); + }catch(e){ + console.error("file url error (" + settings.pptxFileUrl+ "0)") + $(".slides-loadnig-msg").remove(); + } + } else { + $(".slides-loadnig-msg").remove() + } + if (settings.fileInputId != "") { + $("#" + settings.fileInputId).on("change", function (evt) { + $result.html(""); + var file = evt.target.files[0]; + // var fileName = file[0].name; + //var fileSize = file[0].size; + var fileType = file.type; + if (fileType == "application/vnd.openxmlformats-officedocument.presentationml.presentation") { + FileReaderJS.setupBlob(file, { + readAsDefault: "ArrayBuffer", + on: { + load: function (e, file) { + //console.log(e.target.result); + convertToHtml(e.target.result); + } + } + }); + } else { + alert("This is not pptx file"); + } + }); + } + + function updateProgressBar(percent) { + //console.log("percent: ", percent) + var progressBarElemtnt = $(".slides-loading-progress-bar") + progressBarElemtnt.width(percent + "%") + progressBarElemtnt.html("Loading...(" + percent + "%)"); + } + + function convertToHtml(file) { + //'use strict'; + //console.log("file", file, "size:", file.byteLength); + if (file.byteLength < 10){ + console.error("file url error (" + settings.pptxFileUrl + "0)") + $(".slides-loadnig-msg").remove(); + return; + } + var zip = new JSZip(), s; + //if (typeof file === 'string') { // Load + zip = zip.load(file); //zip.load(file, { base64: true }); + var rslt_ary = processPPTX(zip); + //s = readXmlFile(zip, 'ppt/tableStyles.xml'); + //var slidesHeight = $("#" + divId + " .slide").height(); + for (var i = 0; i < rslt_ary.length; i++) { + switch (rslt_ary[i]["type"]) { + case "slide": + $result.append(rslt_ary[i]["data"]); + break; + case "pptx-thumb": + //$("#pptx-thumb").attr("src", "data:image/jpeg;base64," +rslt_ary[i]["data"]); + break; + case "slideSize": + slideWidth = rslt_ary[i]["data"].width; + slideHeight = rslt_ary[i]["data"].height; + /* + $("#"+divId).css({ + 'width': slideWidth + 80, + 'height': slideHeight + 60 + }); + */ + break; + case "globalCSS": + //console.log(rslt_ary[i]["data"]) + $result.append(""); + break; + case "ExecutionTime": + processMsgQueue(MsgQueue); + setNumericBullets($(".block")); + setNumericBullets($("table td")); + + isDone = true; + + if (settings.slideMode && !isSlideMode) { + isSlideMode = true; + initSlideMode(divId, settings); + } else if (!settings.slideMode) { + $(".slides-loadnig-msg").remove(); + } + break; + case "progress-update": + //console.log(rslt_ary[i]["data"]); //update progress bar - TODO + updateProgressBar(rslt_ary[i]["data"]) + break; + default: + } + } + if (!settings.slideMode || (settings.slideMode && settings.slideType == "revealjs")) { + + if (document.getElementById("all_slides_warpper") === null) { + $("#" + divId + " .slide").wrapAll("
"); + //$("#" + divId + " .slides").wrap("
"); + } + + if (settings.slideMode && settings.slideType == "revealjs") { + $("#" + divId).addClass("reveal") + } + } + + var sScale = settings.slidesScale; + var trnsfrmScl = ""; + if (sScale != "") { + var numsScale = parseInt(sScale); + var scaleVal = numsScale / 100; + if (settings.slideMode && settings.slideType != "revealjs") { + trnsfrmScl = 'transform:scale(' + scaleVal + '); transform-origin:top'; + } + } + + var slidesHeight = $("#" + divId + " .slide").height(); + var numOfSlides = $("#" + divId + " .slide").length; + var sScaleVal = (sScale != "") ? scaleVal : 1; + //console.log("slidesHeight: " + slidesHeight + "\nnumOfSlides: " + numOfSlides + "\nScale: " + sScaleVal) + + $("#all_slides_warpper").attr({ + style: trnsfrmScl + ";height: " + (numOfSlides * slidesHeight * sScaleVal) + "px" + }) + + //} + } + + function initSlideMode(divId, settings) { + //console.log(settings.slideType) + if (settings.slideType == "" || settings.slideType == "divs2slidesjs") { + var slidesHeight = $("#" + divId + " .slide").height(); + $("#" + divId + " .slide").hide(); + setTimeout(function () { + var slideConf = settings.slideModeConfig; + $(".slides-loadnig-msg").remove(); + $("#" + divId).divs2slides({ + first: slideConf.first, + nav: slideConf.nav, + showPlayPauseBtn: settings.showPlayPauseBtn, + navTxtColor: slideConf.navTxtColor, + keyBoardShortCut: slideConf.keyBoardShortCut, + showSlideNum: slideConf.showSlideNum, + showTotalSlideNum: slideConf.showTotalSlideNum, + autoSlide: slideConf.autoSlide, + randomAutoSlide: slideConf.randomAutoSlide, + loop: slideConf.loop, + background: slideConf.background, + transition: slideConf.transition, + transitionTime: slideConf.transitionTime + }); + + var sScale = settings.slidesScale; + var trnsfrmScl = ""; + if (sScale != "") { + var numsScale = parseInt(sScale); + var scaleVal = numsScale / 100; + trnsfrmScl = 'transform:scale(' + scaleVal + '); transform-origin:top'; + } + + var numOfSlides = 1; + var sScaleVal = (sScale != "") ? scaleVal : 1; + //console.log(slidesHeight); + $("#all_slides_warpper").attr({ + style: trnsfrmScl + ";height: " + (numOfSlides * slidesHeight * sScaleVal) + "px" + }) + + }, 1500); + } else if (settings.slideType == "revealjs") { + $(".slides-loadnig-msg").remove(); + var revealjsPath = ""; + if (settings.revealjsPath != "") { + revealjsPath = settings.revealjsPath; + } else { + revealjsPath = "./revealjs/reveal.js"; + } + $.getScript(revealjsPath, function (response, status) { + if (status == "success") { + // $("section").removeClass("slide"); + Reveal.initialize(settings.revealjsConfig); //revealjsConfig - TODO + } + }); + } + + + + } + + function processPPTX(zip) { + var post_ary = []; + var dateBefore = new Date(); + + if (zip.file("docProps/thumbnail.jpeg") !== null) { + var pptxThumbImg = base64ArrayBuffer(zip.file("docProps/thumbnail.jpeg").asArrayBuffer()); + post_ary.push({ + "type": "pptx-thumb", + "data": pptxThumbImg, + "slide_num": -1 + }); + } + + var filesInfo = getContentTypes(zip); + var slideSize = getSlideSizeAndSetDefaultTextStyle(zip); + tableStyles = readXmlFile(zip, "ppt/tableStyles.xml"); + //console.log("slideSize: ", slideSize) + post_ary.push({ + "type": "slideSize", + "data": slideSize, + "slide_num": 0 + }); + + var numOfSlides = filesInfo["slides"].length; + for (var i = 0; i < numOfSlides; i++) { + var filename = filesInfo["slides"][i]; + var filename_no_path = ""; + var filename_no_path_ary = []; + if (filename.indexOf("/") != -1) { + filename_no_path_ary = filename.split("/"); + filename_no_path = filename_no_path_ary.pop(); + } else { + filename_no_path = filename; + } + var filename_no_path_no_ext = ""; + if (filename_no_path.indexOf(".") != -1) { + var filename_no_path_no_ext_ary = filename_no_path.split("."); + var slide_ext = filename_no_path_no_ext_ary.pop(); + filename_no_path_no_ext = filename_no_path_no_ext_ary.join("."); + } + var slide_number = 1; + if (filename_no_path_no_ext != "" && filename_no_path.indexOf("slide") != -1) { + slide_number = Number(filename_no_path_no_ext.substr(5)); + } + var slideHtml = processSingleSlide(zip, filename, i, slideSize); + post_ary.push({ + "type": "slide", + "data": slideHtml, + "slide_num": slide_number, + "file_name": filename_no_path_no_ext + }); + post_ary.push({ + "type": "progress-update", + "slide_num": (numOfSlides + i + 1), + "data": (i + 1) * 100 / numOfSlides + }); + } + + post_ary.sort(function (a, b) { + return a.slide_num - b.slide_num; + }); + + post_ary.push({ + "type": "globalCSS", + "data": genGlobalCSS() + }); + + var dateAfter = new Date(); + post_ary.push({ + "type": "ExecutionTime", + "data": dateAfter - dateBefore + }); + return post_ary; + } + + function readXmlFile(zip, filename, isSlideContent) { + try { + var fileContent = zip.file(filename).asText(); + if (isSlideContent && app_verssion <= 12) { + //< office2007 + //remove "" tag + fileContent = fileContent.replace(//g, '$1'); + } + var xmlData = tXml(fileContent, { simplify: 1 }); + if (xmlData["?xml"] !== undefined) { + return xmlData["?xml"]; + } else { + return xmlData; + } + } catch (e) { + //console.log("error readXmlFile: the file '", filename, "' not exit") + return null; + } + + } + function getContentTypes(zip) { + var ContentTypesJson = readXmlFile(zip, "[Content_Types].xml"); + + var subObj = ContentTypesJson["Types"]["Override"]; + var slidesLocArray = []; + var slideLayoutsLocArray = []; + for (var i = 0; i < subObj.length; i++) { + switch (subObj[i]["attrs"]["ContentType"]) { + case "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": + slidesLocArray.push(subObj[i]["attrs"]["PartName"].substr(1)); + break; + case "application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml": + slideLayoutsLocArray.push(subObj[i]["attrs"]["PartName"].substr(1)); + break; + default: + } + } + return { + "slides": slidesLocArray, + "slideLayouts": slideLayoutsLocArray + }; + } + + function getSlideSizeAndSetDefaultTextStyle(zip) { + //get app version + var app = readXmlFile(zip, "docProps/app.xml"); + var app_verssion_str = app["Properties"]["AppVersion"] + app_verssion = parseInt(app_verssion_str); + console.log("create by Office PowerPoint app verssion: ", app_verssion_str) + + //get slide dimensions + var rtenObj = {}; + var content = readXmlFile(zip, "ppt/presentation.xml"); + var sldSzAttrs = content["p:presentation"]["p:sldSz"]["attrs"]; + var sldSzWidth = parseInt(sldSzAttrs["cx"]); + var sldSzHeight = parseInt(sldSzAttrs["cy"]); + var sldSzType = sldSzAttrs["type"]; + console.log("Presentation size type: ", sldSzType) + + //1 inches = 96px = 2.54cm + // 1 EMU = 1 / 914400 inch + // Pixel = EMUs * Resolution / 914400; (Resolution = 96) + //var standardHeight = 6858000; + //console.log("slideFactor: ", slideFactor, "standardHeight:", standardHeight, (standardHeight - sldSzHeight) / standardHeight) + + //slideFactor = (96 * (1 + ((standardHeight - sldSzHeight) / standardHeight))) / 914400 ; + + //slideFactor = slideFactor + sldSzHeight*((standardHeight - sldSzHeight) / standardHeight) ; + + //var ration = sldSzWidth / sldSzHeight; + + //Scale + // var viewProps = readXmlFile(zip, "ppt/viewProps.xml"); + // var scaleLoc = getTextByPathList(viewProps, ["p:viewPr", "p:slideViewPr", "p:cSldViewPr", "p:cViewPr","p:scale"]); + // var scaleXnodes, scaleX = 1, scaleYnode, scaleY = 1; + // if (scaleLoc !== undefined){ + // scaleXnodes = scaleLoc["a:sx"]["attrs"]; + // var scaleXnodesN = scaleXnodes["n"]; + // var scaleXnodesD = scaleXnodes["d"]; + // if (scaleXnodesN !== undefined && scaleXnodesD !== undefined && scaleXnodesN != 0){ + // scaleX = parseInt(scaleXnodesD)/parseInt(scaleXnodesN); + // } + // scaleYnode = scaleLoc["a:sy"]["attrs"]; + // var scaleYnodeN = scaleYnode["n"]; + // var scaleYnodeD = scaleYnode["d"]; + // if (scaleYnodeN !== undefined && scaleYnodeD !== undefined && scaleYnodeN != 0) { + // scaleY = parseInt(scaleYnodeD) / parseInt(scaleYnodeN) ; + // } + + // } + //console.log("scaleX: ", scaleX, "scaleY:", scaleY) + //slideFactor = slideFactor * scaleX; + + defaultTextStyle = content["p:presentation"]["p:defaultTextStyle"]; + + slideWidth = sldSzWidth * slideFactor + settings.incSlide.width|0;// * scaleX;//parseInt(sldSzAttrs["cx"]) * 96 / 914400; + slideHeight = sldSzHeight * slideFactor + settings.incSlide.height|0;// * scaleY;//parseInt(sldSzAttrs["cy"]) * 96 / 914400; + rtenObj = { + "width": slideWidth, + "height": slideHeight + }; + return rtenObj; + } + function processSingleSlide(zip, sldFileName, index, slideSize) { + /* + self.postMessage({ + "type": "INFO", + "data": "Processing slide" + (index + 1) + }); + */ + // =====< Step 1 >===== + // Read relationship filename of the slide (Get slideLayoutXX.xml) + // @sldFileName: ppt/slides/slide1.xml + // @resName: ppt/slides/_rels/slide1.xml.rels + var resName = sldFileName.replace("slides/slide", "slides/_rels/slide") + ".rels"; + var resContent = readXmlFile(zip, resName); + var RelationshipArray = resContent["Relationships"]["Relationship"]; + //console.log("RelationshipArray: " , RelationshipArray) + var layoutFilename = ""; + var diagramFilename = ""; + var slideResObj = {}; + if (RelationshipArray.constructor === Array) { + for (var i = 0; i < RelationshipArray.length; i++) { + switch (RelationshipArray[i]["attrs"]["Type"]) { + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout": + layoutFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/"); + break; + case "http://schemas.microsoft.com/office/2007/relationships/diagramDrawing": + diagramFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/"); + slideResObj[RelationshipArray[i]["attrs"]["Id"]] = { + "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""), + "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/") + }; + break; + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide": + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image": + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart": + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink": + default: + slideResObj[RelationshipArray[i]["attrs"]["Id"]] = { + "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""), + "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/") + }; + } + } + } else { + layoutFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/"); + } + //console.log(slideResObj); + // Open slideLayoutXX.xml + var slideLayoutContent = readXmlFile(zip, layoutFilename); + var slideLayoutTables = indexNodes(slideLayoutContent); + var sldLayoutClrOvr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping"]); + + //console.log(slideLayoutClrOvride); + if (sldLayoutClrOvr !== undefined) { + slideLayoutClrOvride = sldLayoutClrOvr["attrs"]; + } + // =====< Step 2 >===== + // Read slide master filename of the slidelayout (Get slideMasterXX.xml) + // @resName: ppt/slideLayouts/slideLayout1.xml + // @masterName: ppt/slideLayouts/_rels/slideLayout1.xml.rels + var slideLayoutResFilename = layoutFilename.replace("slideLayouts/slideLayout", "slideLayouts/_rels/slideLayout") + ".rels"; + var slideLayoutResContent = readXmlFile(zip, slideLayoutResFilename); + RelationshipArray = slideLayoutResContent["Relationships"]["Relationship"]; + var masterFilename = ""; + var layoutResObj = {}; + if (RelationshipArray.constructor === Array) { + for (var i = 0; i < RelationshipArray.length; i++) { + switch (RelationshipArray[i]["attrs"]["Type"]) { + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster": + masterFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/"); + break; + default: + layoutResObj[RelationshipArray[i]["attrs"]["Id"]] = { + "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""), + "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/") + }; + } + } + } else { + masterFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/"); + } + // Open slideMasterXX.xml + var slideMasterContent = readXmlFile(zip, masterFilename); + var slideMasterTextStyles = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:txStyles"]); + var slideMasterTables = indexNodes(slideMasterContent); + + /////////////////Amir///////////// + //Open slideMasterXX.xml.rels + var slideMasterResFilename = masterFilename.replace("slideMasters/slideMaster", "slideMasters/_rels/slideMaster") + ".rels"; + var slideMasterResContent = readXmlFile(zip, slideMasterResFilename); + RelationshipArray = slideMasterResContent["Relationships"]["Relationship"]; + var themeFilename = ""; + var masterResObj = {}; + if (RelationshipArray.constructor === Array) { + for (var i = 0; i < RelationshipArray.length; i++) { + switch (RelationshipArray[i]["attrs"]["Type"]) { + case "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme": + themeFilename = RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/"); + break; + default: + masterResObj[RelationshipArray[i]["attrs"]["Id"]] = { + "type": RelationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""), + "target": RelationshipArray[i]["attrs"]["Target"].replace("../", "ppt/") + }; + } + } + } else { + themeFilename = RelationshipArray["attrs"]["Target"].replace("../", "ppt/"); + } + //console.log(themeFilename) + //Load Theme file + var themeResObj = {}; + if (themeFilename !== undefined) { + var themeName = themeFilename.split("/").pop(); + var themeResFileName = themeFilename.replace(themeName, "_rels/" + themeName) + ".rels"; + //console.log("themeFilename: ", themeFilename, ", themeName: ", themeName, ", themeResFileName: ", themeResFileName) + var themeContent = readXmlFile(zip, themeFilename); + var themeResContent = readXmlFile(zip, themeResFileName); + if (themeResContent !== null) { + var relationshipArray = themeResContent["Relationships"]["Relationship"]; + if (relationshipArray !== undefined){ + var themeFilename = ""; + if (relationshipArray.constructor === Array) { + for (var i = 0; i < relationshipArray.length; i++) { + themeResObj[relationshipArray[i]["attrs"]["Id"]] = { + "type": relationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""), + "target": relationshipArray[i]["attrs"]["Target"].replace("../", "ppt/") + }; + } + } else { + //console.log("theme relationshipArray : ", relationshipArray) + themeResObj[relationshipArray["attrs"]["Id"]] = { + "type": relationshipArray["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""), + "target": relationshipArray["attrs"]["Target"].replace("../", "ppt/") + }; + } + } + } + } + //Load diagram file + var diagramResObj = {}; + var digramFileContent = {}; + if (diagramFilename !== undefined) { + var diagName = diagramFilename.split("/").pop(); + var diagramResFileName = diagramFilename.replace(diagName, "_rels/" + diagName) + ".rels"; + //console.log("diagramFilename: ", diagramFilename, ", themeName: ", themeName, ", diagramResFileName: ", diagramResFileName) + digramFileContent = readXmlFile(zip, diagramFilename); + if (digramFileContent !== null && digramFileContent !== undefined && digramFileContent != "") { + var digramFileContentObjToStr = JSON.stringify(digramFileContent); + digramFileContentObjToStr = digramFileContentObjToStr.replace(/dsp:/g, "p:"); + digramFileContent = JSON.parse(digramFileContentObjToStr); + } + + var digramResContent = readXmlFile(zip, diagramResFileName); + if (digramResContent !== null) { + var relationshipArray = digramResContent["Relationships"]["Relationship"]; + var themeFilename = ""; + if (relationshipArray.constructor === Array) { + for (var i = 0; i < relationshipArray.length; i++) { + diagramResObj[relationshipArray[i]["attrs"]["Id"]] = { + "type": relationshipArray[i]["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""), + "target": relationshipArray[i]["attrs"]["Target"].replace("../", "ppt/") + }; + } + } else { + //console.log("theme relationshipArray : ", relationshipArray) + diagramResObj[relationshipArray["attrs"]["Id"]] = { + "type": relationshipArray["attrs"]["Type"].replace("http://schemas.openxmlformats.org/officeDocument/2006/relationships/", ""), + "target": relationshipArray["attrs"]["Target"].replace("../", "ppt/") + }; + } + } + } + //console.log("diagramResObj: " , diagramResObj) + // =====< Step 3 >===== + var slideContent = readXmlFile(zip, sldFileName , true); + var nodes = slideContent["p:sld"]["p:cSld"]["p:spTree"]; + var warpObj = { + "zip": zip, + "slideLayoutContent": slideLayoutContent, + "slideLayoutTables": slideLayoutTables, + "slideMasterContent": slideMasterContent, + "slideMasterTables": slideMasterTables, + "slideContent": slideContent, + "slideResObj": slideResObj, + "slideMasterTextStyles": slideMasterTextStyles, + "layoutResObj": layoutResObj, + "masterResObj": masterResObj, + "themeContent": themeContent, + "themeResObj": themeResObj, + "digramFileContent": digramFileContent, + "diagramResObj": diagramResObj, + "defaultTextStyle": defaultTextStyle + }; + var bgResult = ""; + if (processFullTheme === true) { + bgResult = getBackground(warpObj, slideSize, index); + } + + var bgColor = ""; + if (processFullTheme == "colorsAndImageOnly") { + bgColor = getSlideBackgroundFill(warpObj, index); + } + + if (settings.slideMode && settings.slideType == "revealjs") { + var result = "
" + } else { + var result = "
" + } + result += bgResult; + for (var nodeKey in nodes) { + if (nodes[nodeKey].constructor === Array) { + for (var i = 0; i < nodes[nodeKey].length; i++) { + result += processNodesInSlide(nodeKey, nodes[nodeKey][i], nodes, warpObj, "slide"); + } + } else { + result += processNodesInSlide(nodeKey, nodes[nodeKey], nodes, warpObj, "slide"); + } + } + if (settings.slideMode && settings.slideType == "revealjs") { + return result + "
"; + } else { + return result + ""; + } + + } + + function indexNodes(content) { + + var keys = Object.keys(content); + var spTreeNode = content[keys[0]]["p:cSld"]["p:spTree"]; + + var idTable = {}; + var idxTable = {}; + var typeTable = {}; + + for (var key in spTreeNode) { + + if (key == "p:nvGrpSpPr" || key == "p:grpSpPr") { + continue; + } + + var targetNode = spTreeNode[key]; + + if (targetNode.constructor === Array) { + for (var i = 0; i < targetNode.length; i++) { + var nvSpPrNode = targetNode[i]["p:nvSpPr"]; + var id = getTextByPathList(nvSpPrNode, ["p:cNvPr", "attrs", "id"]); + var idx = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "idx"]); + var type = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "type"]); + + if (id !== undefined) { + idTable[id] = targetNode[i]; + } + if (idx !== undefined) { + idxTable[idx] = targetNode[i]; + } + if (type !== undefined) { + typeTable[type] = targetNode[i]; + } + } + } else { + var nvSpPrNode = targetNode["p:nvSpPr"]; + var id = getTextByPathList(nvSpPrNode, ["p:cNvPr", "attrs", "id"]); + var idx = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "idx"]); + var type = getTextByPathList(nvSpPrNode, ["p:nvPr", "p:ph", "attrs", "type"]); + + if (id !== undefined) { + idTable[id] = targetNode; + } + if (idx !== undefined) { + idxTable[idx] = targetNode; + } + if (type !== undefined) { + typeTable[type] = targetNode; + } + } + + } + + return { "idTable": idTable, "idxTable": idxTable, "typeTable": typeTable }; + } + + function processNodesInSlide(nodeKey, nodeValue, nodes, warpObj, source, sType) { + var result = ""; + + switch (nodeKey) { + case "p:sp": // Shape, Text + result = processSpNode(nodeValue, nodes, warpObj, source, sType); + break; + case "p:cxnSp": // Shape, Text (with connection) + result = processCxnSpNode(nodeValue, nodes, warpObj, source, sType); + break; + case "p:pic": // Picture + result = processPicNode(nodeValue, warpObj, source, sType); + break; + case "p:graphicFrame": // Chart, Diagram, Table + result = processGraphicFrameNode(nodeValue, warpObj, source, sType); + break; + case "p:grpSp": + result = processGroupSpNode(nodeValue, warpObj, source); + break; + case "mc:AlternateContent": //Equations and formulas as Image + //console.log("mc:AlternateContent nodeValue:" , nodeValue , "nodes:",nodes, "sType:",sType) + var mcFallbackNode = getTextByPathList(nodeValue, ["mc:Fallback"]); + result = processGroupSpNode(mcFallbackNode, warpObj, source); + break; + default: + //console.log("nodeKey: ", nodeKey) + } + + return result; + + } + + function processGroupSpNode(node, warpObj, source) { + //console.log("processGroupSpNode: node: ", node) + var xfrmNode = getTextByPathList(node, ["p:grpSpPr", "a:xfrm"]); + if (xfrmNode !== undefined) { + var x = parseInt(xfrmNode["a:off"]["attrs"]["x"]) * slideFactor; + var y = parseInt(xfrmNode["a:off"]["attrs"]["y"]) * slideFactor; + var chx = parseInt(xfrmNode["a:chOff"]["attrs"]["x"]) * slideFactor; + var chy = parseInt(xfrmNode["a:chOff"]["attrs"]["y"]) * slideFactor; + var cx = parseInt(xfrmNode["a:ext"]["attrs"]["cx"]) * slideFactor; + var cy = parseInt(xfrmNode["a:ext"]["attrs"]["cy"]) * slideFactor; + var chcx = parseInt(xfrmNode["a:chExt"]["attrs"]["cx"]) * slideFactor; + var chcy = parseInt(xfrmNode["a:chExt"]["attrs"]["cy"]) * slideFactor; + var rotate = parseInt(xfrmNode["attrs"]["rot"]) + var rotStr = ""//;" border: 3px solid black;"; + // angleToDegrees(getTextByPathList(slideXfrmNode, ["attrs", "rot"])); + // var rotX = 0; + // var rotY = 0; + var top = y - chy, + left = x - chx, + width = cx - chcx, + height = cy - chcy; + + var sType = "group"; + if (!isNaN(rotate)) { + rotate = angleToDegrees(rotate); + rotStr += "transform: rotate(" + rotate + "deg) ; transform-origin: center;"; + // var cLin = Math.sqrt(Math.pow((chy), 2) + Math.pow((chx), 2)); + // var rdian = degreesToRadians(rotate); + // rotX = cLin * Math.cos(rdian); + // rotY = cLin * Math.sin(rdian); + if (rotate != 0) { + top = y; + left = x; + width = cx; + height = cy; + sType = "group-rotate"; + } + + } + } + var grpStyle = ""; + + if (rotStr !== undefined && rotStr != "") { + grpStyle += rotStr; + } + + if (top !== undefined) { + grpStyle += "top: " + top + "px;"; + } + if (left !== undefined) { + grpStyle += "left: " + left + "px;"; + } + if (width !== undefined) { + grpStyle += "width:" + width + "px;"; + } + if (height !== undefined) { + grpStyle += "height: " + height + "px;"; + } + var order = node["attrs"]["order"]; + + var result = "
"; + + // Procsee all child nodes + for (var nodeKey in node) { + if (node[nodeKey].constructor === Array) { + for (var i = 0; i < node[nodeKey].length; i++) { + result += processNodesInSlide(nodeKey, node[nodeKey][i], node, warpObj, source, sType); + } + } else { + result += processNodesInSlide(nodeKey, node[nodeKey], node, warpObj, source, sType); + } + } + + result += "
"; + + return result; + } + + function processSpNode(node, pNode, warpObj, source, sType) { + + /* + * 958 + * 959 + * 960 + * 961 + * 962 + * 963 + * 964 + * 965 + * 966 + */ + + var id = getTextByPathList(node, ["p:nvSpPr", "p:cNvPr", "attrs", "id"]); + var name = getTextByPathList(node, ["p:nvSpPr", "p:cNvPr", "attrs", "name"]); + var idx = (getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "idx"]) === undefined) ? undefined : getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "idx"]); + var type = (getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]) === undefined) ? undefined : getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]); + var order = getTextByPathList(node, ["attrs", "order"]); + var isUserDrawnBg; + if (source == "slideLayoutBg" || source == "slideMasterBg") { + var userDrawn = getTextByPathList(node, ["p:nvSpPr", "p:nvPr", "attrs", "userDrawn"]); + if (userDrawn == "1") { + isUserDrawnBg = true; + } else { + isUserDrawnBg = false; + } + } + var slideLayoutSpNode = undefined; + var slideMasterSpNode = undefined; + + if (idx !== undefined) { + slideLayoutSpNode = warpObj["slideLayoutTables"]["idxTable"][idx]; + if (type !== undefined) { + slideMasterSpNode = warpObj["slideMasterTables"]["typeTable"][type]; + } else { + slideMasterSpNode = warpObj["slideMasterTables"]["idxTable"][idx]; + } + } else { + if (type !== undefined) { + slideLayoutSpNode = warpObj["slideLayoutTables"]["typeTable"][type]; + slideMasterSpNode = warpObj["slideMasterTables"]["typeTable"][type]; + } + } + + if (type === undefined) { + txBoxVal = getTextByPathList(node, ["p:nvSpPr", "p:cNvSpPr", "attrs", "txBox"]); + if (txBoxVal == "1") { + type = "textBox"; + } + } + if (type === undefined) { + type = getTextByPathList(slideLayoutSpNode, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]); + if (type === undefined) { + //type = getTextByPathList(slideMasterSpNode, ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]); + if (source == "diagramBg") { + type = "diagram"; + } else { + + type = "obj"; //default type + } + } + } + //console.log("processSpNode type:", type, "idx:", idx); + return genShape(node, pNode, slideLayoutSpNode, slideMasterSpNode, id, name, idx, type, order, warpObj, isUserDrawnBg, sType, source); + } + + function processCxnSpNode(node, pNode, warpObj, source, sType) { + + var id = node["p:nvCxnSpPr"]["p:cNvPr"]["attrs"]["id"]; + var name = node["p:nvCxnSpPr"]["p:cNvPr"]["attrs"]["name"]; + var idx = (node["p:nvCxnSpPr"]["p:nvPr"]["p:ph"] === undefined) ? undefined : node["p:nvSpPr"]["p:nvPr"]["p:ph"]["attrs"]["idx"]; + var type = (node["p:nvCxnSpPr"]["p:nvPr"]["p:ph"] === undefined) ? undefined : node["p:nvSpPr"]["p:nvPr"]["p:ph"]["attrs"]["type"]; + //(, ) + var order = node["attrs"]["order"]; + + return genShape(node, pNode, undefined, undefined, id, name, idx, type, order, warpObj, undefined, sType, source); + } + + function genShape(node, pNode, slideLayoutSpNode, slideMasterSpNode, id, name, idx, type, order, warpObj, isUserDrawnBg, sType, source) { + //var dltX = 0; + //var dltY = 0; + var xfrmList = ["p:spPr", "a:xfrm"]; + var slideXfrmNode = getTextByPathList(node, xfrmList); + var slideLayoutXfrmNode = getTextByPathList(slideLayoutSpNode, xfrmList); + var slideMasterXfrmNode = getTextByPathList(slideMasterSpNode, xfrmList); + + var result = ""; + var shpId = getTextByPathList(node, ["attrs", "order"]); + //console.log("shpId: ",shpId) + var shapType = getTextByPathList(node, ["p:spPr", "a:prstGeom", "attrs", "prst"]); + + //custGeom - Amir + var custShapType = getTextByPathList(node, ["p:spPr", "a:custGeom"]); + + var isFlipV = false; + var isFlipH = false; + var flip = ""; + if (getTextByPathList(slideXfrmNode, ["attrs", "flipV"]) === "1") { + isFlipV = true; + } + if (getTextByPathList(slideXfrmNode, ["attrs", "flipH"]) === "1") { + isFlipH = true; + } + if (isFlipH && !isFlipV) { + flip = " scale(-1,1)" + } else if (!isFlipH && isFlipV) { + flip = " scale(1,-1)" + } else if (isFlipH && isFlipV) { + flip = " scale(-1,-1)" + } + /////////////////////////Amir//////////////////////// + //rotate + var rotate = angleToDegrees(getTextByPathList(slideXfrmNode, ["attrs", "rot"])); + + //console.log("genShape rotate: " + rotate); + var txtRotate; + var txtXframeNode = getTextByPathList(node, ["p:txXfrm"]); + if (txtXframeNode !== undefined) { + var txtXframeRot = getTextByPathList(txtXframeNode, ["attrs", "rot"]); + if (txtXframeRot !== undefined) { + txtRotate = angleToDegrees(txtXframeRot) + 90; + } + } else { + txtRotate = rotate; + } + ////////////////////////////////////////////////// + if (shapType !== undefined || custShapType !== undefined /*&& slideXfrmNode !== undefined*/) { + var off = getTextByPathList(slideXfrmNode, ["a:off", "attrs"]); + var x = parseInt(off["x"]) * slideFactor; + var y = parseInt(off["y"]) * slideFactor; + + var ext = getTextByPathList(slideXfrmNode, ["a:ext", "attrs"]); + var w = parseInt(ext["cx"]) * slideFactor; + var h = parseInt(ext["cy"]) * slideFactor; + + var svgCssName = "_svg_css_" + (Object.keys(styleTable).length + 1) + "_" + Math.floor(Math.random() * 1001); + //console.log("name:", name, "svgCssName: ", svgCssName) + var effectsClassName = svgCssName + "_effects"; + result += ""; + result += '' + // Fill Color + var fillColor = getShapeFill(node, pNode, true, warpObj, source); + //console.log("genShape: fillColor: ", fillColor) + var grndFillFlg = false; + var imgFillFlg = false; + var clrFillType = getFillType(getTextByPathList(node, ["p:spPr"])); + if (clrFillType == "GROUP_FILL") { + clrFillType = getFillType(getTextByPathList(pNode, ["p:grpSpPr"])); + } + // if (clrFillType == "") { + // var clrFillType = getFillType(getTextByPathList(node, ["p:style","a:fillRef"])); + // } + //console.log("genShape: fillColor: ", fillColor, ", clrFillType: ", clrFillType, ", node: ", node) + ///////////////////////////////////////// + if (clrFillType == "GRADIENT_FILL") { + grndFillFlg = true; + var color_arry = fillColor.color; + var angl = fillColor.rot + 90; + var svgGrdnt = getSvgGradient(w, h, angl, color_arry, shpId); + //fill="url(#linGrd)" + //console.log("genShape: svgGrdnt: ", svgGrdnt) + result += svgGrdnt; + + } else if (clrFillType == "PIC_FILL") { + imgFillFlg = true; + var svgBgImg = getSvgImagePattern(node, fillColor, shpId, warpObj); + //fill="url(#imgPtrn)" + //console.log(svgBgImg) + result += svgBgImg; + } else if (clrFillType == "PATTERN_FILL") { + var styleText = fillColor; + if (styleText in styleTable) { + styleText += "do-nothing: " + svgCssName +";"; + } + styleTable[styleText] = { + "name": svgCssName, + "text": styleText + }; + //} + fillColor = "none"; + } else { + if (clrFillType != "SOLID_FILL" && clrFillType != "PATTERN_FILL" && + (shapType == "arc" || + shapType == "bracketPair" || + shapType == "bracePair" || + shapType == "leftBracket" || + shapType == "leftBrace" || + shapType == "rightBrace" || + shapType == "rightBracket")) { //Temp. solution - TODO + fillColor = "none"; + } + } + // Border Color + var border = getBorder(node, pNode, true, "shape", warpObj); + + var headEndNodeAttrs = getTextByPathList(node, ["p:spPr", "a:ln", "a:headEnd", "attrs"]); + var tailEndNodeAttrs = getTextByPathList(node, ["p:spPr", "a:ln", "a:tailEnd", "attrs"]); + // type: none, triangle, stealth, diamond, oval, arrow + + ////////////////////effects///////////////////////////////////////////////////// + //p:spPr => a:effectLst => + //"a:blur" + //"a:fillOverlay" + //"a:glow" + //"a:innerShdw" + //"a:outerShdw" + //"a:prstShdw" + //"a:reflection" + //"a:softEdge" + //p:spPr => a:scene3d + //"a:camera" + //"a:lightRig" + //"a:backdrop" + //"a:extLst"? + //p:spPr => a:sp3d + //"a:bevelT" + //"a:bevelB" + //"a:extrusionClr" + //"a:contourClr" + //"a:extLst"? + //////////////////////////////outerShdw/////////////////////////////////////////// + //not support sizing the shadow + var outerShdwNode = getTextByPathList(node, ["p:spPr", "a:effectLst", "a:outerShdw"]); + var oShadowSvgUrlStr = "" + if (outerShdwNode !== undefined) { + var chdwClrNode = getSolidFill(outerShdwNode, undefined, undefined, warpObj); + var outerShdwAttrs = outerShdwNode["attrs"]; + + //var algn = outerShdwAttrs["algn"]; + var dir = (outerShdwAttrs["dir"]) ? (parseInt(outerShdwAttrs["dir"]) / 60000) : 0; + var dist = parseInt(outerShdwAttrs["dist"]) * slideFactor;//(px) //* (3 / 4); //(pt) + //var rotWithShape = outerShdwAttrs["rotWithShape"]; + var blurRad = (outerShdwAttrs["blurRad"]) ? (parseInt(outerShdwAttrs["blurRad"]) * slideFactor) : ""; //+ "px" + //var sx = (outerShdwAttrs["sx"]) ? (parseInt(outerShdwAttrs["sx"]) / 100000) : 1; + //var sy = (outerShdwAttrs["sy"]) ? (parseInt(outerShdwAttrs["sy"]) / 100000) : 1; + var vx = dist * Math.sin(dir * Math.PI / 180); + var hx = dist * Math.cos(dir * Math.PI / 180); + //SVG + //var oShadowId = "outerhadow_" + shpId; + //oShadowSvgUrlStr = "filter='url(#" + oShadowId+")'"; + //var shadowFilterStr = ''; + //1: + //shadowFilterStr += '' + //2: + //shadowFilterStr += ''; //#' + chdwClrNode +' + //shadowFilterStr += ''; //how much to offset + //shadowFilterStr += ''; //tdDeviation is how much to blur + //shadowFilterStr += ''; //slope is the opacity of the shadow + //shadowFilterStr += ''; //this contains the element that the filter is applied to + //shadowFilterStr += ''; + //result += shadowFilterStr; + + //css: + var svg_css_shadow = "filter:drop-shadow(" + hx + "px " + vx + "px " + blurRad + "px #" + chdwClrNode + ");"; + + if (svg_css_shadow in styleTable) { + svg_css_shadow += "do-nothing: " + svgCssName + ";"; + } + + styleTable[svg_css_shadow] = { + "name": effectsClassName, + "text": svg_css_shadow + }; + + } + //////////////////////////////////////////////////////////////////////////////////////// + if ((headEndNodeAttrs !== undefined && (headEndNodeAttrs["type"] === "triangle" || headEndNodeAttrs["type"] === "arrow")) || + (tailEndNodeAttrs !== undefined && (tailEndNodeAttrs["type"] === "triangle" || tailEndNodeAttrs["type"] === "arrow"))) { + var triangleMarker = ""; + result += triangleMarker; + } + result += '' + } + if (shapType !== undefined && custShapType === undefined) { + //console.log("shapType: ", shapType) + switch (shapType) { + case "rect": + case "flowChartProcess": + case "flowChartPredefinedProcess": + case "flowChartInternalStorage": + case "actionButtonBlank": + result += ""; + + if (shapType == "flowChartPredefinedProcess") { + result += ""; + } else if (shapType == "flowChartInternalStorage") { + result += " "; + result += " "; + } + break; + case "flowChartCollate": + var d = "M 0,0" + + " L" + w + "," + 0 + + " L" + 0 + "," + h + + " L" + w + "," + h + + " z"; + result += ""; + + break; + case "flowChartDocument": + var y1, y2, y3, x1; + x1 = w * 10800 / 21600; + y1 = h * 17322 / 21600; + y2 = h * 20172 / 21600; + y3 = h * 23922 / 21600; + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + y1 + + " C" + x1 + "," + y1 + " " + x1 + "," + y3 + " " + 0 + "," + y2 + + " z"; + result += ""; + break; + case "flowChartMultidocument": + var y1, y2, y3, y4, y5, y6, y7, y8, y9, x1, x2, x3, x4, x5, x6, x7; + y1 = h * 18022 / 21600; + y2 = h * 3675 / 21600; + y3 = h * 23542 / 21600; + y4 = h * 1815 / 21600; + y5 = h * 16252 / 21600; + y6 = h * 16352 / 21600; + y7 = h * 14392 / 21600; + y8 = h * 20782 / 21600; + y9 = h * 14467 / 21600; + x1 = w * 1532 / 21600; + x2 = w * 20000 / 21600; + x3 = w * 9298 / 21600; + x4 = w * 19298 / 21600; + x5 = w * 18595 / 21600; + x6 = w * 2972 / 21600; + x7 = w * 20800 / 21600; + var d = "M" + 0 + "," + y2 + + " L" + x5 + "," + y2 + + " L" + x5 + "," + y1 + + " C" + x3 + "," + y1 + " " + x3 + "," + y3 + " " + 0 + "," + y8 + + " z" + + "M" + x1 + "," + y2 + + " L" + x1 + "," + y4 + + " L" + x2 + "," + y4 + + " L" + x2 + "," + y5 + + " C" + x4 + "," + y5 + " " + x5 + "," + y6 + " " + x5 + "," + y6 + + "M" + x6 + "," + y4 + + " L" + x6 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + y7 + + " C" + x7 + "," + y7 + " " + x2 + "," + y9 + " " + x2 + "," + y9; + + result += ""; + break; + case "actionButtonBackPrevious": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, g11, g12; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + g11 = hc - dx2; + g12 = hc + dx2; + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + "M" + g11 + "," + vc + + " L" + g12 + "," + g9 + + " L" + g12 + "," + g10 + + " z"; + + result += ""; + + break; + case "actionButtonBeginning": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + g11 = hc - dx2; + g12 = hc + dx2; + g13 = ss * 3 / 4; + g14 = g13 / 8; + g15 = g13 / 4; + g16 = g11 + g14; + g17 = g11 + g15; + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + "M" + g17 + "," + vc + + " L" + g12 + "," + g9 + + " L" + g12 + "," + g10 + + " z" + + "M" + g16 + "," + g9 + + " L" + g11 + "," + g9 + + " L" + g11 + "," + g10 + + " L" + g16 + "," + g10 + + " z"; + + result += ""; + + break; + case "actionButtonDocument": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, dx1, g11, g12, g13, g14, g15; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + dx1 = ss * 9 / 32; + g11 = hc - dx1; + g12 = hc + dx1; + g13 = ss * 3 / 16; + g14 = g12 - g13; + g15 = g9 + g13; + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + "M" + g11 + "," + g9 + + " L" + g14 + "," + g9 + + " L" + g12 + "," + g15 + + " L" + g12 + "," + g10 + + " L" + g11 + "," + g10 + + " z" + + "M" + g14 + "," + g9 + + " L" + g14 + "," + g15 + + " L" + g12 + "," + g15 + + " z"; + + result += ""; + + break; + case "actionButtonEnd": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + g11 = hc - dx2; + g12 = hc + dx2; + g13 = ss * 3 / 4; + g14 = g13 * 3 / 4; + g15 = g13 * 7 / 8; + g16 = g11 + g14; + g17 = g11 + g15; + var d = "M" + 0 + "," + h + + " L" + w + "," + h + + " L" + w + "," + 0 + + " L" + 0 + "," + 0 + + " z" + + " M" + g17 + "," + g9 + + " L" + g12 + "," + g9 + + " L" + g12 + "," + g10 + + " L" + g17 + "," + g10 + + " z" + + " M" + g16 + "," + vc + + " L" + g11 + "," + g9 + + " L" + g11 + "," + g10 + + " z"; + + result += ""; + + break; + case "actionButtonForwardNext": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, g11, g12; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + g11 = hc - dx2; + g12 = hc + dx2; + + var d = "M" + 0 + "," + h + + " L" + w + "," + h + + " L" + w + "," + 0 + + " L" + 0 + "," + 0 + + " z" + + " M" + g12 + "," + vc + + " L" + g11 + "," + g9 + + " L" + g11 + "," + g10 + + " z"; + + result += ""; + + break; + case "actionButtonHelp": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g11, g13, g14, g15, g16, g19, g20, g21, g23, g24, g27, g29, g30, g31, g33, g36, g37, g41, g42; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g11 = hc - dx2; + g13 = ss * 3 / 4; + g14 = g13 / 7; + g15 = g13 * 3 / 14; + g16 = g13 * 2 / 7; + g19 = g13 * 3 / 7; + g20 = g13 * 4 / 7; + g21 = g13 * 17 / 28; + g23 = g13 * 21 / 28; + g24 = g13 * 11 / 14; + g27 = g9 + g16; + g29 = g9 + g21; + g30 = g9 + g23; + g31 = g9 + g24; + g33 = g11 + g15; + g36 = g11 + g19; + g37 = g11 + g20; + g41 = g13 / 14; + g42 = g13 * 3 / 28; + var cX1 = g33 + g16; + var cX2 = g36 + g14; + var cY3 = g31 + g42; + var cX4 = (g37 + g36 + g16) / 2; + + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + "M" + g33 + "," + g27 + + shapeArc(cX1, g27, g16, g16, 180, 360, false).replace("M", "L") + + shapeArc(cX4, g27, g14, g15, 0, 90, false).replace("M", "L") + + shapeArc(cX4, g29, g41, g42, 270, 180, false).replace("M", "L") + + " L" + g37 + "," + g30 + + " L" + g36 + "," + g30 + + " L" + g36 + "," + g29 + + shapeArc(cX2, g29, g14, g15, 180, 270, false).replace("M", "L") + + shapeArc(g37, g27, g41, g42, 90, 0, false).replace("M", "L") + + shapeArc(cX1, g27, g14, g14, 0, -180, false).replace("M", "L") + + " z" + + "M" + hc + "," + g31 + + shapeArc(hc, cY3, g42, g42, 270, 630, false).replace("M", "L") + + " z"; + + result += ""; + + break; + case "actionButtonHome": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27, g28, g29, g30, g31, g32, g33; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + g11 = hc - dx2; + g12 = hc + dx2; + g13 = ss * 3 / 4; + g14 = g13 / 16; + g15 = g13 / 8; + g16 = g13 * 3 / 16; + g17 = g13 * 5 / 16; + g18 = g13 * 7 / 16; + g19 = g13 * 9 / 16; + g20 = g13 * 11 / 16; + g21 = g13 * 3 / 4; + g22 = g13 * 13 / 16; + g23 = g13 * 7 / 8; + g24 = g9 + g14; + g25 = g9 + g16; + g26 = g9 + g17; + g27 = g9 + g21; + g28 = g11 + g15; + g29 = g11 + g18; + g30 = g11 + g19; + g31 = g11 + g20; + g32 = g11 + g22; + g33 = g11 + g23; + + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + " M" + hc + "," + g9 + + " L" + g11 + "," + vc + + " L" + g28 + "," + vc + + " L" + g28 + "," + g10 + + " L" + g33 + "," + g10 + + " L" + g33 + "," + vc + + " L" + g12 + "," + vc + + " L" + g32 + "," + g26 + + " L" + g32 + "," + g24 + + " L" + g31 + "," + g24 + + " L" + g31 + "," + g25 + + " z" + + " M" + g29 + "," + g27 + + " L" + g30 + "," + g27 + + " L" + g30 + "," + g10 + + " L" + g29 + "," + g10 + + " z"; + + result += ""; + + break; + case "actionButtonInformation": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g11, g13, g14, g17, g18, g19, g20, g22, g23, g24, g25, g28, g29, g30, g31, g32, g34, g35, g37, g38; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g11 = hc - dx2; + g13 = ss * 3 / 4; + g14 = g13 / 32; + g17 = g13 * 5 / 16; + g18 = g13 * 3 / 8; + g19 = g13 * 13 / 32; + g20 = g13 * 19 / 32; + g22 = g13 * 11 / 16; + g23 = g13 * 13 / 16; + g24 = g13 * 7 / 8; + g25 = g9 + g14; + g28 = g9 + g17; + g29 = g9 + g18; + g30 = g9 + g23; + g31 = g9 + g24; + g32 = g11 + g17; + g34 = g11 + g19; + g35 = g11 + g20; + g37 = g11 + g22; + g38 = g13 * 3 / 32; + var cY1 = g9 + dx2; + var cY2 = g25 + g38; + + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + "M" + hc + "," + g9 + + shapeArc(hc, cY1, dx2, dx2, 270, 630, false).replace("M", "L") + + " z" + + "M" + hc + "," + g25 + + shapeArc(hc, cY2, g38, g38, 270, 630, false).replace("M", "L") + + "M" + g32 + "," + g28 + + " L" + g35 + "," + g28 + + " L" + g35 + "," + g30 + + " L" + g37 + "," + g30 + + " L" + g37 + "," + g31 + + " L" + g32 + "," + g31 + + " L" + g32 + "," + g30 + + " L" + g34 + "," + g30 + + " L" + g34 + "," + g29 + + " L" + g32 + "," + g29 + + " z"; + + result += ""; + + break; + case "actionButtonMovie": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27, + g28, g29, g30, g31, g32, g33, g34, g35, g36, g37, g38, g39, g40, g41, g42, g43, g44, g45, g46, g47, g48; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + g11 = hc - dx2; + g12 = hc + dx2; + g13 = ss * 3 / 4; + g14 = g13 * 1455 / 21600; + g15 = g13 * 1905 / 21600; + g16 = g13 * 2325 / 21600; + g17 = g13 * 16155 / 21600; + g18 = g13 * 17010 / 21600; + g19 = g13 * 19335 / 21600; + g20 = g13 * 19725 / 21600; + g21 = g13 * 20595 / 21600; + g22 = g13 * 5280 / 21600; + g23 = g13 * 5730 / 21600; + g24 = g13 * 6630 / 21600; + g25 = g13 * 7492 / 21600; + g26 = g13 * 9067 / 21600; + g27 = g13 * 9555 / 21600; + g28 = g13 * 13342 / 21600; + g29 = g13 * 14580 / 21600; + g30 = g13 * 15592 / 21600; + g31 = g11 + g14; + g32 = g11 + g15; + g33 = g11 + g16; + g34 = g11 + g17; + g35 = g11 + g18; + g36 = g11 + g19; + g37 = g11 + g20; + g38 = g11 + g21; + g39 = g9 + g22; + g40 = g9 + g23; + g41 = g9 + g24; + g42 = g9 + g25; + g43 = g9 + g26; + g44 = g9 + g27; + g45 = g9 + g28; + g46 = g9 + g29; + g47 = g9 + g30; + g48 = g9 + g31; + + var d = "M" + 0 + "," + h + + " L" + w + "," + h + + " L" + w + "," + 0 + + " L" + 0 + "," + 0 + + " z" + + "M" + g11 + "," + g39 + + " L" + g11 + "," + g44 + + " L" + g31 + "," + g44 + + " L" + g32 + "," + g43 + + " L" + g33 + "," + g43 + + " L" + g33 + "," + g47 + + " L" + g35 + "," + g47 + + " L" + g35 + "," + g45 + + " L" + g36 + "," + g45 + + " L" + g38 + "," + g46 + + " L" + g12 + "," + g46 + + " L" + g12 + "," + g41 + + " L" + g38 + "," + g41 + + " L" + g37 + "," + g42 + + " L" + g35 + "," + g42 + + " L" + g35 + "," + g41 + + " L" + g34 + "," + g40 + + " L" + g32 + "," + g40 + + " L" + g31 + "," + g39 + + " z"; + + result += ""; + + break; + case "actionButtonReturn": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, g27; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + g11 = hc - dx2; + g12 = hc + dx2; + g13 = ss * 3 / 4; + g14 = g13 * 7 / 8; + g15 = g13 * 3 / 4; + g16 = g13 * 5 / 8; + g17 = g13 * 3 / 8; + g18 = g13 / 4; + g19 = g9 + g15; + g20 = g9 + g16; + g21 = g9 + g18; + g22 = g11 + g14; + g23 = g11 + g15; + g24 = g11 + g16; + g25 = g11 + g17; + g26 = g11 + g18; + g27 = g13 / 8; + var cX1 = g24 - g27; + var cY2 = g19 - g27; + var cX3 = g11 + g17; + var cY4 = g10 - g17; + + var d = "M" + 0 + "," + h + + " L" + w + "," + h + + " L" + w + "," + 0 + + " L" + 0 + "," + 0 + + " z" + + " M" + g12 + "," + g21 + + " L" + g23 + "," + g9 + + " L" + hc + "," + g21 + + " L" + g24 + "," + g21 + + " L" + g24 + "," + g20 + + shapeArc(cX1, g20, g27, g27, 0, 90, false).replace("M", "L") + + " L" + g25 + "," + g19 + + shapeArc(g25, cY2, g27, g27, 90, 180, false).replace("M", "L") + + " L" + g26 + "," + g21 + + " L" + g11 + "," + g21 + + " L" + g11 + "," + g20 + + shapeArc(cX3, g20, g17, g17, 180, 90, false).replace("M", "L") + + " L" + hc + "," + g10 + + shapeArc(hc, cY4, g17, g17, 90, 0, false).replace("M", "L") + + " L" + g22 + "," + g21 + + " z"; + + result += ""; + + break; + case "actionButtonSound": + var hc = w / 2, vc = h / 2, ss = Math.min(w, h); + var dx2, g9, g10, g11, g12, g13, g14, g15, g16, g17, g18, g19, g20, g21, g22, g23, g24, g25, g26; + + dx2 = ss * 3 / 8; + g9 = vc - dx2; + g10 = vc + dx2; + g11 = hc - dx2; + g12 = hc + dx2; + g13 = ss * 3 / 4; + g14 = g13 / 8; + g15 = g13 * 5 / 16; + g16 = g13 * 5 / 8; + g17 = g13 * 11 / 16; + g18 = g13 * 3 / 4; + g19 = g13 * 7 / 8; + g20 = g9 + g14; + g21 = g9 + g15; + g22 = g9 + g17; + g23 = g9 + g19; + g24 = g11 + g15; + g25 = g11 + g16; + g26 = g11 + g18; + + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + " M" + g11 + "," + g21 + + " L" + g24 + "," + g21 + + " L" + g25 + "," + g9 + + " L" + g25 + "," + g10 + + " L" + g24 + "," + g22 + + " L" + g11 + "," + g22 + + " z" + + " M" + g26 + "," + g21 + + " L" + g12 + "," + g20 + + " M" + g26 + "," + vc + + " L" + g12 + "," + vc + + " M" + g26 + "," + g22 + + " L" + g12 + "," + g23; + + result += ""; + + break; + case "irregularSeal1": + case "irregularSeal2": + if (shapType == "irregularSeal1") { + var d = "M" + w * 10800 / 21600 + "," + h * 5800 / 21600 + + " L" + w * 14522 / 21600 + "," + 0 + + " L" + w * 14155 / 21600 + "," + h * 5325 / 21600 + + " L" + w * 18380 / 21600 + "," + h * 4457 / 21600 + + " L" + w * 16702 / 21600 + "," + h * 7315 / 21600 + + " L" + w * 21097 / 21600 + "," + h * 8137 / 21600 + + " L" + w * 17607 / 21600 + "," + h * 10475 / 21600 + + " L" + w + "," + h * 13290 / 21600 + + " L" + w * 16837 / 21600 + "," + h * 12942 / 21600 + + " L" + w * 18145 / 21600 + "," + h * 18095 / 21600 + + " L" + w * 14020 / 21600 + "," + h * 14457 / 21600 + + " L" + w * 13247 / 21600 + "," + h * 19737 / 21600 + + " L" + w * 10532 / 21600 + "," + h * 14935 / 21600 + + " L" + w * 8485 / 21600 + "," + h + + " L" + w * 7715 / 21600 + "," + h * 15627 / 21600 + + " L" + w * 4762 / 21600 + "," + h * 17617 / 21600 + + " L" + w * 5667 / 21600 + "," + h * 13937 / 21600 + + " L" + w * 135 / 21600 + "," + h * 14587 / 21600 + + " L" + w * 3722 / 21600 + "," + h * 11775 / 21600 + + " L" + 0 + "," + h * 8615 / 21600 + + " L" + w * 4627 / 21600 + "," + h * 7617 / 21600 + + " L" + w * 370 / 21600 + "," + h * 2295 / 21600 + + " L" + w * 7312 / 21600 + "," + h * 6320 / 21600 + + " L" + w * 8352 / 21600 + "," + h * 2295 / 21600 + + " z"; + } else if (shapType == "irregularSeal2") { + var d = "M" + w * 11462 / 21600 + "," + h * 4342 / 21600 + + " L" + w * 14790 / 21600 + "," + 0 + + " L" + w * 14525 / 21600 + "," + h * 5777 / 21600 + + " L" + w * 18007 / 21600 + "," + h * 3172 / 21600 + + " L" + w * 16380 / 21600 + "," + h * 6532 / 21600 + + " L" + w + "," + h * 6645 / 21600 + + " L" + w * 16985 / 21600 + "," + h * 9402 / 21600 + + " L" + w * 18270 / 21600 + "," + h * 11290 / 21600 + + " L" + w * 16380 / 21600 + "," + h * 12310 / 21600 + + " L" + w * 18877 / 21600 + "," + h * 15632 / 21600 + + " L" + w * 14640 / 21600 + "," + h * 14350 / 21600 + + " L" + w * 14942 / 21600 + "," + h * 17370 / 21600 + + " L" + w * 12180 / 21600 + "," + h * 15935 / 21600 + + " L" + w * 11612 / 21600 + "," + h * 18842 / 21600 + + " L" + w * 9872 / 21600 + "," + h * 17370 / 21600 + + " L" + w * 8700 / 21600 + "," + h * 19712 / 21600 + + " L" + w * 7527 / 21600 + "," + h * 18125 / 21600 + + " L" + w * 4917 / 21600 + "," + h + + " L" + w * 4805 / 21600 + "," + h * 18240 / 21600 + + " L" + w * 1285 / 21600 + "," + h * 17825 / 21600 + + " L" + w * 3330 / 21600 + "," + h * 15370 / 21600 + + " L" + 0 + "," + h * 12877 / 21600 + + " L" + w * 3935 / 21600 + "," + h * 11592 / 21600 + + " L" + w * 1172 / 21600 + "," + h * 8270 / 21600 + + " L" + w * 5372 / 21600 + "," + h * 7817 / 21600 + + " L" + w * 4502 / 21600 + "," + h * 3625 / 21600 + + " L" + w * 8550 / 21600 + "," + h * 6382 / 21600 + + " L" + w * 9722 / 21600 + "," + h * 1887 / 21600 + + " z"; + } + result += ""; + break; + case "flowChartTerminator": + var x1, x2, y1, cd2 = 180, cd4 = 90, c3d4 = 270; + x1 = w * 3475 / 21600; + x2 = w * 18125 / 21600; + y1 = h * 10800 / 21600; + //path attrs: w = 21600; h = 21600; + var d = "M" + x1 + "," + 0 + + " L" + x2 + "," + 0 + + shapeArc(x2, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace("M", "L") + + " L" + x1 + "," + h + + shapeArc(x1, h / 2, x1, y1, cd4, cd4 + cd2, false).replace("M", "L") + + " z"; + result += ""; + break; + case "flowChartPunchedTape": + var x1, x1, y1, y2, cd2 = 180; + x1 = w * 5 / 20; + y1 = h * 2 / 20; + y2 = h * 18 / 20; + var d = "M" + 0 + "," + y1 + + shapeArc(x1, y1, x1, y1, cd2, 0, false).replace("M", "L") + + shapeArc(w * (3 / 4), y1, x1, y1, cd2, 360, false).replace("M", "L") + + " L" + w + "," + y2 + + shapeArc(w * (3 / 4), y2, x1, y1, 0, -cd2, false).replace("M", "L") + + shapeArc(x1, y2, x1, y1, 0, cd2, false).replace("M", "L") + + " z"; + result += ""; + break; + case "flowChartOnlineStorage": + var x1, y1, c3d4 = 270, cd4 = 90; + x1 = w * 1 / 6; + y1 = h * 3 / 6; + var d = "M" + x1 + "," + 0 + + " L" + w + "," + 0 + + shapeArc(w, h / 2, x1, y1, c3d4, 90, false).replace("M", "L") + + " L" + x1 + "," + h + + shapeArc(x1, h / 2, x1, y1, cd4, 270, false).replace("M", "L") + + " z"; + result += ""; + break; + case "flowChartDisplay": + var x1, x2, y1, c3d4 = 270, cd2 = 180; + x1 = w * 1 / 6; + x2 = w * 5 / 6; + y1 = h * 3 / 6; + //path attrs: w = 6; h = 6; + var d = "M" + 0 + "," + y1 + + " L" + x1 + "," + 0 + + " L" + x2 + "," + 0 + + shapeArc(w, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace("M", "L") + + " L" + x1 + "," + h + + " z"; + result += ""; + break; + case "flowChartDelay": + var wd2 = w / 2, hd2 = h / 2, cd2 = 180, c3d4 = 270, cd4 = 90; + var d = "M" + 0 + "," + 0 + + " L" + wd2 + "," + 0 + + shapeArc(wd2, hd2, wd2, hd2, c3d4, c3d4 + cd2, false).replace("M", "L") + + " L" + 0 + "," + h + + " z"; + result += ""; + break; + case "flowChartMagneticTape": + var wd2 = w / 2, hd2 = h / 2, cd2 = 180, c3d4 = 270, cd4 = 90; + var idy, ib, ang1; + idy = hd2 * Math.sin(Math.PI / 4); + ib = hd2 + idy; + ang1 = Math.atan(h / w); + var ang1Dg = ang1 * 180 / Math.PI; + var d = "M" + wd2 + "," + h + + shapeArc(wd2, hd2, wd2, hd2, cd4, cd2, false).replace("M", "L") + + shapeArc(wd2, hd2, wd2, hd2, cd2, c3d4, false).replace("M", "L") + + shapeArc(wd2, hd2, wd2, hd2, c3d4, 360, false).replace("M", "L") + + shapeArc(wd2, hd2, wd2, hd2, 0, ang1Dg, false).replace("M", "L") + + " L" + w + "," + ib + + " L" + w + "," + h + + " z"; + result += ""; + break; + case "ellipse": + case "flowChartConnector": + case "flowChartSummingJunction": + case "flowChartOr": + result += ""; + if (shapType == "flowChartOr") { + result += " "; + result += " "; + } else if (shapType == "flowChartSummingJunction") { + var iDx, idy, il, ir, it, ib, hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2; + var angVal = Math.PI / 4; + iDx = wd2 * Math.cos(angVal); + idy = hd2 * Math.sin(angVal); + il = hc - iDx; + ir = hc + iDx; + it = vc - idy; + ib = vc + idy; + result += " "; + result += " "; + } + break; + case "roundRect": + case "round1Rect": + case "round2DiagRect": + case "round2SameRect": + case "snip1Rect": + case "snip2DiagRect": + case "snip2SameRect": + case "flowChartAlternateProcess": + case "flowChartPunchedCard": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val;// = 0.33334; + var sAdj2, sAdj2_val;// = 0.33334; + var shpTyp, adjTyp; + if (shapAdjst_ary !== undefined && shapAdjst_ary.constructor === Array) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = parseInt(sAdj1.substr(4)) / 50000; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj2_val = parseInt(sAdj2.substr(4)) / 50000; + } + } + } else if (shapAdjst_ary !== undefined && shapAdjst_ary.constructor !== Array) { + var sAdj = getTextByPathList(shapAdjst_ary, ["attrs", "fmla"]); + sAdj1_val = parseInt(sAdj.substr(4)) / 50000; + sAdj2_val = 0; + } + //console.log("shapType: ",shapType,",node: ",node ) + var tranglRott = ""; + switch (shapType) { + case "roundRect": + case "flowChartAlternateProcess": + shpTyp = "round"; + adjTyp = "cornrAll"; + if (sAdj1_val === undefined) sAdj1_val = 0.33334; + sAdj2_val = 0; + break; + case "round1Rect": + shpTyp = "round"; + adjTyp = "cornr1"; + if (sAdj1_val === undefined) sAdj1_val = 0.33334; + sAdj2_val = 0; + break; + case "round2DiagRect": + shpTyp = "round"; + adjTyp = "diag"; + if (sAdj1_val === undefined) sAdj1_val = 0.33334; + if (sAdj2_val === undefined) sAdj2_val = 0; + break; + case "round2SameRect": + shpTyp = "round"; + adjTyp = "cornr2"; + if (sAdj1_val === undefined) sAdj1_val = 0.33334; + if (sAdj2_val === undefined) sAdj2_val = 0; + break; + case "snip1Rect": + case "flowChartPunchedCard": + shpTyp = "snip"; + adjTyp = "cornr1"; + if (sAdj1_val === undefined) sAdj1_val = 0.33334; + sAdj2_val = 0; + if (shapType == "flowChartPunchedCard") { + tranglRott = "transform='translate(" + w + ",0) scale(-1,1)'"; + } + break; + case "snip2DiagRect": + shpTyp = "snip"; + adjTyp = "diag"; + if (sAdj1_val === undefined) sAdj1_val = 0; + if (sAdj2_val === undefined) sAdj2_val = 0.33334; + break; + case "snip2SameRect": + shpTyp = "snip"; + adjTyp = "cornr2"; + if (sAdj1_val === undefined) sAdj1_val = 0.33334; + if (sAdj2_val === undefined) sAdj2_val = 0; + break; + } + var d_val = shapeSnipRoundRect(w, h, sAdj1_val, sAdj2_val, shpTyp, adjTyp); + result += ""; + break; + case "snipRoundRect": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 0.33334; + var sAdj2, sAdj2_val = 0.33334; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = parseInt(sAdj1.substr(4)) / 50000; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj2_val = parseInt(sAdj2.substr(4)) / 50000; + } + } + } + var d_val = "M0," + h + " L" + w + "," + h + " L" + w + "," + (h / 2) * sAdj2_val + + " L" + (w / 2 + (w / 2) * (1 - sAdj2_val)) + ",0 L" + (w / 2) * sAdj1_val + ",0 Q0,0 0," + (h / 2) * sAdj1_val + " z"; + + result += ""; + break; + case "bentConnector2": + var d = ""; + // if (isFlipV) { + // d = "M 0 " + w + " L " + h + " " + w + " L " + h + " 0"; + // } else { + d = "M " + w + " 0 L " + w + " " + h + " L 0 " + h; + //} + result += ""; + break; + case "triangle": + case "flowChartExtract": + case "flowChartMerge": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var shapAdjst_val = 0.5; + if (shapAdjst !== undefined) { + shapAdjst_val = parseInt(shapAdjst.substr(4)) * slideFactor; + //console.log("w: "+w+"\nh: "+h+"\nshapAdjst: "+shapAdjst+"\nshapAdjst_val: "+shapAdjst_val); + } + var tranglRott = ""; + if (shapType == "flowChartMerge") { + tranglRott = "transform='rotate(180 " + w / 2 + "," + h / 2 + ")'"; + } + result += " "; + break; + case "diamond": + case "flowChartDecision": + case "flowChartSort": + result += " "; + if (shapType == "flowChartSort") { + result += " "; + } + break; + case "trapezoid": + case "flowChartManualOperation": + case "flowChartManualInput": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adjst_val = 0.2; + var max_adj_const = 0.7407; + if (shapAdjst !== undefined) { + var adjst = parseInt(shapAdjst.substr(4)) * slideFactor; + adjst_val = (adjst * 0.5) / max_adj_const; + // console.log("w: "+w+"\nh: "+h+"\nshapAdjst: "+shapAdjst+"\nadjst_val: "+adjst_val); + } + var cnstVal = 0; + var tranglRott = ""; + if (shapType == "flowChartManualOperation") { + tranglRott = "transform='rotate(180 " + w / 2 + "," + h / 2 + ")'"; + } + if (shapType == "flowChartManualInput") { + adjst_val = 0; + cnstVal = h / 5; + } + result += " "; + break; + case "parallelogram": + case "flowChartInputOutput": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adjst_val = 0.25; + var max_adj_const; + if (w > h) { + max_adj_const = w / h; + } else { + max_adj_const = h / w; + } + if (shapAdjst !== undefined) { + var adjst = parseInt(shapAdjst.substr(4)) / 100000; + adjst_val = adjst / max_adj_const; + //console.log("w: "+w+"\nh: "+h+"\nadjst: "+adjst_val+"\nmax_adj_const: "+max_adj_const); + } + result += " "; + break; + + break; + case "pentagon": + result += " "; + break; + case "hexagon": + case "flowChartPreparation": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 25000 * slideFactor; + var vf = 115470 * slideFactor;; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var angVal1 = 60 * Math.PI / 180; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var maxAdj, a, shd2, x1, x2, dy1, y1, y2, vc = h / 2, hd2 = h / 2; + var ss = Math.min(w, h); + maxAdj = cnstVal1 * w / ss; + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + shd2 = hd2 * vf / cnstVal2; + x1 = ss * a / cnstVal2; + x2 = w - x1; + dy1 = shd2 * Math.sin(angVal1); + y1 = vc - dy1; + y2 = vc + dy1; + + var d = "M" + 0 + "," + vc + + " L" + x1 + "," + y1 + + " L" + x2 + "," + y1 + + " L" + w + "," + vc + + " L" + x2 + "," + y2 + + " L" + x1 + "," + y2 + + " z"; + + result += ""; + break; + case "heptagon": + result += " "; + break; + case "octagon": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj1 = 0.25; + if (shapAdjst !== undefined) { + adj1 = parseInt(shapAdjst.substr(4)) / 100000; + + } + var adj2 = (1 - adj1); + //console.log("adj1: "+adj1+"\nadj2: "+adj2); + result += " "; + + break; + case "decagon": + result += " "; + break; + case "dodecagon": + result += " "; + break; + case "star4": + var a, iwd2, ihd2, sdx, sdy, sx1, sx2, sy1, sy2, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2; + var adj = 19098 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star4 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + var name = shapAdjst["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor; + //min = 0 + //max = 50000 + } + } + a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj; + iwd2 = wd2 * a / cnstVal1; + ihd2 = hd2 * a / cnstVal1; + sdx = iwd2 * Math.cos(0.7853981634); //cd8 = 2700000; (45°) => + sdy = ihd2 * Math.sin(0.7853981634); + sx1 = hc - sdx; + sx2 = hc + sdx; + sy1 = vc - sdy; + sy2 = vc + sdy; + yAdj = vc - ihd2; + + var d = "M0" + "," + vc + + " L" + sx1 + "," + sy1 + + " L" + hc + ",0" + + " L" + sx2 + "," + sy1 + + " L" + w + "," + vc + + " L" + sx2 + "," + sy2 + + " L" + hc + "," + h + + " L" + sx1 + "," + sy2 + + " z"; + + result += ""; + break; + case "star5": + var a, swd2, shd2, svc, dx1, dx2, dy1, dy2, x1, x2, x3, x4, y1, y2, iwd2, ihd2, sdx1, sdx2, sdy1, sdy2, sx1, sx2, sx3, sx4, sy1, sy2, sy3, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2; + var adj = 19098 * slideFactor; + var hf = 105146 * slideFactor; + var vf = 110557 * slideFactor; + var maxAdj = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + //var radians = angle * (Math.PI / 180); + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star5 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + Object.keys(shapAdjst).forEach(function (key) { + var name = shapAdjst[key]["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + //min = 0 + //max = 50000 + } else if (name == "hf") { + hf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + } else if (name == "vf") { + vf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + } + }) + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + swd2 = wd2 * hf / cnstVal1; + shd2 = hd2 * vf / cnstVal1; + svc = vc * vf / cnstVal1; + dx1 = swd2 * Math.cos(0.31415926536); // 1080000 + dx2 = swd2 * Math.cos(5.3407075111); // 18360000 + dy1 = shd2 * Math.sin(0.31415926536); //1080000 + dy2 = shd2 * Math.sin(5.3407075111);// 18360000 + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc + dx2; + x4 = hc + dx1; + y1 = svc - dy1; + y2 = svc - dy2; + iwd2 = swd2 * a / maxAdj; + ihd2 = shd2 * a / maxAdj; + sdx1 = iwd2 * Math.cos(5.9690260418); // 20520000 + sdx2 = iwd2 * Math.cos(0.94247779608); // 3240000 + sdy1 = ihd2 * Math.sin(0.94247779608); // 3240000 + sdy2 = ihd2 * Math.sin(5.9690260418); // 20520000 + sx1 = hc - sdx1; + sx2 = hc - sdx2; + sx3 = hc + sdx2; + sx4 = hc + sdx1; + sy1 = svc - sdy1; + sy2 = svc - sdy2; + sy3 = svc + ihd2; + yAdj = svc - ihd2; + + var d = "M" + x1 + "," + y1 + + " L" + sx2 + "," + sy1 + + " L" + hc + "," + 0 + + " L" + sx3 + "," + sy1 + + " L" + x4 + "," + y1 + + " L" + sx4 + "," + sy2 + + " L" + x3 + "," + y2 + + " L" + hc + "," + sy3 + + " L" + x2 + "," + y2 + + " L" + sx1 + "," + sy2 + + " z"; + + + result += ""; + break; + case "star6": + var a, swd2, dx1, x1, x2, y2, iwd2, ihd2, sdx2, sx1, sx2, sx3, sx4, sdy1, sy1, sy2, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2, hd4 = h / 4; + var adj = 28868 * slideFactor; + var hf = 115470 * slideFactor; + var maxAdj = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star5 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + Object.keys(shapAdjst).forEach(function (key) { + var name = shapAdjst[key]["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + //min = 0 + //max = 50000 + } else if (name == "hf") { + hf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + } + }) + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + swd2 = wd2 * hf / cnstVal1; + dx1 = swd2 * Math.cos(0.5235987756); //1800000->30 ->0.5235987756 + x1 = hc - dx1; + x2 = hc + dx1; + y2 = vc + hd4; + iwd2 = swd2 * a / maxAdj; + ihd2 = hd2 * a / maxAdj; + sdx2 = iwd2 / 2; + sx1 = hc - iwd2; + sx2 = hc - sdx2; + sx3 = hc + sdx2; + sx4 = hc + iwd2; + sdy1 = ihd2 * Math.sin(1.0471975512); //3600000->60->1.0471975512 + sy1 = vc - sdy1; + sy2 = vc + sdy1; + yAdj = vc - ihd2; + + var d = "M" + x1 + "," + hd4 + + " L" + sx2 + "," + sy1 + + " L" + hc + ",0" + + " L" + sx3 + "," + sy1 + + " L" + x2 + "," + hd4 + + " L" + sx4 + "," + vc + + " L" + x2 + "," + y2 + + " L" + sx3 + "," + sy2 + + " L" + hc + "," + h + + " L" + sx2 + "," + sy2 + + " L" + x1 + "," + y2 + + " L" + sx1 + "," + vc + + " z"; + + + result += ""; + break; + case "star7": + var a, swd2, shd2, svc, dx1, dx2, dx3, dy1, dy2, dy3, x1, x2, x3, x4, x5, x6, y1, y2, y3, + iwd2, ihd2, sdx1, sdx2, sdx3, sx1, sx2, sx3, sx4, sx5, sx6, sdy1, sdy2, sdy3, sy1, sy2, sy3, sy4, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2; + var adj = 34601 * slideFactor; + var hf = 102572 * slideFactor; + var vf = 105210 * slideFactor; + var maxAdj = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star5 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + Object.keys(shapAdjst).forEach(function (key) { + var name = shapAdjst[key]["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + //min = 0 + //max = 50000 + } else if (name == "hf") { + hf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + } else if (name == "vf") { + vf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + } + }) + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + swd2 = wd2 * hf / cnstVal1; + shd2 = hd2 * vf / cnstVal1; + svc = vc * vf / cnstVal1; + dx1 = swd2 * 97493 / 100000; + dx2 = swd2 * 78183 / 100000; + dx3 = swd2 * 43388 / 100000; + dy1 = shd2 * 62349 / 100000; + dy2 = shd2 * 22252 / 100000; + dy3 = shd2 * 90097 / 100000; + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc - dx3; + x4 = hc + dx3; + x5 = hc + dx2; + x6 = hc + dx1; + y1 = svc - dy1; + y2 = svc + dy2; + y3 = svc + dy3; + iwd2 = swd2 * a / maxAdj; + ihd2 = shd2 * a / maxAdj; + sdx1 = iwd2 * 97493 / 100000; + sdx2 = iwd2 * 78183 / 100000; + sdx3 = iwd2 * 43388 / 100000; + sx1 = hc - sdx1; + sx2 = hc - sdx2; + sx3 = hc - sdx3; + sx4 = hc + sdx3; + sx5 = hc + sdx2; + sx6 = hc + sdx1; + sdy1 = ihd2 * 90097 / 100000; + sdy2 = ihd2 * 22252 / 100000; + sdy3 = ihd2 * 62349 / 100000; + sy1 = svc - sdy1; + sy2 = svc - sdy2; + sy3 = svc + sdy3; + sy4 = svc + ihd2; + yAdj = svc - ihd2; + + var d = "M" + x1 + "," + y2 + + " L" + sx1 + "," + sy2 + + " L" + x2 + "," + y1 + + " L" + sx3 + "," + sy1 + + " L" + hc + ",0" + + " L" + sx4 + "," + sy1 + + " L" + x5 + "," + y1 + + " L" + sx6 + "," + sy2 + + " L" + x6 + "," + y2 + + " L" + sx5 + "," + sy3 + + " L" + x4 + "," + y3 + + " L" + hc + "," + sy4 + + " L" + x3 + "," + y3 + + " L" + sx2 + "," + sy3 + + " z"; + + + result += ""; + break; + case "star8": + var a, dx1, x1, x2, dy1, y1, y2, iwd2, ihd2, sdx1, sdx2, sdy1, sdy2, sx1, sx2, sx3, sx4, sy1, sy2, sy3, sy4, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2; + var adj = 37500 * slideFactor; + var maxAdj = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star4 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + var name = shapAdjst["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor; + //min = 0 + //max = 50000 + } + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + dx1 = wd2 * Math.cos(0.7853981634); //2700000 + x1 = hc - dx1; + x2 = hc + dx1; + dy1 = hd2 * Math.sin(0.7853981634); //2700000 + y1 = vc - dy1; + y2 = vc + dy1; + iwd2 = wd2 * a / maxAdj; + ihd2 = hd2 * a / maxAdj; + sdx1 = iwd2 * 92388 / 100000; + sdx2 = iwd2 * 38268 / 100000; + sdy1 = ihd2 * 92388 / 100000; + sdy2 = ihd2 * 38268 / 100000; + sx1 = hc - sdx1; + sx2 = hc - sdx2; + sx3 = hc + sdx2; + sx4 = hc + sdx1; + sy1 = vc - sdy1; + sy2 = vc - sdy2; + sy3 = vc + sdy2; + sy4 = vc + sdy1; + yAdj = vc - ihd2; + var d = "M0" + "," + vc + + " L" + sx1 + "," + sy2 + + " L" + x1 + "," + y1 + + " L" + sx2 + "," + sy1 + + " L" + hc + ",0" + + " L" + sx3 + "," + sy1 + + " L" + x2 + "," + y1 + + " L" + sx4 + "," + sy2 + + " L" + w + "," + vc + + " L" + sx4 + "," + sy3 + + " L" + x2 + "," + y2 + + " L" + sx3 + "," + sy4 + + " L" + hc + "," + h + + " L" + sx2 + "," + sy4 + + " L" + x1 + "," + y2 + + " L" + sx1 + "," + sy3 + + " z"; + result += ""; + break; + + case "star10": + var a, swd2, dx1, dx2, x1, x2, x3, x4, dy1, dy2, y1, y2, y3, y4, iwd2, ihd2, + sdx1, sdx2, sdy1, sdy2, sx1, sx2, sx3, sx4, sx5, sx6, sy1, sy2, sy3, sy4, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2; + var adj = 42533 * slideFactor; + var hf = 105146 * slideFactor; + var maxAdj = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star5 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + Object.keys(shapAdjst).forEach(function (key) { + var name = shapAdjst[key]["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + //min = 0 + //max = 50000 + } else if (name == "hf") { + hf = parseInt(shapAdjst[key]["attrs"]["fmla"].substr(4)) * slideFactor; + } + }) + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + swd2 = wd2 * hf / cnstVal1; + dx1 = swd2 * 95106 / 100000; + dx2 = swd2 * 58779 / 100000; + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc + dx2; + x4 = hc + dx1; + dy1 = hd2 * 80902 / 100000; + dy2 = hd2 * 30902 / 100000; + y1 = vc - dy1; + y2 = vc - dy2; + y3 = vc + dy2; + y4 = vc + dy1; + iwd2 = swd2 * a / maxAdj; + ihd2 = hd2 * a / maxAdj; + sdx1 = iwd2 * 80902 / 100000; + sdx2 = iwd2 * 30902 / 100000; + sdy1 = ihd2 * 95106 / 100000; + sdy2 = ihd2 * 58779 / 100000; + sx1 = hc - iwd2; + sx2 = hc - sdx1; + sx3 = hc - sdx2; + sx4 = hc + sdx2; + sx5 = hc + sdx1; + sx6 = hc + iwd2; + sy1 = vc - sdy1; + sy2 = vc - sdy2; + sy3 = vc + sdy2; + sy4 = vc + sdy1; + yAdj = vc - ihd2; + var d = "M" + x1 + "," + y2 + + " L" + sx2 + "," + sy2 + + " L" + x2 + "," + y1 + + " L" + sx3 + "," + sy1 + + " L" + hc + ",0" + + " L" + sx4 + "," + sy1 + + " L" + x3 + "," + y1 + + " L" + sx5 + "," + sy2 + + " L" + x4 + "," + y2 + + " L" + sx6 + "," + vc + + " L" + x4 + "," + y3 + + " L" + sx5 + "," + sy3 + + " L" + x3 + "," + y4 + + " L" + sx4 + "," + sy4 + + " L" + hc + "," + h + + " L" + sx3 + "," + sy4 + + " L" + x2 + "," + y4 + + " L" + sx2 + "," + sy3 + + " L" + x1 + "," + y3 + + " L" + sx1 + "," + vc + + " z"; + result += ""; + break; + case "star12": + var a, dx1, dy1, x1, x3, x4, y1, y3, y4, iwd2, ihd2, sdx1, sdx2, sdx3, sdy1, + sdy2, sdy3, sx1, sx2, sx3, sx4, sx5, sx6, sy1, sy2, sy3, sy4, sy5, sy6, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2, hd4 = h / 4, wd4 = w / 4; + var adj = 37500 * slideFactor; + var maxAdj = 50000 * slideFactor; + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star4 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + var name = shapAdjst["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor; + //min = 0 + //max = 50000 + } + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + dx1 = wd2 * Math.cos(0.5235987756); + dy1 = hd2 * Math.sin(1.0471975512); + x1 = hc - dx1; + x3 = w * 3 / 4; + x4 = hc + dx1; + y1 = vc - dy1; + y3 = h * 3 / 4; + y4 = vc + dy1; + iwd2 = wd2 * a / maxAdj; + ihd2 = hd2 * a / maxAdj; + sdx1 = iwd2 * Math.cos(0.2617993878); //900000->15 + sdx2 = iwd2 * Math.cos(0.7853981634); + sdx3 = iwd2 * Math.cos(1.308996939); //4500000->75 + sdy1 = ihd2 * Math.sin(1.308996939); + sdy2 = ihd2 * Math.sin(0.7853981634); + sdy3 = ihd2 * Math.sin(0.2617993878); + sx1 = hc - sdx1; + sx2 = hc - sdx2; + sx3 = hc - sdx3; + sx4 = hc + sdx3; + sx5 = hc + sdx2; + sx6 = hc + sdx1; + sy1 = vc - sdy1; + sy2 = vc - sdy2; + sy3 = vc - sdy3; + sy4 = vc + sdy3; + sy5 = vc + sdy2; + sy6 = vc + sdy1; + yAdj = vc - ihd2; + var d = "M0" + "," + vc + + " L" + sx1 + "," + sy3 + + " L" + x1 + "," + hd4 + + " L" + sx2 + "," + sy2 + + " L" + wd4 + "," + y1 + + " L" + sx3 + "," + sy1 + + " L" + hc + ",0" + + " L" + sx4 + "," + sy1 + + " L" + x3 + "," + y1 + + " L" + sx5 + "," + sy2 + + " L" + x4 + "," + hd4 + + " L" + sx6 + "," + sy3 + + " L" + w + "," + vc + + " L" + sx6 + "," + sy4 + + " L" + x4 + "," + y3 + + " L" + sx5 + "," + sy5 + + " L" + x3 + "," + y4 + + " L" + sx4 + "," + sy6 + + " L" + hc + "," + h + + " L" + sx3 + "," + sy6 + + " L" + wd4 + "," + y4 + + " L" + sx2 + "," + sy5 + + " L" + x1 + "," + y3 + + " L" + sx1 + "," + sy4 + + " z"; + result += ""; + break; + case "star16": + var a, dx1, dx2, dx3, dy1, dy2, dy3, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, + iwd2, ihd2, sdx1, sdx2, sdx3, sdx4, sdy1, sdy2, sdy3, sdy4, sx1, sx2, sx3, sx4, + sx5, sx6, sx7, sx8, sy1, sy2, sy3, sy4, sy5, sy6, sy7, sy8, iDx, idy, il, it, ir, ib, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2; + var adj = 37500 * slideFactor; + var maxAdj = 50000 * slideFactor; + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star4 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + var name = shapAdjst["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor; + //min = 0 + //max = 50000 + } + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + dx1 = wd2 * 92388 / 100000; + dx2 = wd2 * 70711 / 100000; + dx3 = wd2 * 38268 / 100000; + dy1 = hd2 * 92388 / 100000; + dy2 = hd2 * 70711 / 100000; + dy3 = hd2 * 38268 / 100000; + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc - dx3; + x4 = hc + dx3; + x5 = hc + dx2; + x6 = hc + dx1; + y1 = vc - dy1; + y2 = vc - dy2; + y3 = vc - dy3; + y4 = vc + dy3; + y5 = vc + dy2; + y6 = vc + dy1; + iwd2 = wd2 * a / maxAdj; + ihd2 = hd2 * a / maxAdj; + sdx1 = iwd2 * 98079 / 100000; + sdx2 = iwd2 * 83147 / 100000; + sdx3 = iwd2 * 55557 / 100000; + sdx4 = iwd2 * 19509 / 100000; + sdy1 = ihd2 * 98079 / 100000; + sdy2 = ihd2 * 83147 / 100000; + sdy3 = ihd2 * 55557 / 100000; + sdy4 = ihd2 * 19509 / 100000; + sx1 = hc - sdx1; + sx2 = hc - sdx2; + sx3 = hc - sdx3; + sx4 = hc - sdx4; + sx5 = hc + sdx4; + sx6 = hc + sdx3; + sx7 = hc + sdx2; + sx8 = hc + sdx1; + sy1 = vc - sdy1; + sy2 = vc - sdy2; + sy3 = vc - sdy3; + sy4 = vc - sdy4; + sy5 = vc + sdy4; + sy6 = vc + sdy3; + sy7 = vc + sdy2; + sy8 = vc + sdy1; + iDx = iwd2 * Math.cos(0.7853981634); + idy = ihd2 * Math.sin(0.7853981634); + il = hc - iDx; + it = vc - idy; + ir = hc + iDx; + ib = vc + idy; + yAdj = vc - ihd2; + var d = "M0" + "," + vc + + " L" + sx1 + "," + sy4 + + " L" + x1 + "," + y3 + + " L" + sx2 + "," + sy3 + + " L" + x2 + "," + y2 + + " L" + sx3 + "," + sy2 + + " L" + x3 + "," + y1 + + " L" + sx4 + "," + sy1 + + " L" + hc + ",0" + + " L" + sx5 + "," + sy1 + + " L" + x4 + "," + y1 + + " L" + sx6 + "," + sy2 + + " L" + x5 + "," + y2 + + " L" + sx7 + "," + sy3 + + " L" + x6 + "," + y3 + + " L" + sx8 + "," + sy4 + + " L" + w + "," + vc + + " L" + sx8 + "," + sy5 + + " L" + x6 + "," + y4 + + " L" + sx7 + "," + sy6 + + " L" + x5 + "," + y5 + + " L" + sx6 + "," + sy7 + + " L" + x4 + "," + y6 + + " L" + sx5 + "," + sy8 + + " L" + hc + "," + h + + " L" + sx4 + "," + sy8 + + " L" + x3 + "," + y6 + + " L" + sx3 + "," + sy7 + + " L" + x2 + "," + y5 + + " L" + sx2 + "," + sy6 + + " L" + x1 + "," + y4 + + " L" + sx1 + "," + sy5 + + " z"; + result += ""; + break; + case "star24": + var a, dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4, dy5, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, + y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, iwd2, ihd2, sdx1, sdx2, sdx3, sdx4, sdx5, sdx6, sdy1, + sdy2, sdy3, sdy4, sdy5, sdy6, sx1, sx2, sx3, sx4, sx5, sx6, sx7, sx8, sx9, sx10, sx11, sx12, + sy1, sy2, sy3, sy4, sy5, sy6, sy7, sy8, sy9, sy10, sy11, sy12, iDx, idy, il, it, ir, ib, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2, hd4 = h / 4, wd4 = w / 4; + var adj = 37500 * slideFactor; + var maxAdj = 50000 * slideFactor; + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star4 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + var name = shapAdjst["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor; + } + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + dx1 = wd2 * Math.cos(0.2617993878); + dx2 = wd2 * Math.cos(0.5235987756); + dx3 = wd2 * Math.cos(0.7853981634); + dx4 = wd4 + dx5 = wd2 * Math.cos(1.308996939); + dy1 = hd2 * Math.sin(1.308996939); + dy2 = hd2 * Math.sin(1.0471975512); + dy3 = hd2 * Math.sin(0.7853981634); + dy4 = hd4 + dy5 = hd2 * Math.sin(0.2617993878); + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc - dx3; + x4 = hc - dx4; + x5 = hc - dx5; + x6 = hc + dx5; + x7 = hc + dx4; + x8 = hc + dx3; + x9 = hc + dx2; + x10 = hc + dx1; + y1 = vc - dy1; + y2 = vc - dy2; + y3 = vc - dy3; + y4 = vc - dy4; + y5 = vc - dy5; + y6 = vc + dy5; + y7 = vc + dy4; + y8 = vc + dy3; + y9 = vc + dy2; + y10 = vc + dy1; + iwd2 = wd2 * a / maxAdj; + ihd2 = hd2 * a / maxAdj; + sdx1 = iwd2 * 99144 / 100000; + sdx2 = iwd2 * 92388 / 100000; + sdx3 = iwd2 * 79335 / 100000; + sdx4 = iwd2 * 60876 / 100000; + sdx5 = iwd2 * 38268 / 100000; + sdx6 = iwd2 * 13053 / 100000; + sdy1 = ihd2 * 99144 / 100000; + sdy2 = ihd2 * 92388 / 100000; + sdy3 = ihd2 * 79335 / 100000; + sdy4 = ihd2 * 60876 / 100000; + sdy5 = ihd2 * 38268 / 100000; + sdy6 = ihd2 * 13053 / 100000; + sx1 = hc - sdx1; + sx2 = hc - sdx2; + sx3 = hc - sdx3; + sx4 = hc - sdx4; + sx5 = hc - sdx5; + sx6 = hc - sdx6; + sx7 = hc + sdx6; + sx8 = hc + sdx5; + sx9 = hc + sdx4; + sx10 = hc + sdx3; + sx11 = hc + sdx2; + sx12 = hc + sdx1; + sy1 = vc - sdy1; + sy2 = vc - sdy2; + sy3 = vc - sdy3; + sy4 = vc - sdy4; + sy5 = vc - sdy5; + sy6 = vc - sdy6; + sy7 = vc + sdy6; + sy8 = vc + sdy5; + sy9 = vc + sdy4; + sy10 = vc + sdy3; + sy11 = vc + sdy2; + sy12 = vc + sdy1; + iDx = iwd2 * Math.cos(0.7853981634); + idy = ihd2 * Math.sin(0.7853981634); + il = hc - iDx; + it = vc - idy; + ir = hc + iDx; + ib = vc + idy; + yAdj = vc - ihd2; + var d = "M0" + "," + vc + + " L" + sx1 + "," + sy6 + + " L" + x1 + "," + y5 + + " L" + sx2 + "," + sy5 + + " L" + x2 + "," + y4 + + " L" + sx3 + "," + sy4 + + " L" + x3 + "," + y3 + + " L" + sx4 + "," + sy3 + + " L" + x4 + "," + y2 + + " L" + sx5 + "," + sy2 + + " L" + x5 + "," + y1 + + " L" + sx6 + "," + sy1 + + " L" + hc + "," + 0 + + " L" + sx7 + "," + sy1 + + " L" + x6 + "," + y1 + + " L" + sx8 + "," + sy2 + + " L" + x7 + "," + y2 + + " L" + sx9 + "," + sy3 + + " L" + x8 + "," + y3 + + " L" + sx10 + "," + sy4 + + " L" + x9 + "," + y4 + + " L" + sx11 + "," + sy5 + + " L" + x10 + "," + y5 + + " L" + sx12 + "," + sy6 + + " L" + w + "," + vc + + " L" + sx12 + "," + sy7 + + " L" + x10 + "," + y6 + + " L" + sx11 + "," + sy8 + + " L" + x9 + "," + y7 + + " L" + sx10 + "," + sy9 + + " L" + x8 + "," + y8 + + " L" + sx9 + "," + sy10 + + " L" + x7 + "," + y9 + + " L" + sx8 + "," + sy11 + + " L" + x6 + "," + y10 + + " L" + sx7 + "," + sy12 + + " L" + hc + "," + h + + " L" + sx6 + "," + sy12 + + " L" + x5 + "," + y10 + + " L" + sx5 + "," + sy11 + + " L" + x4 + "," + y9 + + " L" + sx4 + "," + sy10 + + " L" + x3 + "," + y8 + + " L" + sx3 + "," + sy9 + + " L" + x2 + "," + y7 + + " L" + sx2 + "," + sy8 + + " L" + x1 + "," + y6 + + " L" + sx1 + "," + sy7 + + " z"; + result += ""; + break; + case "star32": + var a, dx1, dx2, dx3, dx4, dx5, dx6, dx7, dy1, dy2, dy3, dy4, dy5, dy6, dy7, x1, x2, x3, x4, x5, x6, + x7, x8, x9, x10, x11, x12, x13, x14, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13, y14, + iwd2, ihd2, sdx1, sdx2, sdx3, sdx4, sdx5, sdx6, sdx7, sdx8, sdy1, sdy2, sdy3, sdy4, sdy5, sdy6, sdy7, + sdy8, sx1, sx2, sx3, sx4, sx5, sx6, sx7, sx8, sx9, sx10, sx11, sx12, sx13, sx14, sx15, sx16, sy1, sy2, + sy3, sy4, sy5, sy6, sy7, sy8, sy9, sy10, sy11, sy12, sy13, sy14, sy15, sy16, iDx, idy, il, it, ir, ib, yAdj; + var hc = w / 2, vc = h / 2, wd2 = w / 2, hd2 = h / 2, hd4 = h / 4, wd4 = w / 4; + var adj = 37500 * slideFactor; + var maxAdj = 50000 * slideFactor; + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]);//[0]["attrs"]["fmla"]; + //console.log("star4 node: ", node, "shapAdjst:", shapAdjst) + if (shapAdjst !== undefined) { + var name = shapAdjst["attrs"]["name"]; + if (name == "adj") { + adj = parseInt(shapAdjst["attrs"]["fmla"].substr(4)) * slideFactor; + } + } + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + dx1 = wd2 * 98079 / 100000; + dx2 = wd2 * 92388 / 100000; + dx3 = wd2 * 83147 / 100000; + dx4 = wd2 * Math.cos(0.7853981634); + dx5 = wd2 * 55557 / 100000; + dx6 = wd2 * 38268 / 100000; + dx7 = wd2 * 19509 / 100000; + dy1 = hd2 * 98079 / 100000; + dy2 = hd2 * 92388 / 100000; + dy3 = hd2 * 83147 / 100000; + dy4 = hd2 * Math.sin(0.7853981634); + dy5 = hd2 * 55557 / 100000; + dy6 = hd2 * 38268 / 100000; + dy7 = hd2 * 19509 / 100000; + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc - dx3; + x4 = hc - dx4; + x5 = hc - dx5; + x6 = hc - dx6; + x7 = hc - dx7; + x8 = hc + dx7; + x9 = hc + dx6; + x10 = hc + dx5; + x11 = hc + dx4; + x12 = hc + dx3; + x13 = hc + dx2; + x14 = hc + dx1; + y1 = vc - dy1; + y2 = vc - dy2; + y3 = vc - dy3; + y4 = vc - dy4; + y5 = vc - dy5; + y6 = vc - dy6; + y7 = vc - dy7; + y8 = vc + dy7; + y9 = vc + dy6; + y10 = vc + dy5; + y11 = vc + dy4; + y12 = vc + dy3; + y13 = vc + dy2; + y14 = vc + dy1; + iwd2 = wd2 * a / maxAdj; + ihd2 = hd2 * a / maxAdj; + sdx1 = iwd2 * 99518 / 100000; + sdx2 = iwd2 * 95694 / 100000; + sdx3 = iwd2 * 88192 / 100000; + sdx4 = iwd2 * 77301 / 100000; + sdx5 = iwd2 * 63439 / 100000; + sdx6 = iwd2 * 47140 / 100000; + sdx7 = iwd2 * 29028 / 100000; + sdx8 = iwd2 * 9802 / 100000; + sdy1 = ihd2 * 99518 / 100000; + sdy2 = ihd2 * 95694 / 100000; + sdy3 = ihd2 * 88192 / 100000; + sdy4 = ihd2 * 77301 / 100000; + sdy5 = ihd2 * 63439 / 100000; + sdy6 = ihd2 * 47140 / 100000; + sdy7 = ihd2 * 29028 / 100000; + sdy8 = ihd2 * 9802 / 100000; + sx1 = hc - sdx1; + sx2 = hc - sdx2; + sx3 = hc - sdx3; + sx4 = hc - sdx4; + sx5 = hc - sdx5; + sx6 = hc - sdx6; + sx7 = hc - sdx7; + sx8 = hc - sdx8; + sx9 = hc + sdx8; + sx10 = hc + sdx7; + sx11 = hc + sdx6; + sx12 = hc + sdx5; + sx13 = hc + sdx4; + sx14 = hc + sdx3; + sx15 = hc + sdx2; + sx16 = hc + sdx1; + sy1 = vc - sdy1; + sy2 = vc - sdy2; + sy3 = vc - sdy3; + sy4 = vc - sdy4; + sy5 = vc - sdy5; + sy6 = vc - sdy6; + sy7 = vc - sdy7; + sy8 = vc - sdy8; + sy9 = vc + sdy8; + sy10 = vc + sdy7; + sy11 = vc + sdy6; + sy12 = vc + sdy5; + sy13 = vc + sdy4; + sy14 = vc + sdy3; + sy15 = vc + sdy2; + sy16 = vc + sdy1; + iDx = iwd2 * Math.cos(0.7853981634); + idy = ihd2 * Math.sin(0.7853981634); + il = hc - iDx; + it = vc - idy; + ir = hc + iDx; + ib = vc + idy; + yAdj = vc - ihd2; + var d = "M0" + "," + vc + + " L" + sx1 + "," + sy8 + + " L" + x1 + "," + y7 + + " L" + sx2 + "," + sy7 + + " L" + x2 + "," + y6 + + " L" + sx3 + "," + sy6 + + " L" + x3 + "," + y5 + + " L" + sx4 + "," + sy5 + + " L" + x4 + "," + y4 + + " L" + sx5 + "," + sy4 + + " L" + x5 + "," + y3 + + " L" + sx6 + "," + sy3 + + " L" + x6 + "," + y2 + + " L" + sx7 + "," + sy2 + + " L" + x7 + "," + y1 + + " L" + sx8 + "," + sy1 + + " L" + hc + "," + 0 + + " L" + sx9 + "," + sy1 + + " L" + x8 + "," + y1 + + " L" + sx10 + "," + sy2 + + " L" + x9 + "," + y2 + + " L" + sx11 + "," + sy3 + + " L" + x10 + "," + y3 + + " L" + sx12 + "," + sy4 + + " L" + x11 + "," + y4 + + " L" + sx13 + "," + sy5 + + " L" + x12 + "," + y5 + + " L" + sx14 + "," + sy6 + + " L" + x13 + "," + y6 + + " L" + sx15 + "," + sy7 + + " L" + x14 + "," + y7 + + " L" + sx16 + "," + sy8 + + " L" + w + "," + vc + + " L" + sx16 + "," + sy9 + + " L" + x14 + "," + y8 + + " L" + sx15 + "," + sy10 + + " L" + x13 + "," + y9 + + " L" + sx14 + "," + sy11 + + " L" + x12 + "," + y10 + + " L" + sx13 + "," + sy12 + + " L" + x11 + "," + y11 + + " L" + sx12 + "," + sy13 + + " L" + x10 + "," + y12 + + " L" + sx11 + "," + sy14 + + " L" + x9 + "," + y13 + + " L" + sx10 + "," + sy15 + + " L" + x8 + "," + y14 + + " L" + sx9 + "," + sy16 + + " L" + hc + "," + h + + " L" + sx8 + "," + sy16 + + " L" + x7 + "," + y14 + + " L" + sx7 + "," + sy15 + + " L" + x6 + "," + y13 + + " L" + sx6 + "," + sy14 + + " L" + x5 + "," + y12 + + " L" + sx5 + "," + sy13 + + " L" + x4 + "," + y11 + + " L" + sx4 + "," + sy12 + + " L" + x3 + "," + y10 + + " L" + sx3 + "," + sy11 + + " L" + x2 + "," + y9 + + " L" + sx2 + "," + sy10 + + " L" + x1 + "," + y8 + + " L" + sx1 + "," + sy9 + + " z"; + result += ""; + break; + + case "pie": + case "pieWedge": + case "arc": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var adj1, adj2, H, shapAdjst1, shapAdjst2, isClose; + if (shapType == "pie") { + adj1 = 0; + adj2 = 270; + H = h; + isClose = true; + } else if (shapType == "pieWedge") { + adj1 = 180; + adj2 = 270; + H = 2 * h; + isClose = true; + } else if (shapType == "arc") { + adj1 = 270; + adj2 = 0; + H = h; + isClose = false; + } + if (shapAdjst !== undefined) { + shapAdjst1 = getTextByPathList(shapAdjst, ["attrs", "fmla"]); + shapAdjst2 = shapAdjst1; + if (shapAdjst1 === undefined) { + shapAdjst1 = shapAdjst[0]["attrs"]["fmla"]; + shapAdjst2 = shapAdjst[1]["attrs"]["fmla"]; + } + if (shapAdjst1 !== undefined) { + adj1 = parseInt(shapAdjst1.substr(4)) / 60000; + } + if (shapAdjst2 !== undefined) { + adj2 = parseInt(shapAdjst2.substr(4)) / 60000; + } + } + var pieVals = shapePie(H, w, adj1, adj2, isClose); + //console.log("shapType: ",shapType,"\nimgFillFlg: ",imgFillFlg,"\ngrndFillFlg: ",grndFillFlg,"\nshpId: ",shpId,"\nfillColor: ",fillColor); + result += ""; + break; + case "chord": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 45; + var sAdj2, sAdj2_val = 270; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = parseInt(sAdj1.substr(4)) / 60000; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj2_val = parseInt(sAdj2.substr(4)) / 60000; + } + } + } + var hR = h / 2; + var wR = w / 2; + var d_val = shapeArc(wR, hR, wR, hR, sAdj1_val, sAdj2_val, true); + //console.log("shapType: ",shapType,", sAdj1_val: ",sAdj1_val,", sAdj2_val: ",sAdj2_val) + result += ""; + break; + case "frame": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj1 = 12500 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst !== undefined) { + adj1 = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var a1, x1, x4, y4; + if (adj1 < 0) a1 = 0 + else if (adj1 > cnstVal1) a1 = cnstVal1 + else a1 = adj1 + x1 = Math.min(w, h) * a1 / cnstVal2; + x4 = w - x1; + y4 = h - x1; + var d = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + "M" + x1 + "," + x1 + + " L" + x1 + "," + y4 + + " L" + x4 + "," + y4 + + " L" + x4 + "," + x1 + + " z"; + result += ""; + break; + case "donut": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var a, dr, iwd2, ihd2; + if (adj < 0) a = 0 + else if (adj > cnstVal1) a = cnstVal1 + else a = adj + dr = Math.min(w, h) * a / cnstVal2; + iwd2 = w / 2 - dr; + ihd2 = h / 2 - dr; + var d = "M" + 0 + "," + h / 2 + + shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false).replace("M", "L") + + shapeArc(w / 2, h / 2, w / 2, h / 2, 270, 360, false).replace("M", "L") + + shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") + + shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") + + " z" + + "M" + dr + "," + h / 2 + + shapeArc(w / 2, h / 2, iwd2, ihd2, 180, 90, false).replace("M", "L") + + shapeArc(w / 2, h / 2, iwd2, ihd2, 90, 0, false).replace("M", "L") + + shapeArc(w / 2, h / 2, iwd2, ihd2, 0, -90, false).replace("M", "L") + + shapeArc(w / 2, h / 2, iwd2, ihd2, 270, 180, false).replace("M", "L") + + " z"; + result += ""; + break; + case "noSmoking": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 18750 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var a, dr, iwd2, ihd2, ang, ang2rad, ct, st, m, n, drd2, dang, dang2, swAng, t3, stAng1, stAng2; + if (adj < 0) a = 0 + else if (adj > cnstVal1) a = cnstVal1 + else a = adj + dr = Math.min(w, h) * a / cnstVal2; + iwd2 = w / 2 - dr; + ihd2 = h / 2 - dr; + ang = Math.atan(h / w); + //ang2rad = ang*Math.PI/180; + ct = ihd2 * Math.cos(ang); + st = iwd2 * Math.sin(ang); + m = Math.sqrt(ct * ct + st * st); //"mod ct st 0" + n = iwd2 * ihd2 / m; + drd2 = dr / 2; + dang = Math.atan(drd2 / n); + dang2 = dang * 2; + swAng = -Math.PI + dang2; + //t3 = Math.atan(h/w); + stAng1 = ang - dang; + stAng2 = stAng1 - Math.PI; + var ct1, st1, m1, n1, dx1, dy1, x1, y1, y1, y2; + ct1 = ihd2 * Math.cos(stAng1); + st1 = iwd2 * Math.sin(stAng1); + m1 = Math.sqrt(ct1 * ct1 + st1 * st1); //"mod ct1 st1 0" + n1 = iwd2 * ihd2 / m1; + dx1 = n1 * Math.cos(stAng1); + dy1 = n1 * Math.sin(stAng1); + x1 = w / 2 + dx1; + y1 = h / 2 + dy1; + x2 = w / 2 - dx1; + y2 = h / 2 - dy1; + var stAng1deg = stAng1 * 180 / Math.PI; + var stAng2deg = stAng2 * 180 / Math.PI; + var swAng2deg = swAng * 180 / Math.PI; + var d = "M" + 0 + "," + h / 2 + + shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false).replace("M", "L") + + shapeArc(w / 2, h / 2, w / 2, h / 2, 270, 360, false).replace("M", "L") + + shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") + + shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") + + " z" + + "M" + x1 + "," + y1 + + shapeArc(w / 2, h / 2, iwd2, ihd2, stAng1deg, (stAng1deg + swAng2deg), false).replace("M", "L") + + " z" + + "M" + x2 + "," + y2 + + shapeArc(w / 2, h / 2, iwd2, ihd2, stAng2deg, (stAng2deg + swAng2deg), false).replace("M", "L") + + " z"; + //console.log("adj: ",adj,"x1:",x1,",y1:",y1," x2:",x2,",y2:",y2,",stAng1:",stAng1,",stAng1deg:",stAng1deg,",stAng2:",stAng2,",stAng2deg:",stAng2deg,",swAng:",swAng,",swAng2deg:",swAng2deg) + + result += ""; + break; + case "halfFrame": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 3.5; + var sAdj2, sAdj2_val = 3.5; + var cnsVal = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj2_val = parseInt(sAdj2.substr(4)) * slideFactor; + } + } + } + var minWH = Math.min(w, h); + var maxAdj2 = (cnsVal * w) / minWH; + var a1, a2; + if (sAdj2_val < 0) a2 = 0 + else if (sAdj2_val > maxAdj2) a2 = maxAdj2 + else a2 = sAdj2_val + var x1 = (minWH * a2) / cnsVal; + var g1 = h * x1 / w; + var g2 = h - g1; + var maxAdj1 = (cnsVal * g2) / minWH; + if (sAdj1_val < 0) a1 = 0 + else if (sAdj1_val > maxAdj1) a1 = maxAdj1 + else a1 = sAdj1_val + var y1 = minWH * a1 / cnsVal; + var dx2 = y1 * w / h; + var x2 = w - dx2; + var dy2 = x1 * h / w; + var y2 = h - dy2; + var d = "M0,0" + + " L" + w + "," + 0 + + " L" + x2 + "," + y1 + + " L" + x1 + "," + y1 + + " L" + x1 + "," + y2 + + " L0," + h + " z"; + + result += ""; + //console.log("w: ",w,", h: ",h,", sAdj1_val: ",sAdj1_val,", sAdj2_val: ",sAdj2_val,",maxAdj1: ",maxAdj1,",maxAdj2: ",maxAdj2) + break; + case "blockArc": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 180; + var sAdj2, adj2 = 0; + var sAdj3, adj3 = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) / 60000; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) / 60000; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + + var stAng, istAng, a3, sw11, sw12, swAng, iswAng; + var cd1 = 360; + if (adj1 < 0) stAng = 0 + else if (adj1 > cd1) stAng = cd1 + else stAng = adj1 //180 + + if (adj2 < 0) istAng = 0 + else if (adj2 > cd1) istAng = cd1 + else istAng = adj2 //0 + + if (adj3 < 0) a3 = 0 + else if (adj3 > cnstVal1) a3 = cnstVal1 + else a3 = adj3 + + sw11 = istAng - stAng; // -180 + sw12 = sw11 + cd1; //180 + swAng = (sw11 > 0) ? sw11 : sw12; //180 + iswAng = -swAng; //-180 + + var endAng = stAng + swAng; + var iendAng = istAng + iswAng; + + var wt1, ht1, dx1, dy1, x1, y1, stRd, istRd, wd2, hd2, hc, vc; + stRd = stAng * (Math.PI) / 180; + istRd = istAng * (Math.PI) / 180; + wd2 = w / 2; + hd2 = h / 2; + hc = w / 2; + vc = h / 2; + if (stAng > 90 && stAng < 270) { + wt1 = wd2 * (Math.sin((Math.PI) / 2 - stRd)); + ht1 = hd2 * (Math.cos((Math.PI) / 2 - stRd)); + + dx1 = wd2 * (Math.cos(Math.atan(ht1 / wt1))); + dy1 = hd2 * (Math.sin(Math.atan(ht1 / wt1))); + + x1 = hc - dx1; + y1 = vc - dy1; + } else { + wt1 = wd2 * (Math.sin(stRd)); + ht1 = hd2 * (Math.cos(stRd)); + + dx1 = wd2 * (Math.cos(Math.atan(wt1 / ht1))); + dy1 = hd2 * (Math.sin(Math.atan(wt1 / ht1))); + + x1 = hc + dx1; + y1 = vc + dy1; + } + var dr, iwd2, ihd2, wt2, ht2, dx2, dy2, x2, y2; + dr = Math.min(w, h) * a3 / cnstVal2; + iwd2 = wd2 - dr; + ihd2 = hd2 - dr; + //console.log("stAng: ",stAng," swAng: ",swAng ," endAng:",endAng) + if ((endAng <= 450 && endAng > 270) || ((endAng >= 630 && endAng < 720))) { + wt2 = iwd2 * (Math.sin(istRd)); + ht2 = ihd2 * (Math.cos(istRd)); + dx2 = iwd2 * (Math.cos(Math.atan(wt2 / ht2))); + dy2 = ihd2 * (Math.sin(Math.atan(wt2 / ht2))); + x2 = hc + dx2; + y2 = vc + dy2; + } else { + wt2 = iwd2 * (Math.sin((Math.PI) / 2 - istRd)); + ht2 = ihd2 * (Math.cos((Math.PI) / 2 - istRd)); + + dx2 = iwd2 * (Math.cos(Math.atan(ht2 / wt2))); + dy2 = ihd2 * (Math.sin(Math.atan(ht2 / wt2))); + x2 = hc - dx2; + y2 = vc - dy2; + } + var d = "M" + x1 + "," + y1 + + shapeArc(wd2, hd2, wd2, hd2, stAng, endAng, false).replace("M", "L") + + " L" + x2 + "," + y2 + + shapeArc(wd2, hd2, iwd2, ihd2, istAng, iendAng, false).replace("M", "L") + + " z"; + result += ""; + break; + case "bracePair": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 8333 * slideFactor; + var cnstVal1 = 25000 * slideFactor; + var cnstVal2 = 50000 * slideFactor; + var cnstVal3 = 100000 * slideFactor; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var vc = h / 2, cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a, x1, x2, x3, x4, y2, y3, y4; + if (adj < 0) a = 0 + else if (adj > cnstVal1) a = cnstVal1 + else a = adj + var minWH = Math.min(w, h); + x1 = minWH * a / cnstVal3; + x2 = minWH * a / cnstVal2; + x3 = w - x2; + x4 = w - x1; + y2 = vc - x1; + y3 = vc + x1; + y4 = h - x1; + //console.log("w:",w," h:",h," x1:",x1," x2:",x2," x3:",x3," x4:",x4," y2:",y2," y3:",y3," y4:",y4) + var d = "M" + x2 + "," + h + + shapeArc(x2, y4, x1, x1, cd4, cd2, false).replace("M", "L") + + " L" + x1 + "," + y3 + + shapeArc(0, y3, x1, x1, 0, (-cd4), false).replace("M", "L") + + shapeArc(0, y2, x1, x1, cd4, 0, false).replace("M", "L") + + " L" + x1 + "," + x1 + + shapeArc(x2, x1, x1, x1, cd2, c3d4, false).replace("M", "L") + + " M" + x3 + "," + 0 + + shapeArc(x3, x1, x1, x1, c3d4, cd, false).replace("M", "L") + + " L" + x4 + "," + y2 + + shapeArc(w, y2, x1, x1, cd2, cd4, false).replace("M", "L") + + shapeArc(w, y3, x1, x1, c3d4, cd2, false).replace("M", "L") + + " L" + x4 + "," + y4 + + shapeArc(x3, y4, x1, x1, 0, cd4, false).replace("M", "L"); + + result += ""; + break; + case "leftBrace": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 8333 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, cd2 = 180, cd4 = 90, c3d4 = 270, a1, a2, q1, q2, q3, y1, y2, y3, y4; + if (adj2 < 0) a2 = 0 + else if (adj2 > cnstVal2) a2 = cnstVal2 + else a2 = adj2 + var minWH = Math.min(w, h); + q1 = cnstVal2 - a2; + if (q1 < a2) q2 = q1 + else q2 = a2 + q3 = q2 / 2; + var maxAdj1 = q3 * h / minWH; + if (adj1 < 0) a1 = 0 + else if (adj1 > maxAdj1) a1 = maxAdj1 + else a1 = adj1 + y1 = minWH * a1 / cnstVal2; + y3 = h * a2 / cnstVal2; + y2 = y3 - y1; + y4 = y3 + y1; + //console.log("w:",w," h:",h," q1:",q1," q2:",q2," q3:",q3," y1:",y1," y3:",y3," y4:",y4," maxAdj1:",maxAdj1) + var d = "M" + w + "," + h + + shapeArc(w, h - y1, w / 2, y1, cd4, cd2, false).replace("M", "L") + + " L" + w / 2 + "," + y4 + + shapeArc(0, y4, w / 2, y1, 0, (-cd4), false).replace("M", "L") + + shapeArc(0, y2, w / 2, y1, cd4, 0, false).replace("M", "L") + + " L" + w / 2 + "," + y1 + + shapeArc(w, y1, w / 2, y1, cd2, c3d4, false).replace("M", "L"); + + result += ""; + break; + case "rightBrace": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 8333 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a1, a2, q1, q2, q3, y1, y2, y3, y4; + if (adj2 < 0) a2 = 0 + else if (adj2 > cnstVal2) a2 = cnstVal2 + else a2 = adj2 + var minWH = Math.min(w, h); + q1 = cnstVal2 - a2; + if (q1 < a2) q2 = q1 + else q2 = a2 + q3 = q2 / 2; + var maxAdj1 = q3 * h / minWH; + if (adj1 < 0) a1 = 0 + else if (adj1 > maxAdj1) a1 = maxAdj1 + else a1 = adj1 + y1 = minWH * a1 / cnstVal2; + y3 = h * a2 / cnstVal2; + y2 = y3 - y1; + y4 = h - y1; + //console.log("w:",w," h:",h," q1:",q1," q2:",q2," q3:",q3," y1:",y1," y2:",y2," y3:",y3," y4:",y4," maxAdj1:",maxAdj1) + var d = "M" + 0 + "," + 0 + + shapeArc(0, y1, w / 2, y1, c3d4, cd, false).replace("M", "L") + + " L" + w / 2 + "," + y2 + + shapeArc(w, y2, w / 2, y1, cd2, cd4, false).replace("M", "L") + + shapeArc(w, y3 + y1, w / 2, y1, c3d4, cd2, false).replace("M", "L") + + " L" + w / 2 + "," + y4 + + shapeArc(0, y4, w / 2, y1, 0, cd4, false).replace("M", "L"); + + result += ""; + break; + case "bracketPair": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 16667 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var r = w, b = h, cd2 = 180, cd4 = 90, c3d4 = 270, a, x1, x2, y2; + if (adj < 0) a = 0 + else if (adj > cnstVal1) a = cnstVal1 + else a = adj + x1 = Math.min(w, h) * a / cnstVal2; + x2 = r - x1; + y2 = b - x1; + //console.log("w:",w," h:",h," x1:",x1," x2:",x2," y2:",y2) + var d = shapeArc(x1, x1, x1, x1, c3d4, cd2, false) + + shapeArc(x1, y2, x1, x1, cd2, cd4, false).replace("M", "L") + + shapeArc(x2, x1, x1, x1, c3d4, (c3d4 + cd4), false) + + shapeArc(x2, y2, x1, x1, 0, cd4, false).replace("M", "L"); + result += ""; + break; + case "leftBracket": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 8333 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var maxAdj = cnstVal1 * h / Math.min(w, h); + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var r = w, b = h, cd2 = 180, cd4 = 90, c3d4 = 270, a, y1, y2; + if (adj < 0) a = 0 + else if (adj > maxAdj) a = maxAdj + else a = adj + y1 = Math.min(w, h) * a / cnstVal2; + if (y1 > w) y1 = w; + y2 = b - y1; + var d = "M" + r + "," + b + + shapeArc(y1, y2, y1, y1, cd4, cd2, false).replace("M", "L") + + " L" + 0 + "," + y1 + + shapeArc(y1, y1, y1, y1, cd2, c3d4, false).replace("M", "L") + + " L" + r + "," + 0 + result += ""; + break; + case "rightBracket": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 8333 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var maxAdj = cnstVal1 * h / Math.min(w, h); + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var cd = 360, cd2 = 180, cd4 = 90, c3d4 = 270, a, y1, y2, y3; + if (adj < 0) a = 0 + else if (adj > maxAdj) a = maxAdj + else a = adj + y1 = Math.min(w, h) * a / cnstVal2; + y2 = h - y1; + y3 = w - y1; + //console.log("w:",w," h:",h," y1:",y1," y2:",y2," y3:",y3) + var d = "M" + 0 + "," + h + + shapeArc(y3, y2, y1, y1, cd4, 0, false).replace("M", "L") + + //" L"+ r + "," + y2 + + " L" + w + "," + h / 2 + + shapeArc(y3, y1, y1, y1, cd, c3d4, false).replace("M", "L") + + " L" + 0 + "," + 0 + result += ""; + break; + case "moon": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 0.5; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) / 100000;//*96/914400;; + } + var hd2, cd2, cd4; + + hd2 = h / 2; + cd2 = 180; + cd4 = 90; + + var adj2 = (1 - adj) * w; + var d = "M" + w + "," + h + + shapeArc(w, hd2, w, hd2, cd4, (cd4 + cd2), false).replace("M", "L") + + shapeArc(w, hd2, adj2, hd2, (cd4 + cd2), cd4, false).replace("M", "L") + + " z"; + result += ""; + break; + case "corner": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 50000 * slideFactor; + var sAdj2, sAdj2_val = 50000 * slideFactor; + var cnsVal = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj2_val = parseInt(sAdj2.substr(4)) * slideFactor; + } + } + } + var minWH = Math.min(w, h); + var maxAdj1 = cnsVal * h / minWH; + var maxAdj2 = cnsVal * w / minWH; + var a1, a2, x1, dy1, y1; + if (sAdj1_val < 0) a1 = 0 + else if (sAdj1_val > maxAdj1) a1 = maxAdj1 + else a1 = sAdj1_val + + if (sAdj2_val < 0) a2 = 0 + else if (sAdj2_val > maxAdj2) a2 = maxAdj2 + else a2 = sAdj2_val + x1 = minWH * a2 / cnsVal; + dy1 = minWH * a1 / cnsVal; + y1 = h - dy1; + + var d = "M0,0" + + " L" + x1 + "," + 0 + + " L" + x1 + "," + y1 + + " L" + w + "," + y1 + + " L" + w + "," + h + + " L0," + h + " z"; + + result += ""; + break; + case "diagStripe": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var sAdj1_val = 50000 * slideFactor; + var cnsVal = 100000 * slideFactor; + if (shapAdjst !== undefined) { + sAdj1_val = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var a1, x2, y2; + if (sAdj1_val < 0) a1 = 0 + else if (sAdj1_val > cnsVal) a1 = cnsVal + else a1 = sAdj1_val + x2 = w * a1 / cnsVal; + y2 = h * a1 / cnsVal; + var d = "M" + 0 + "," + y2 + + " L" + x2 + "," + 0 + + " L" + w + "," + 0 + + " L" + 0 + "," + h + " z"; + + result += ""; + break; + case "gear6": + case "gear9": + txtRotate = 0; + var gearNum = shapType.substr(4), d; + if (gearNum == "6") { + d = shapeGear(w, h / 3.5, parseInt(gearNum)); + } else { //gearNum=="9" + d = shapeGear(w, h / 3.5, parseInt(gearNum)); + } + result += ""; + break; + case "bentConnector3": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var shapAdjst_val = 0.5; + if (shapAdjst !== undefined) { + shapAdjst_val = parseInt(shapAdjst.substr(4)) / 100000; + // if (isFlipV) { + // result += " "; + break; + case "teardrop": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj1 = 100000 * slideFactor; + var cnsVal1 = adj1; + var cnsVal2 = 200000 * slideFactor; + if (shapAdjst !== undefined) { + adj1 = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var a1, r2, tw, th, sw, sh, dx1, dy1, x1, y1, x2, y2, rd45; + if (adj1 < 0) a1 = 0 + else if (adj1 > cnsVal2) a1 = cnsVal2 + else a1 = adj1 + r2 = Math.sqrt(2); + tw = r2 * (w / 2); + th = r2 * (h / 2); + sw = (tw * a1) / cnsVal1; + sh = (th * a1) / cnsVal1; + rd45 = (45 * (Math.PI) / 180); + dx1 = sw * (Math.cos(rd45)); + dy1 = sh * (Math.cos(rd45)); + x1 = (w / 2) + dx1; + y1 = (h / 2) - dy1; + x2 = ((w / 2) + x1) / 2; + y2 = ((h / 2) + y1) / 2; + + var d_val = shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false) + + "Q " + x2 + ",0 " + x1 + "," + y1 + + "Q " + w + "," + y2 + " " + w + "," + h / 2 + + shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace("M", "L") + + shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace("M", "L") + " z"; + result += ""; + + // console.log("shapAdjst: ",shapAdjst,", adj1: ",adj1); + break; + case "plaque": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj1 = 16667 * slideFactor; + var cnsVal1 = 50000 * slideFactor; + var cnsVal2 = 100000 * slideFactor; + if (shapAdjst !== undefined) { + adj1 = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var a1, x1, x2, y2; + if (adj1 < 0) a1 = 0 + else if (adj1 > cnsVal1) a1 = cnsVal1 + else a1 = adj1 + x1 = a1 * (Math.min(w, h)) / cnsVal2; + x2 = w - x1; + y2 = h - x1; + + var d_val = "M0," + x1 + + shapeArc(0, 0, x1, x1, 90, 0, false).replace("M", "L") + + " L" + x2 + "," + 0 + + shapeArc(w, 0, x1, x1, 180, 90, false).replace("M", "L") + + " L" + w + "," + y2 + + shapeArc(w, h, x1, x1, 270, 180, false).replace("M", "L") + + " L" + x1 + "," + h + + shapeArc(0, h, x1, x1, 0, -90, false).replace("M", "L") + " z"; + result += ""; + + break; + case "sun": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var refr = slideFactor; + var adj1 = 25000 * refr; + var cnstVal1 = 12500 * refr; + var cnstVal2 = 46875 * refr; + if (shapAdjst !== undefined) { + adj1 = parseInt(shapAdjst.substr(4)) * refr; + } + var a1; + if (adj1 < cnstVal1) a1 = cnstVal1 + else if (adj1 > cnstVal2) a1 = cnstVal2 + else a1 = adj1 + + var cnstVa3 = 50000 * refr; + var cnstVa4 = 100000 * refr; + var g0 = cnstVa3 - a1, + g1 = g0 * (30274 * refr) / (32768 * refr), + g2 = g0 * (12540 * refr) / (32768 * refr), + g3 = g1 + cnstVa3, + g4 = g2 + cnstVa3, + g5 = cnstVa3 - g1, + g6 = cnstVa3 - g2, + g7 = g0 * (23170 * refr) / (32768 * refr), + g8 = cnstVa3 + g7, + g9 = cnstVa3 - g7, + g10 = g5 * 3 / 4, + g11 = g6 * 3 / 4, + g12 = g10 + 3662 * refr, + g13 = g11 + 36620 * refr, + g14 = g11 + 12500 * refr, + g15 = cnstVa4 - g10, + g16 = cnstVa4 - g12, + g17 = cnstVa4 - g13, + g18 = cnstVa4 - g14, + ox1 = w * (18436 * refr) / (21600 * refr), + oy1 = h * (3163 * refr) / (21600 * refr), + ox2 = w * (3163 * refr) / (21600 * refr), + oy2 = h * (18436 * refr) / (21600 * refr), + x8 = w * g8 / cnstVa4, + x9 = w * g9 / cnstVa4, + x10 = w * g10 / cnstVa4, + x12 = w * g12 / cnstVa4, + x13 = w * g13 / cnstVa4, + x14 = w * g14 / cnstVa4, + x15 = w * g15 / cnstVa4, + x16 = w * g16 / cnstVa4, + x17 = w * g17 / cnstVa4, + x18 = w * g18 / cnstVa4, + x19 = w * a1 / cnstVa4, + wR = w * g0 / cnstVa4, + hR = h * g0 / cnstVa4, + y8 = h * g8 / cnstVa4, + y9 = h * g9 / cnstVa4, + y10 = h * g10 / cnstVa4, + y12 = h * g12 / cnstVa4, + y13 = h * g13 / cnstVa4, + y14 = h * g14 / cnstVa4, + y15 = h * g15 / cnstVa4, + y16 = h * g16 / cnstVa4, + y17 = h * g17 / cnstVa4, + y18 = h * g18 / cnstVa4; + + var d_val = "M" + w + "," + h / 2 + + " L" + x15 + "," + y18 + + " L" + x15 + "," + y14 + + "z" + + " M" + ox1 + "," + oy1 + + " L" + x16 + "," + y17 + + " L" + x13 + "," + y12 + + "z" + + " M" + w / 2 + "," + 0 + + " L" + x18 + "," + y10 + + " L" + x14 + "," + y10 + + "z" + + " M" + ox2 + "," + oy1 + + " L" + x17 + "," + y12 + + " L" + x12 + "," + y17 + + "z" + + " M" + 0 + "," + h / 2 + + " L" + x10 + "," + y14 + + " L" + x10 + "," + y18 + + "z" + + " M" + ox2 + "," + oy2 + + " L" + x12 + "," + y13 + + " L" + x17 + "," + y16 + + "z" + + " M" + w / 2 + "," + h + + " L" + x14 + "," + y15 + + " L" + x18 + "," + y15 + + "z" + + " M" + ox1 + "," + oy2 + + " L" + x13 + "," + y16 + + " L" + x16 + "," + y13 + + " z" + + " M" + x19 + "," + h / 2 + + shapeArc(w / 2, h / 2, wR, hR, 180, 540, false).replace("M", "L") + + " z"; + //console.log("adj1: ",adj1,d_val); + result += ""; + + + break; + case "heart": + var dx1, dx2, x1, x2, x3, x4, y1; + dx1 = w * 49 / 48; + dx2 = w * 10 / 48 + x1 = w / 2 - dx1 + x2 = w / 2 - dx2 + x3 = w / 2 + dx2 + x4 = w / 2 + dx1 + y1 = -h / 3; + var d_val = "M" + w / 2 + "," + h / 4 + + "C" + x3 + "," + y1 + " " + x4 + "," + h / 4 + " " + w / 2 + "," + h + + "C" + x1 + "," + h / 4 + " " + x2 + "," + y1 + " " + w / 2 + "," + h / 4 + " z"; + + result += ""; + + break; + case "lightningBolt": + var x1 = w * 5022 / 21600, + x2 = w * 11050 / 21600, + x3 = w * 8472 / 21600, + x4 = w * 8757 / 21600, + x5 = w * 10012 / 21600, + x6 = w * 14767 / 21600, + x7 = w * 12222 / 21600, + x8 = w * 12860 / 21600, + x9 = w * 13917 / 21600, + x10 = w * 7602 / 21600, + x11 = w * 16577 / 21600, + y1 = h * 3890 / 21600, + y2 = h * 6080 / 21600, + y3 = h * 6797 / 21600, + y4 = h * 7437 / 21600, + y5 = h * 12877 / 21600, + y6 = h * 9705 / 21600, + y7 = h * 12007 / 21600, + y8 = h * 13987 / 21600, + y9 = h * 8382 / 21600, + y10 = h * 14277 / 21600, + y11 = h * 14915 / 21600; + + var d_val = "M" + x3 + "," + 0 + + " L" + x8 + "," + y2 + + " L" + x2 + "," + y3 + + " L" + x11 + "," + y7 + + " L" + x6 + "," + y5 + + " L" + w + "," + h + + " L" + x5 + "," + y11 + + " L" + x7 + "," + y8 + + " L" + x1 + "," + y6 + + " L" + x10 + "," + y9 + + " L" + 0 + "," + y1 + " z"; + + result += ""; + + break; + case "cube": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var refr = slideFactor; + var adj = 25000 * refr; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * refr; + } + var d_val; + var cnstVal2 = 100000 * refr; + var ss = Math.min(w, h); + var a, y1, y4, x4; + a = (adj < 0) ? 0 : (adj > cnstVal2) ? cnstVal2 : adj; + y1 = ss * a / cnstVal2; + y4 = h - y1; + x4 = w - y1; + d_val = "M" + 0 + "," + y1 + + " L" + y1 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + y4 + + " L" + x4 + "," + h + + " L" + 0 + "," + h + + " z" + + "M" + 0 + "," + y1 + + " L" + x4 + "," + y1 + + " M" + x4 + "," + y1 + + " L" + w + "," + 0 + + "M" + x4 + "," + y1 + + " L" + x4 + "," + h; + + result += ""; + + break; + case "bevel": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var refr = slideFactor; + var adj = 12500 * refr; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * refr; + } + var d_val; + var cnstVal1 = 50000 * refr; + var cnstVal2 = 100000 * refr; + var ss = Math.min(w, h); + var a, x1, x2, y2; + a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj; + x1 = ss * a / cnstVal2; + x2 = w - x1; + y2 = h - x1; + d_val = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + " M" + x1 + "," + x1 + + " L" + x2 + "," + x1 + + " L" + x2 + "," + y2 + + " L" + x1 + "," + y2 + + " z" + + " M" + 0 + "," + 0 + + " L" + x1 + "," + x1 + + " M" + 0 + "," + h + + " L" + x1 + "," + y2 + + " M" + w + "," + 0 + + " L" + x2 + "," + x1 + + " M" + w + "," + h + + " L" + x2 + "," + y2; + + result += ""; + + break; + case "foldedCorner": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var refr = slideFactor; + var adj = 16667 * refr; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * refr; + } + var d_val; + var cnstVal1 = 50000 * refr; + var cnstVal2 = 100000 * refr; + var ss = Math.min(w, h); + var a, dy2, dy1, x1, x2, y2, y1; + a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj; + dy2 = ss * a / cnstVal2; + dy1 = dy2 / 5; + x1 = w - dy2; + x2 = x1 + dy1; + y2 = h - dy2; + y1 = y2 + dy1; + d_val = "M" + x1 + "," + h + + " L" + x2 + "," + y1 + + " L" + w + "," + y2 + + " L" + x1 + "," + h + + " L" + 0 + "," + h + + " L" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + y2; + + result += ""; + + break; + case "cloud": + case "cloudCallout": + var x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, + rx1, rx2, rx3, rx4, rx5, rx6, rx7, rx8, rx9, rx10, rx11, ry1, ry2, ry3, ry4, ry5, ry6, ry7, ry8, ry9, ry10, ry11; + x0 = w * 3900 / 43200;; + x1 = w * 4693 / 43200; + x2 = w * 6928 / 43200; + x3 = w * 16478 / 43200; + x4 = w * 28827 / 43200; + x5 = w * 34129 / 43200; + x6 = w * 41798 / 43200; + x7 = w * 38324 / 43200; + x8 = w * 29078 / 43200; + x9 = w * 22141 / 43200; + x10 = w * 14000 / 43200; + x11 = w * 4127 / 43200; + y0 = h * 14370 / 43200; + y1 = h * 26177 / 43200; + y2 = h * 34899 / 43200; + y3 = h * 39090 / 43200; + y4 = h * 34751 / 43200; + y5 = h * 22954 / 43200; + y6 = h * 15354 / 43200; + y7 = h * 5426 / 43200; + y8 = h * 3952 / 43200; + y9 = h * 4720 / 43200; + y10 = h * 5192 / 43200; + y11 = h * 15789 / 43200; + //Path: + //(path attrs: w = 43200; h = 43200; ) + var rX1 = w * 6753 / 43200, rY1 = h * 9190 / 43200, rX2 = w * 5333 / 43200, rY2 = h * 7267 / 43200, rX3 = w * 4365 / 43200, + rY3 = h * 5945 / 43200, rX4 = w * 4857 / 43200, rY4 = h * 6595 / 43200, rY5 = h * 7273 / 43200, rX6 = w * 6775 / 43200, + rY6 = h * 9220 / 43200, rX7 = w * 5785 / 43200, rY7 = h * 7867 / 43200, rX8 = w * 6752 / 43200, rY8 = h * 9215 / 43200, + rX9 = w * 7720 / 43200, rY9 = h * 10543 / 43200, rX10 = w * 4360 / 43200, rY10 = h * 5918 / 43200, rX11 = w * 4345 / 43200; + var sA1 = -11429249 / 60000, wA1 = 7426832 / 60000, sA2 = -8646143 / 60000, wA2 = 5396714 / 60000, sA3 = -8748475 / 60000, + wA3 = 5983381 / 60000, sA4 = -7859164 / 60000, wA4 = 7034504 / 60000, sA5 = -4722533 / 60000, wA5 = 6541615 / 60000, + sA6 = -2776035 / 60000, wA6 = 7816140 / 60000, sA7 = 37501 / 60000, wA7 = 6842000 / 60000, sA8 = 1347096 / 60000, + wA8 = 6910353 / 60000, sA9 = 3974558 / 60000, wA9 = 4542661 / 60000, sA10 = -16496525 / 60000, wA10 = 8804134 / 60000, + sA11 = -14809710 / 60000, wA11 = 9151131 / 60000; + + var cX0, cX1, cX2, cX3, cX4, cX5, cX6, cX7, cX8, cX9, cX10, cY0, cY1, cY2, cY3, cY4, cY5, cY6, cY7, cY8, cY9, cY10; + var arc1, arc2, arc3, arc4, arc5, arc6, arc7, arc8, arc9, arc10, arc11; + var lxy1, lxy2, lxy3, lxy4, lxy5, lxy6, lxy7, lxy8, lxy9, lxy10; + + cX0 = x0 - rX1 * Math.cos(sA1 * Math.PI / 180); + cY0 = y0 - rY1 * Math.sin(sA1 * Math.PI / 180); + arc1 = shapeArc(cX0, cY0, rX1, rY1, sA1, sA1 + wA1, false).replace("M", "L"); + lxy1 = arc1.substr(arc1.lastIndexOf("L") + 1).split(" "); + cX1 = parseInt(lxy1[0]) - rX2 * Math.cos(sA2 * Math.PI / 180); + cY1 = parseInt(lxy1[1]) - rY2 * Math.sin(sA2 * Math.PI / 180); + arc2 = shapeArc(cX1, cY1, rX2, rY2, sA2, sA2 + wA2, false).replace("M", "L"); + lxy2 = arc2.substr(arc2.lastIndexOf("L") + 1).split(" "); + cX2 = parseInt(lxy2[0]) - rX3 * Math.cos(sA3 * Math.PI / 180); + cY2 = parseInt(lxy2[1]) - rY3 * Math.sin(sA3 * Math.PI / 180); + arc3 = shapeArc(cX2, cY2, rX3, rY3, sA3, sA3 + wA3, false).replace("M", "L"); + lxy3 = arc3.substr(arc3.lastIndexOf("L") + 1).split(" "); + cX3 = parseInt(lxy3[0]) - rX4 * Math.cos(sA4 * Math.PI / 180); + cY3 = parseInt(lxy3[1]) - rY4 * Math.sin(sA4 * Math.PI / 180); + arc4 = shapeArc(cX3, cY3, rX4, rY4, sA4, sA4 + wA4, false).replace("M", "L"); + lxy4 = arc4.substr(arc4.lastIndexOf("L") + 1).split(" "); + cX4 = parseInt(lxy4[0]) - rX2 * Math.cos(sA5 * Math.PI / 180); + cY4 = parseInt(lxy4[1]) - rY5 * Math.sin(sA5 * Math.PI / 180); + arc5 = shapeArc(cX4, cY4, rX2, rY5, sA5, sA5 + wA5, false).replace("M", "L"); + lxy5 = arc5.substr(arc5.lastIndexOf("L") + 1).split(" "); + cX5 = parseInt(lxy5[0]) - rX6 * Math.cos(sA6 * Math.PI / 180); + cY5 = parseInt(lxy5[1]) - rY6 * Math.sin(sA6 * Math.PI / 180); + arc6 = shapeArc(cX5, cY5, rX6, rY6, sA6, sA6 + wA6, false).replace("M", "L"); + lxy6 = arc6.substr(arc6.lastIndexOf("L") + 1).split(" "); + cX6 = parseInt(lxy6[0]) - rX7 * Math.cos(sA7 * Math.PI / 180); + cY6 = parseInt(lxy6[1]) - rY7 * Math.sin(sA7 * Math.PI / 180); + arc7 = shapeArc(cX6, cY6, rX7, rY7, sA7, sA7 + wA7, false).replace("M", "L"); + lxy7 = arc7.substr(arc7.lastIndexOf("L") + 1).split(" "); + cX7 = parseInt(lxy7[0]) - rX8 * Math.cos(sA8 * Math.PI / 180); + cY7 = parseInt(lxy7[1]) - rY8 * Math.sin(sA8 * Math.PI / 180); + arc8 = shapeArc(cX7, cY7, rX8, rY8, sA8, sA8 + wA8, false).replace("M", "L"); + lxy8 = arc8.substr(arc8.lastIndexOf("L") + 1).split(" "); + cX8 = parseInt(lxy8[0]) - rX9 * Math.cos(sA9 * Math.PI / 180); + cY8 = parseInt(lxy8[1]) - rY9 * Math.sin(sA9 * Math.PI / 180); + arc9 = shapeArc(cX8, cY8, rX9, rY9, sA9, sA9 + wA9, false).replace("M", "L"); + lxy9 = arc9.substr(arc9.lastIndexOf("L") + 1).split(" "); + cX9 = parseInt(lxy9[0]) - rX10 * Math.cos(sA10 * Math.PI / 180); + cY9 = parseInt(lxy9[1]) - rY10 * Math.sin(sA10 * Math.PI / 180); + arc10 = shapeArc(cX9, cY9, rX10, rY10, sA10, sA10 + wA10, false).replace("M", "L"); + lxy10 = arc10.substr(arc10.lastIndexOf("L") + 1).split(" "); + cX10 = parseInt(lxy10[0]) - rX11 * Math.cos(sA11 * Math.PI / 180); + cY10 = parseInt(lxy10[1]) - rY3 * Math.sin(sA11 * Math.PI / 180); + arc11 = shapeArc(cX10, cY10, rX11, rY3, sA11, sA11 + wA11, false).replace("M", "L"); + + var d1 = "M" + x0 + "," + y0 + + arc1 + + arc2 + + arc3 + + arc4 + + arc5 + + arc6 + + arc7 + + arc8 + + arc9 + + arc10 + + arc11 + + " z"; + if (shapType == "cloudCallout") { + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var refr = slideFactor; + var sAdj1, adj1 = -20833 * refr; + var sAdj2, adj2 = 62500 * refr; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * refr; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * refr; + } + } + } + var d_val; + var cnstVal2 = 100000 * refr; + var ss = Math.min(w, h); + var wd2 = w / 2, hd2 = h / 2; + + var dxPos, dyPos, xPos, yPos, ht, wt, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14, g15, g16, + g17, g18, g19, g20, g21, g22, g23, g24, g25, g26, x23, x24, x25; + + dxPos = w * adj1 / cnstVal2; + dyPos = h * adj2 / cnstVal2; + xPos = wd2 + dxPos; + yPos = hd2 + dyPos; + ht = hd2 * Math.cos(Math.atan(dyPos / dxPos)); + wt = wd2 * Math.sin(Math.atan(dyPos / dxPos)); + g2 = wd2 * Math.cos(Math.atan(wt / ht)); + g3 = hd2 * Math.sin(Math.atan(wt / ht)); + //console.log("adj1: ",adj1,"adj2: ",adj2) + if (adj1 >= 0) { + g4 = wd2 + g2; + g5 = hd2 + g3; + } else { + g4 = wd2 - g2; + g5 = hd2 - g3; + } + g6 = g4 - xPos; + g7 = g5 - yPos; + g8 = Math.sqrt(g6 * g6 + g7 * g7); + g9 = ss * 6600 / 21600; + g10 = g8 - g9; + g11 = g10 / 3; + g12 = ss * 1800 / 21600; + g13 = g11 + g12; + g14 = g13 * g6 / g8; + g15 = g13 * g7 / g8; + g16 = g14 + xPos; + g17 = g15 + yPos; + g18 = ss * 4800 / 21600; + g19 = g11 * 2; + g20 = g18 + g19; + g21 = g20 * g6 / g8; + g22 = g20 * g7 / g8; + g23 = g21 + xPos; + g24 = g22 + yPos; + g25 = ss * 1200 / 21600; + g26 = ss * 600 / 21600; + x23 = xPos + g26; + x24 = g16 + g25; + x25 = g23 + g12; + + d_val = //" M" + x23 + "," + yPos + + shapeArc(x23 - g26, yPos, g26, g26, 0, 360, false) + //.replace("M","L") + + " z" + + " M" + x24 + "," + g17 + + shapeArc(x24 - g25, g17, g25, g25, 0, 360, false).replace("M", "L") + + " z" + + " M" + x25 + "," + g24 + + shapeArc(x25 - g12, g24, g12, g12, 0, 360, false).replace("M", "L") + + " z"; + d1 += d_val; + } + result += ""; + + break; + case "smileyFace": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var refr = slideFactor; + var adj = 4653 * refr; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * refr; + } + var d_val; + var cnstVal1 = 50000 * refr; + var cnstVal2 = 100000 * refr; + var cnstVal3 = 4653 * refr; + var ss = Math.min(w, h); + var a, x1, x2, x3, x4, y1, y3, dy2, y2, y4, dy3, y5, wR, hR, wd2, hd2; + wd2 = w / 2; + hd2 = h / 2; + a = (adj < -cnstVal3) ? -cnstVal3 : (adj > cnstVal3) ? cnstVal3 : adj; + x1 = w * 4969 / 21699; + x2 = w * 6215 / 21600; + x3 = w * 13135 / 21600; + x4 = w * 16640 / 21600; + y1 = h * 7570 / 21600; + y3 = h * 16515 / 21600; + dy2 = h * a / cnstVal2; + y2 = y3 - dy2; + y4 = y3 + dy2; + dy3 = h * a / cnstVal1; + y5 = y4 + dy3; + wR = w * 1125 / 21600; + hR = h * 1125 / 21600; + var cX1 = x2 - wR * Math.cos(Math.PI); + var cY1 = y1 - hR * Math.sin(Math.PI); + var cX2 = x3 - wR * Math.cos(Math.PI); + d_val = //eyes + shapeArc(cX1, cY1, wR, hR, 180, 540, false) + + shapeArc(cX2, cY1, wR, hR, 180, 540, false) + + //mouth + " M" + x1 + "," + y2 + + " Q" + wd2 + "," + y5 + " " + x4 + "," + y2 + + " Q" + wd2 + "," + y5 + " " + x1 + "," + y2 + + //head + " M" + 0 + "," + hd2 + + shapeArc(wd2, hd2, wd2, hd2, 180, 540, false).replace("M", "L") + + " z"; + result += ""; + + break; + case "verticalScroll": + case "horizontalScroll": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var refr = slideFactor; + var adj = 12500 * refr; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * refr; + } + var d_val; + var cnstVal1 = 25000 * refr; + var cnstVal2 = 100000 * refr; + var ss = Math.min(w, h); + var t = 0, l = 0, b = h, r = w; + var a, ch, ch2, ch4; + a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj; + ch = ss * a / cnstVal2; + ch2 = ch / 2; + ch4 = ch / 4; + if (shapType == "verticalScroll") { + var x3, x4, x6, x7, x5, y3, y4; + x3 = ch + ch2; + x4 = ch + ch; + x6 = r - ch; + x7 = r - ch2; + x5 = x6 - ch2; + y3 = b - ch; + y4 = b - ch2; + + d_val = "M" + ch + "," + y3 + + " L" + ch + "," + ch2 + + shapeArc(x3, ch2, ch2, ch2, 180, 270, false).replace("M", "L") + + " L" + x7 + "," + t + + shapeArc(x7, ch2, ch2, ch2, 270, 450, false).replace("M", "L") + + " L" + x6 + "," + ch + + " L" + x6 + "," + y4 + + shapeArc(x5, y4, ch2, ch2, 0, 90, false).replace("M", "L") + + " L" + ch2 + "," + b + + shapeArc(ch2, y4, ch2, ch2, 90, 270, false).replace("M", "L") + + " z" + + " M" + x3 + "," + t + + shapeArc(x3, ch2, ch2, ch2, 270, 450, false).replace("M", "L") + + shapeArc(x3, x3 / 2, ch4, ch4, 90, 270, false).replace("M", "L") + + " L" + x4 + "," + ch2 + + " M" + x6 + "," + ch + + " L" + x3 + "," + ch + + " M" + ch + "," + y4 + + shapeArc(ch2, y4, ch2, ch2, 0, 270, false).replace("M", "L") + + shapeArc(ch2, (y4 + y3) / 2, ch4, ch4, 270, 450, false).replace("M", "L") + + " z" + + " M" + ch + "," + y4 + + " L" + ch + "," + y3; + } else if (shapType == "horizontalScroll") { + var y3, y4, y6, y7, y5, x3, x4; + y3 = ch + ch2; + y4 = ch + ch; + y6 = b - ch; + y7 = b - ch2; + y5 = y6 - ch2; + x3 = r - ch; + x4 = r - ch2; + + d_val = "M" + l + "," + y3 + + shapeArc(ch2, y3, ch2, ch2, 180, 270, false).replace("M", "L") + + " L" + x3 + "," + ch + + " L" + x3 + "," + ch2 + + shapeArc(x4, ch2, ch2, ch2, 180, 360, false).replace("M", "L") + + " L" + r + "," + y5 + + shapeArc(x4, y5, ch2, ch2, 0, 90, false).replace("M", "L") + + " L" + ch + "," + y6 + + " L" + ch + "," + y7 + + shapeArc(ch2, y7, ch2, ch2, 0, 180, false).replace("M", "L") + + " z" + + "M" + x4 + "," + ch + + shapeArc(x4, ch2, ch2, ch2, 90, -180, false).replace("M", "L") + + shapeArc((x3 + x4) / 2, ch2, ch4, ch4, 180, 0, false).replace("M", "L") + + " z" + + " M" + x4 + "," + ch + + " L" + x3 + "," + ch + + " M" + ch2 + "," + y4 + + " L" + ch2 + "," + y3 + + shapeArc(y3 / 2, y3, ch4, ch4, 180, 360, false).replace("M", "L") + + shapeArc(ch2, y3, ch2, ch2, 0, 180, false).replace("M", "L") + + " M" + ch + "," + y3 + + " L" + ch + "," + y6; + } + + result += ""; + + break; + case "wedgeEllipseCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var refr = slideFactor; + var sAdj1, adj1 = -20833 * refr; + var sAdj2, adj2 = 62500 * refr; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * refr; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * refr; + } + } + } + var d_val; + var cnstVal1 = 100000 * slideFactor; + var angVal1 = 11 * Math.PI / 180; + var ss = Math.min(w, h); + var dxPos, dyPos, xPos, yPos, sdx, sdy, pang, stAng, enAng, dx1, dy1, x1, y1, dx2, dy2, + x2, y2, stAng1, enAng1, swAng1, swAng2, swAng, + vc = h / 2, hc = w / 2; + dxPos = w * adj1 / cnstVal1; + dyPos = h * adj2 / cnstVal1; + xPos = hc + dxPos; + yPos = vc + dyPos; + sdx = dxPos * h; + sdy = dyPos * w; + pang = Math.atan(sdy / sdx); + stAng = pang + angVal1; + enAng = pang - angVal1; + console.log("dxPos: ", dxPos, "dyPos: ", dyPos) + dx1 = hc * Math.cos(stAng); + dy1 = vc * Math.sin(stAng); + dx2 = hc * Math.cos(enAng); + dy2 = vc * Math.sin(enAng); + if (dxPos >= 0) { + x1 = hc + dx1; + y1 = vc + dy1; + x2 = hc + dx2; + y2 = vc + dy2; + } else { + x1 = hc - dx1; + y1 = vc - dy1; + x2 = hc - dx2; + y2 = vc - dy2; + } + /* + //stAng = pang+angVal1; + //enAng = pang-angVal1; + //dx1 = hc*Math.cos(stAng); + //dy1 = vc*Math.sin(stAng); + x1 = hc+dx1; + y1 = vc+dy1; + dx2 = hc*Math.cos(enAng); + dy2 = vc*Math.sin(enAng); + x2 = hc+dx2; + y2 = vc+dy2; + stAng1 = Math.atan(dy1/dx1); + enAng1 = Math.atan(dy2/dx2); + swAng1 = enAng1-stAng1; + swAng2 = swAng1+2*Math.PI; + swAng = (swAng1 > 0)?swAng1:swAng2; + var stAng1Dg = stAng1*180/Math.PI; + var swAngDg = swAng*180/Math.PI; + var endAng = stAng1Dg + swAngDg; + */ + d_val = "M" + x1 + "," + y1 + + " L" + xPos + "," + yPos + + " L" + x2 + "," + y2 + + //" z" + + shapeArc(hc, vc, hc, vc, 0, 360, true);// + + //shapeArc(hc,vc,hc,vc,stAng1Dg,stAng1Dg+swAngDg,false).replace("M","L") + + //" z"; + result += ""; + + break; + case "wedgeRectCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var refr = slideFactor; + var sAdj1, adj1 = -20833 * refr; + var sAdj2, adj2 = 62500 * refr; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * refr; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * refr; + } + } + } + var d_val; + var cnstVal1 = 100000 * slideFactor; + var dxPos, dyPos, xPos, yPos, dx, dy, dq, ady, adq, dz, xg1, xg2, x1, x2, + yg1, yg2, y1, y2, t1, xl, t2, xt, t3, xr, t4, xb, t5, yl, t6, yt, t7, yr, t8, yb, + vc = h / 2, hc = w / 2; + dxPos = w * adj1 / cnstVal1; + dyPos = h * adj2 / cnstVal1; + xPos = hc + dxPos; + yPos = vc + dyPos; + dx = xPos - hc; + dy = yPos - vc; + dq = dxPos * h / w; + ady = Math.abs(dyPos); + adq = Math.abs(dq); + dz = ady - adq; + xg1 = (dxPos > 0) ? 7 : 2; + xg2 = (dxPos > 0) ? 10 : 5; + x1 = w * xg1 / 12; + x2 = w * xg2 / 12; + yg1 = (dyPos > 0) ? 7 : 2; + yg2 = (dyPos > 0) ? 10 : 5; + y1 = h * yg1 / 12; + y2 = h * yg2 / 12; + t1 = (dxPos > 0) ? 0 : xPos; + xl = (dz > 0) ? 0 : t1; + t2 = (dyPos > 0) ? x1 : xPos; + xt = (dz > 0) ? t2 : x1; + t3 = (dxPos > 0) ? xPos : w; + xr = (dz > 0) ? w : t3; + t4 = (dyPos > 0) ? xPos : x1; + xb = (dz > 0) ? t4 : x1; + t5 = (dxPos > 0) ? y1 : yPos; + yl = (dz > 0) ? y1 : t5; + t6 = (dyPos > 0) ? 0 : yPos; + yt = (dz > 0) ? t6 : 0; + t7 = (dxPos > 0) ? yPos : y1; + yr = (dz > 0) ? y1 : t7; + t8 = (dyPos > 0) ? yPos : h; + yb = (dz > 0) ? t8 : h; + + d_val = "M" + 0 + "," + 0 + + " L" + x1 + "," + 0 + + " L" + xt + "," + yt + + " L" + x2 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + y1 + + " L" + xr + "," + yr + + " L" + w + "," + y2 + + " L" + w + "," + h + + " L" + x2 + "," + h + + " L" + xb + "," + yb + + " L" + x1 + "," + h + + " L" + 0 + "," + h + + " L" + 0 + "," + y2 + + " L" + xl + "," + yl + + " L" + 0 + "," + y1 + + " z"; + + result += ""; + + break; + case "wedgeRoundRectCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var refr = slideFactor; + var sAdj1, adj1 = -20833 * refr; + var sAdj2, adj2 = 62500 * refr; + var sAdj3, adj3 = 16667 * refr; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * refr; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * refr; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * refr; + } + } + } + var d_val; + var cnstVal1 = 100000 * slideFactor; + var ss = Math.min(w, h); + var dxPos, dyPos, xPos, yPos, dq, ady, adq, dz, xg1, xg2, x1, x2, yg1, yg2, y1, y2, + t1, xl, t2, xt, t3, xr, t4, xb, t5, yl, t6, yt, t7, yr, t8, yb, u1, u2, v2, + vc = h / 2, hc = w / 2; + dxPos = w * adj1 / cnstVal1; + dyPos = h * adj2 / cnstVal1; + xPos = hc + dxPos; + yPos = vc + dyPos; + dq = dxPos * h / w; + ady = Math.abs(dyPos); + adq = Math.abs(dq); + dz = ady - adq; + xg1 = (dxPos > 0) ? 7 : 2; + xg2 = (dxPos > 0) ? 10 : 5; + x1 = w * xg1 / 12; + x2 = w * xg2 / 12; + yg1 = (dyPos > 0) ? 7 : 2; + yg2 = (dyPos > 0) ? 10 : 5; + y1 = h * yg1 / 12; + y2 = h * yg2 / 12; + t1 = (dxPos > 0) ? 0 : xPos; + xl = (dz > 0) ? 0 : t1; + t2 = (dyPos > 0) ? x1 : xPos; + xt = (dz > 0) ? t2 : x1; + t3 = (dxPos > 0) ? xPos : w; + xr = (dz > 0) ? w : t3; + t4 = (dyPos > 0) ? xPos : x1; + xb = (dz > 0) ? t4 : x1; + t5 = (dxPos > 0) ? y1 : yPos; + yl = (dz > 0) ? y1 : t5; + t6 = (dyPos > 0) ? 0 : yPos; + yt = (dz > 0) ? t6 : 0; + t7 = (dxPos > 0) ? yPos : y1; + yr = (dz > 0) ? y1 : t7; + t8 = (dyPos > 0) ? yPos : h; + yb = (dz > 0) ? t8 : h; + u1 = ss * adj3 / cnstVal1; + u2 = w - u1; + v2 = h - u1; + d_val = "M" + 0 + "," + u1 + + shapeArc(u1, u1, u1, u1, 180, 270, false).replace("M", "L") + + " L" + x1 + "," + 0 + + " L" + xt + "," + yt + + " L" + x2 + "," + 0 + + " L" + u2 + "," + 0 + + shapeArc(u2, u1, u1, u1, 270, 360, false).replace("M", "L") + + " L" + w + "," + y1 + + " L" + xr + "," + yr + + " L" + w + "," + y2 + + " L" + w + "," + v2 + + shapeArc(u2, v2, u1, u1, 0, 90, false).replace("M", "L") + + " L" + x2 + "," + h + + " L" + xb + "," + yb + + " L" + x1 + "," + h + + " L" + u1 + "," + h + + shapeArc(u1, v2, u1, u1, 90, 180, false).replace("M", "L") + + " L" + 0 + "," + y2 + + " L" + xl + "," + yl + + " L" + 0 + "," + y1 + + " z"; + result += ""; + + break; + case "accentBorderCallout1": + case "accentBorderCallout2": + case "accentBorderCallout3": + case "borderCallout1": + case "borderCallout2": + case "borderCallout3": + case "accentCallout1": + case "accentCallout2": + case "accentCallout3": + case "callout1": + case "callout2": + case "callout3": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var refr = slideFactor; + var sAdj1, adj1 = 18750 * refr; + var sAdj2, adj2 = -8333 * refr; + var sAdj3, adj3 = 18750 * refr; + var sAdj4, adj4 = -16667 * refr; + var sAdj5, adj5 = 100000 * refr; + var sAdj6, adj6 = -16667 * refr; + var sAdj7, adj7 = 112963 * refr; + var sAdj8, adj8 = -8333 * refr; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * refr; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * refr; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * refr; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * refr; + } else if (sAdj_name == "adj5") { + sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj5 = parseInt(sAdj5.substr(4)) * refr; + } else if (sAdj_name == "adj6") { + sAdj6 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj6 = parseInt(sAdj6.substr(4)) * refr; + } else if (sAdj_name == "adj7") { + sAdj7 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj7 = parseInt(sAdj7.substr(4)) * refr; + } else if (sAdj_name == "adj8") { + sAdj8 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj8 = parseInt(sAdj8.substr(4)) * refr; + } + } + } + var d_val; + var cnstVal1 = 100000 * refr; + var isBorder = true; + switch (shapType) { + case "borderCallout1": + case "callout1": + if (shapType == "borderCallout1") { + isBorder = true; + } else { + isBorder = false; + } + if (shapAdjst_ary === undefined) { + adj1 = 18750 * refr; + adj2 = -8333 * refr; + adj3 = 112500 * refr; + adj4 = -38333 * refr; + } + var y1, x1, y2, x2; + y1 = h * adj1 / cnstVal1; + x1 = w * adj2 / cnstVal1; + y2 = h * adj3 / cnstVal1; + x2 = w * adj4 / cnstVal1; + d_val = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + " M" + x1 + "," + y1 + + " L" + x2 + "," + y2; + break; + case "borderCallout2": + case "callout2": + if (shapType == "borderCallout2") { + isBorder = true; + } else { + isBorder = false; + } + if (shapAdjst_ary === undefined) { + adj1 = 18750 * refr; + adj2 = -8333 * refr; + adj3 = 18750 * refr; + adj4 = -16667 * refr; + + adj5 = 112500 * refr; + adj6 = -46667 * refr; + } + var y1, x1, y2, x2, y3, x3; + + y1 = h * adj1 / cnstVal1; + x1 = w * adj2 / cnstVal1; + y2 = h * adj3 / cnstVal1; + x2 = w * adj4 / cnstVal1; + + y3 = h * adj5 / cnstVal1; + x3 = w * adj6 / cnstVal1; + d_val = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + + " M" + x1 + "," + y1 + + " L" + x2 + "," + y2 + + + " L" + x3 + "," + y3 + + " L" + x2 + "," + y2; + + break; + case "borderCallout3": + case "callout3": + if (shapType == "borderCallout3") { + isBorder = true; + } else { + isBorder = false; + } + if (shapAdjst_ary === undefined) { + adj1 = 18750 * refr; + adj2 = -8333 * refr; + adj3 = 18750 * refr; + adj4 = -16667 * refr; + + adj5 = 100000 * refr; + adj6 = -16667 * refr; + + adj7 = 112963 * refr; + adj8 = -8333 * refr; + } + var y1, x1, y2, x2, y3, x3, y4, x4; + + y1 = h * adj1 / cnstVal1; + x1 = w * adj2 / cnstVal1; + y2 = h * adj3 / cnstVal1; + x2 = w * adj4 / cnstVal1; + + y3 = h * adj5 / cnstVal1; + x3 = w * adj6 / cnstVal1; + + y4 = h * adj7 / cnstVal1; + x4 = w * adj8 / cnstVal1; + d_val = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + + " M" + x1 + "," + y1 + + " L" + x2 + "," + y2 + + + " L" + x3 + "," + y3 + + + " L" + x4 + "," + y4 + + " L" + x3 + "," + y3 + + " L" + x2 + "," + y2; + break; + case "accentBorderCallout1": + case "accentCallout1": + if (shapType == "accentBorderCallout1") { + isBorder = true; + } else { + isBorder = false; + } + + if (shapAdjst_ary === undefined) { + adj1 = 18750 * refr; + adj2 = -8333 * refr; + adj3 = 112500 * refr; + adj4 = -38333 * refr; + } + var y1, x1, y2, x2; + y1 = h * adj1 / cnstVal1; + x1 = w * adj2 / cnstVal1; + y2 = h * adj3 / cnstVal1; + x2 = w * adj4 / cnstVal1; + d_val = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + + " M" + x1 + "," + y1 + + " L" + x2 + "," + y2 + + + " M" + x1 + "," + 0 + + " L" + x1 + "," + h; + break; + case "accentBorderCallout2": + case "accentCallout2": + if (shapType == "accentBorderCallout2") { + isBorder = true; + } else { + isBorder = false; + } + if (shapAdjst_ary === undefined) { + adj1 = 18750 * refr; + adj2 = -8333 * refr; + adj3 = 18750 * refr; + adj4 = -16667 * refr; + adj5 = 112500 * refr; + adj6 = -46667 * refr; + } + var y1, x1, y2, x2, y3, x3; + + y1 = h * adj1 / cnstVal1; + x1 = w * adj2 / cnstVal1; + y2 = h * adj3 / cnstVal1; + x2 = w * adj4 / cnstVal1; + y3 = h * adj5 / cnstVal1; + x3 = w * adj6 / cnstVal1; + d_val = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + + " M" + x1 + "," + y1 + + " L" + x2 + "," + y2 + + " L" + x3 + "," + y3 + + " L" + x2 + "," + y2 + + + " M" + x1 + "," + 0 + + " L" + x1 + "," + h; + + break; + case "accentBorderCallout3": + case "accentCallout3": + if (shapType == "accentBorderCallout3") { + isBorder = true; + } else { + isBorder = false; + } + isBorder = true; + if (shapAdjst_ary === undefined) { + adj1 = 18750 * refr; + adj2 = -8333 * refr; + adj3 = 18750 * refr; + adj4 = -16667 * refr; + adj5 = 100000 * refr; + adj6 = -16667 * refr; + adj7 = 112963 * refr; + adj8 = -8333 * refr; + } + var y1, x1, y2, x2, y3, x3, y4, x4; + + y1 = h * adj1 / cnstVal1; + x1 = w * adj2 / cnstVal1; + y2 = h * adj3 / cnstVal1; + x2 = w * adj4 / cnstVal1; + y3 = h * adj5 / cnstVal1; + x3 = w * adj6 / cnstVal1; + y4 = h * adj7 / cnstVal1; + x4 = w * adj8 / cnstVal1; + d_val = "M" + 0 + "," + 0 + + " L" + w + "," + 0 + + " L" + w + "," + h + + " L" + 0 + "," + h + + " z" + + + " M" + x1 + "," + y1 + + " L" + x2 + "," + y2 + + " L" + x3 + "," + y3 + + " L" + x4 + "," + y4 + + " L" + x3 + "," + y3 + + " L" + x2 + "," + y2 + + + " M" + x1 + "," + 0 + + " L" + x1 + "," + h; + break; + } + + //console.log("shapType: ", shapType, ",isBorder:", isBorder) + //if(isBorder){ + result += ""; + + //}else{ + // result += ""; + + //} + break; + case "leftRightRibbon": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var refr = slideFactor; + var sAdj1, adj1 = 50000 * refr; + var sAdj2, adj2 = 50000 * refr; + var sAdj3, adj3 = 16667 * refr; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * refr; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * refr; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * refr; + } + } + } + var d_val; + var cnstVal1 = 33333 * refr; + var cnstVal2 = 100000 * refr; + var cnstVal3 = 200000 * refr; + var cnstVal4 = 400000 * refr; + var ss = Math.min(w, h); + var a3, maxAdj1, a1, w1, maxAdj2, a2, x1, x4, dy1, dy2, ly1, ry4, ly2, ry3, ly4, ry1, + ly3, ry2, hR, x2, x3, y1, y2, wd32 = w / 32, vc = h / 2, hc = w / 2; + + a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3; + maxAdj1 = cnstVal2 - a3; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + w1 = hc - wd32; + maxAdj2 = cnstVal2 * w1 / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + x1 = ss * a2 / cnstVal2; + x4 = w - x1; + dy1 = h * a1 / cnstVal3; + dy2 = h * a3 / -cnstVal3; + ly1 = vc + dy2 - dy1; + ry4 = vc + dy1 - dy2; + ly2 = ly1 + dy1; + ry3 = h - ly2; + ly4 = ly2 * 2; + ry1 = h - ly4; + ly3 = ly4 - ly1; + ry2 = h - ly3; + hR = a3 * ss / cnstVal4; + x2 = hc - wd32; + x3 = hc + wd32; + y1 = ly1 + hR; + y2 = ry2 - hR; + + d_val = "M" + 0 + "," + ly2 + + "L" + x1 + "," + 0 + + "L" + x1 + "," + ly1 + + "L" + hc + "," + ly1 + + shapeArc(hc, y1, wd32, hR, 270, 450, false).replace("M", "L") + + shapeArc(hc, y2, wd32, hR, 270, 90, false).replace("M", "L") + + "L" + x4 + "," + ry2 + + "L" + x4 + "," + ry1 + + "L" + w + "," + ry3 + + "L" + x4 + "," + h + + "L" + x4 + "," + ry4 + + "L" + hc + "," + ry4 + + shapeArc(hc, ry4 - hR, wd32, hR, 90, 180, false).replace("M", "L") + + "L" + x2 + "," + ly3 + + "L" + x1 + "," + ly3 + + "L" + x1 + "," + ly4 + + " z" + + "M" + x3 + "," + y1 + + "L" + x3 + "," + ry2 + + "M" + x2 + "," + y2 + + "L" + x2 + "," + ly3; + + result += ""; + + break; + case "ribbon": + case "ribbon2": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 16667 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } + } + } + var d_val; + var cnstVal1 = 25000 * slideFactor; + var cnstVal2 = 33333 * slideFactor; + var cnstVal3 = 75000 * slideFactor; + var cnstVal4 = 100000 * slideFactor; + var cnstVal5 = 200000 * slideFactor; + var cnstVal6 = 400000 * slideFactor; + var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8, wd32 = w / 32; + var a1, a2, x10, dx2, x2, x9, x3, x8, x5, x6, x4, x7, y1, y2, y4, y3, hR, y6; + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1; + a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2; + x10 = r - wd8; + dx2 = w * a2 / cnstVal5; + x2 = hc - dx2; + x9 = hc + dx2; + x3 = x2 + wd32; + x8 = x9 - wd32; + x5 = x2 + wd8; + x6 = x9 - wd8; + x4 = x5 - wd32; + x7 = x6 + wd32; + hR = h * a1 / cnstVal6; + if (shapType == "ribbon2") { + var dy1, dy2, y7; + dy1 = h * a1 / cnstVal5; + y1 = b - dy1; + dy2 = h * a1 / cnstVal4; + y2 = b - dy2; + y4 = t + dy2; + y3 = (y4 + b) / 2; + y6 = b - hR;/////////////////// + y7 = y1 - hR; + + d_val = "M" + l + "," + b + + " L" + wd8 + "," + y3 + + " L" + l + "," + y4 + + " L" + x2 + "," + y4 + + " L" + x2 + "," + hR + + shapeArc(x3, hR, wd32, hR, 180, 270, false).replace("M", "L") + + " L" + x8 + "," + t + + shapeArc(x8, hR, wd32, hR, 270, 360, false).replace("M", "L") + + " L" + x9 + "," + y4 + + " L" + x9 + "," + y4 + + " L" + r + "," + y4 + + " L" + x10 + "," + y3 + + " L" + r + "," + b + + " L" + x7 + "," + b + + shapeArc(x7, y6, wd32, hR, 90, 270, false).replace("M", "L") + + " L" + x8 + "," + y1 + + shapeArc(x8, y7, wd32, hR, 90, -90, false).replace("M", "L") + + " L" + x3 + "," + y2 + + shapeArc(x3, y7, wd32, hR, 270, 90, false).replace("M", "L") + + " L" + x4 + "," + y1 + + shapeArc(x4, y6, wd32, hR, 270, 450, false).replace("M", "L") + + " z" + + " M" + x5 + "," + y2 + + " L" + x5 + "," + y6 + + "M" + x6 + "," + y6 + + " L" + x6 + "," + y2 + + "M" + x2 + "," + y7 + + " L" + x2 + "," + y4 + + "M" + x9 + "," + y4 + + " L" + x9 + "," + y7; + } else if (shapType == "ribbon") { + var y5; + y1 = h * a1 / cnstVal5; + y2 = h * a1 / cnstVal4; + y4 = b - y2; + y3 = y4 / 2; + y5 = b - hR; /////////////////////// + y6 = y2 - hR; + d_val = "M" + l + "," + t + + " L" + x4 + "," + t + + shapeArc(x4, hR, wd32, hR, 270, 450, false).replace("M", "L") + + " L" + x3 + "," + y1 + + shapeArc(x3, y6, wd32, hR, 270, 90, false).replace("M", "L") + + " L" + x8 + "," + y2 + + shapeArc(x8, y6, wd32, hR, 90, -90, false).replace("M", "L") + + " L" + x7 + "," + y1 + + shapeArc(x7, hR, wd32, hR, 90, 270, false).replace("M", "L") + + " L" + r + "," + t + + " L" + x10 + "," + y3 + + " L" + r + "," + y4 + + " L" + x9 + "," + y4 + + " L" + x9 + "," + y5 + + shapeArc(x8, y5, wd32, hR, 0, 90, false).replace("M", "L") + + " L" + x3 + "," + b + + shapeArc(x3, y5, wd32, hR, 90, 180, false).replace("M", "L") + + " L" + x2 + "," + y4 + + " L" + l + "," + y4 + + " L" + wd8 + "," + y3 + + " z" + + " M" + x5 + "," + hR + + " L" + x5 + "," + y2 + + "M" + x6 + "," + y2 + + " L" + x6 + "," + hR + + "M" + x2 + "," + y4 + + " L" + x2 + "," + y6 + + "M" + x9 + "," + y6 + + " L" + x9 + "," + y4; + } + result += ""; + + break; + case "doubleWave": + case "wave": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = (shapType == "doubleWave") ? 6250 * slideFactor : 12500 * slideFactor; + var sAdj2, adj2 = 0; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } + } + } + var d_val; + var cnstVal2 = -10000 * slideFactor; + var cnstVal3 = 50000 * slideFactor; + var cnstVal4 = 100000 * slideFactor; + var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8, wd32 = w / 32; + if (shapType == "doubleWave") { + var cnstVal1 = 12500 * slideFactor; + var a1, a2, y1, dy2, y2, y3, y4, y5, y6, of2, dx2, x2, dx8, x8, dx3, x3, dx4, x4, x5, x6, x7, x9, x15, x10, x11, x12, x13, x14; + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1; + a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2; + y1 = h * a1 / cnstVal4; + dy2 = y1 * 10 / 3; + y2 = y1 - dy2; + y3 = y1 + dy2; + y4 = b - y1; + y5 = y4 - dy2; + y6 = y4 + dy2; + of2 = w * a2 / cnstVal3; + dx2 = (of2 > 0) ? 0 : of2; + x2 = l - dx2; + dx8 = (of2 > 0) ? of2 : 0; + x8 = r - dx8; + dx3 = (dx2 + x8) / 6; + x3 = x2 + dx3; + dx4 = (dx2 + x8) / 3; + x4 = x2 + dx4; + x5 = (x2 + x8) / 2; + x6 = x5 + dx3; + x7 = (x6 + x8) / 2; + x9 = l + dx8; + x15 = r + dx2; + x10 = x9 + dx3; + x11 = x9 + dx4; + x12 = (x9 + x15) / 2; + x13 = x12 + dx3; + x14 = (x13 + x15) / 2; + + d_val = "M" + x2 + "," + y1 + + " C" + x3 + "," + y2 + " " + x4 + "," + y3 + " " + x5 + "," + y1 + + " C" + x6 + "," + y2 + " " + x7 + "," + y3 + " " + x8 + "," + y1 + + " L" + x15 + "," + y4 + + " C" + x14 + "," + y6 + " " + x13 + "," + y5 + " " + x12 + "," + y4 + + " C" + x11 + "," + y6 + " " + x10 + "," + y5 + " " + x9 + "," + y4 + + " z"; + } else if (shapType == "wave") { + var cnstVal5 = 20000 * slideFactor; + var a1, a2, y1, dy2, y2, y3, y4, y5, y6, of2, dx2, x2, dx5, x5, dx3, x3, x4, x6, x10, x7, x8; + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1; + a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2; + y1 = h * a1 / cnstVal4; + dy2 = y1 * 10 / 3; + y2 = y1 - dy2; + y3 = y1 + dy2; + y4 = b - y1; + y5 = y4 - dy2; + y6 = y4 + dy2; + of2 = w * a2 / cnstVal3; + dx2 = (of2 > 0) ? 0 : of2; + x2 = l - dx2; + dx5 = (of2 > 0) ? of2 : 0; + x5 = r - dx5; + dx3 = (dx2 + x5) / 3; + x3 = x2 + dx3; + x4 = (x3 + x5) / 2; + x6 = l + dx5; + x10 = r + dx2; + x7 = x6 + dx3; + x8 = (x7 + x10) / 2; + + d_val = "M" + x2 + "," + y1 + + " C" + x3 + "," + y2 + " " + x4 + "," + y3 + " " + x5 + "," + y1 + + " L" + x10 + "," + y4 + + " C" + x8 + "," + y6 + " " + x7 + "," + y5 + " " + x6 + "," + y4 + + " z"; + } + result += ""; + + break; + case "ellipseRibbon": + case "ellipseRibbon2": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var sAdj3, adj3 = 12500 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var d_val; + var cnstVal1 = 25000 * slideFactor; + var cnstVal3 = 75000 * slideFactor; + var cnstVal4 = 100000 * slideFactor; + var cnstVal5 = 200000 * slideFactor; + var hc = w / 2, t = 0, l = 0, b = h, r = w, wd8 = w / 8; + var a1, a2, q10, q11, q12, minAdj3, a3, dx2, x2, x3, x4, x5, x6, dy1, f1, q1, q2, + cx1, cx2, q1, dy3, q3, q4, q5, rh, q8, cx4, q9, cx5; + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal4) ? cnstVal4 : adj1; + a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2; + q10 = cnstVal4 - a1; + q11 = q10 / 2; + q12 = a1 - q11; + minAdj3 = (0 > q12) ? 0 : q12; + a3 = (adj3 < minAdj3) ? minAdj3 : (adj3 > a1) ? a1 : adj3; + dx2 = w * a2 / cnstVal5; + x2 = hc - dx2; + x3 = x2 + wd8; + x4 = r - x3; + x5 = r - x2; + x6 = r - wd8; + dy1 = h * a3 / cnstVal4; + f1 = 4 * dy1 / w; + q1 = x3 * x3 / w; + q2 = x3 - q1; + cx1 = x3 / 2; + cx2 = r - cx1; + q1 = h * a1 / cnstVal4; + dy3 = q1 - dy1; + q3 = x2 * x2 / w; + q4 = x2 - q3; + q5 = f1 * q4; + rh = b - q1; + q8 = dy1 * 14 / 16; + cx4 = x2 / 2; + q9 = f1 * cx4; + cx5 = r - cx4; + if (shapType == "ellipseRibbon") { + var y1, cy1, y3, q6, q7, cy3, y2, y5, y6, + cy4, cy6, y7, cy7, y8; + y1 = f1 * q2; + cy1 = f1 * cx1; + y3 = q5 + dy3; + q6 = dy1 + dy3 - y3; + q7 = q6 + dy1; + cy3 = q7 + dy3; + y2 = (q8 + rh) / 2; + y5 = q5 + rh; + y6 = y3 + rh; + cy4 = q9 + rh; + cy6 = cy3 + rh; + y7 = y1 + dy3; + cy7 = q1 + q1 - y7; + y8 = b - dy1; + // + d_val = "M" + l + "," + t + + " Q" + cx1 + "," + cy1 + " " + x3 + "," + y1 + + " L" + x2 + "," + y3 + + " Q" + hc + "," + cy3 + " " + x5 + "," + y3 + + " L" + x4 + "," + y1 + + " Q" + cx2 + "," + cy1 + " " + r + "," + t + + " L" + x6 + "," + y2 + + " L" + r + "," + rh + + " Q" + cx5 + "," + cy4 + " " + x5 + "," + y5 + + " L" + x5 + "," + y6 + + " Q" + hc + "," + cy6 + " " + x2 + "," + y6 + + " L" + x2 + "," + y5 + + " Q" + cx4 + "," + cy4 + " " + l + "," + rh + + " L" + wd8 + "," + y2 + + " z" + + "M" + x2 + "," + y5 + + " L" + x2 + "," + y3 + + "M" + x5 + "," + y3 + + " L" + x5 + "," + y5 + + "M" + x3 + "," + y1 + + " L" + x3 + "," + y7 + + "M" + x4 + "," + y7 + + " L" + x4 + "," + y1; + } else if (shapType == "ellipseRibbon2") { + var u1, y1, cu1, cy1, q3, q5, u3, y3, q6, q7, cu3, cy3, rh, q8, u2, y2, + u5, y5, u6, y6, cu4, cy4, cu6, cy6, u7, y7, cu7, cy7; + u1 = f1 * q2; + y1 = b - u1; + cu1 = f1 * cx1; + cy1 = b - cu1; + u3 = q5 + dy3; + y3 = b - u3; + q6 = dy1 + dy3 - u3; + q7 = q6 + dy1; + cu3 = q7 + dy3; + cy3 = b - cu3; + u2 = (q8 + rh) / 2; + y2 = b - u2; + u5 = q5 + rh; + y5 = b - u5; + u6 = u3 + rh; + y6 = b - u6; + cu4 = q9 + rh; + cy4 = b - cu4; + cu6 = cu3 + rh; + cy6 = b - cu6; + u7 = u1 + dy3; + y7 = b - u7; + cu7 = q1 + q1 - u7; + cy7 = b - cu7; + // + d_val = "M" + l + "," + b + + " L" + wd8 + "," + y2 + + " L" + l + "," + q1 + + " Q" + cx4 + "," + cy4 + " " + x2 + "," + y5 + + " L" + x2 + "," + y6 + + " Q" + hc + "," + cy6 + " " + x5 + "," + y6 + + " L" + x5 + "," + y5 + + " Q" + cx5 + "," + cy4 + " " + r + "," + q1 + + " L" + x6 + "," + y2 + + " L" + r + "," + b + + " Q" + cx2 + "," + cy1 + " " + x4 + "," + y1 + + " L" + x5 + "," + y3 + + " Q" + hc + "," + cy3 + " " + x2 + "," + y3 + + " L" + x3 + "," + y1 + + " Q" + cx1 + "," + cy1 + " " + l + "," + b + + " z" + + "M" + x2 + "," + y3 + + " L" + x2 + "," + y5 + + "M" + x5 + "," + y5 + + " L" + x5 + "," + y3 + + "M" + x3 + "," + y7 + + " L" + x3 + "," + y1 + + "M" + x4 + "," + y1 + + " L" + x4 + "," + y7; + } + result += ""; + + break; + case "line": + case "straightConnector1": + case "bentConnector4": + case "bentConnector5": + case "curvedConnector2": + case "curvedConnector3": + case "curvedConnector4": + case "curvedConnector5": + // if (isFlipV) { + // result += ""; + break; + case "leftArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 0.25;//0.5; + var sAdj2, sAdj2_val = 0.5; + var max_sAdj2_const = w / h; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000); + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000; + sAdj2_val = (sAdj2_val2) / max_sAdj2_const; + } + } + } + //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val); + + result += " "; + break; + case "downArrow": + case "flowChartOffpageConnector": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 0.25;//0.5; + var sAdj2, sAdj2_val = 0.5; + var max_sAdj2_const = h / w; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = parseInt(sAdj1.substr(4)) / 200000; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000; + sAdj2_val = (sAdj2_val2) / max_sAdj2_const; + } + } + } + + if (shapType == "flowChartOffpageConnector") { + sAdj1_val = 0.5; + sAdj2_val = 0.212; + } + result += " "; + break; + case "upArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 0.25;//0.5; + var sAdj2, sAdj2_val = 0.5; + var max_sAdj2_const = h / w; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = parseInt(sAdj1.substr(4)) / 200000; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000; + sAdj2_val = (sAdj2_val2) / max_sAdj2_const; + } + } + } + result += " "; + break; + case "leftRightArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 0.25; + var sAdj2, sAdj2_val = 0.25; + var max_sAdj2_const = w / h; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000); + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000; + sAdj2_val = (sAdj2_val2) / max_sAdj2_const; + } + } + } + //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val); + + result += " "; + break; + case "upDownArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, sAdj1_val = 0.25; + var sAdj2, sAdj2_val = 0.25; + var max_sAdj2_const = h / w; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + sAdj1_val = 0.5 - (parseInt(sAdj1.substr(4)) / 200000); + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + var sAdj2_val2 = parseInt(sAdj2.substr(4)) / 100000; + sAdj2_val = (sAdj2_val2) / max_sAdj2_const; + } + } + } + //console.log("w: "+w+"\nh: "+h+"\nsAdj1: "+sAdj1_val+"\nsAdj2: "+sAdj2_val); + + result += " "; + break; + case "quadArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 22500 * slideFactor; + var sAdj2, adj2 = 22500 * slideFactor; + var sAdj3, adj3 = 22500 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, a1, a2, a3, q1, x1, x2, dx2, x3, dx3, x4, x5, x6, y2, y3, y4, y5, y6, maxAdj1, maxAdj3; + var minWH = Math.min(w, h); + if (adj2 < 0) a2 = 0 + else if (adj2 > cnstVal1) a2 = cnstVal1 + else a2 = adj2 + maxAdj1 = 2 * a2; + if (adj1 < 0) a1 = 0 + else if (adj1 > maxAdj1) a1 = maxAdj1 + else a1 = adj1 + q1 = cnstVal2 - maxAdj1; + maxAdj3 = q1 / 2; + if (adj3 < 0) a3 = 0 + else if (adj3 > maxAdj3) a3 = maxAdj3 + else a3 = adj3 + x1 = minWH * a3 / cnstVal2; + dx2 = minWH * a2 / cnstVal2; + x2 = hc - dx2; + x5 = hc + dx2; + dx3 = minWH * a1 / cnstVal3; + x3 = hc - dx3; + x4 = hc + dx3; + x6 = w - x1; + y2 = vc - dx2; + y5 = vc + dx2; + y3 = vc - dx3; + y4 = vc + dx3; + y6 = h - x1; + var d_val = "M" + 0 + "," + vc + + " L" + x1 + "," + y2 + + " L" + x1 + "," + y3 + + " L" + x3 + "," + y3 + + " L" + x3 + "," + x1 + + " L" + x2 + "," + x1 + + " L" + hc + "," + 0 + + " L" + x5 + "," + x1 + + " L" + x4 + "," + x1 + + " L" + x4 + "," + y3 + + " L" + x6 + "," + y3 + + " L" + x6 + "," + y2 + + " L" + w + "," + vc + + " L" + x6 + "," + y5 + + " L" + x6 + "," + y4 + + " L" + x4 + "," + y4 + + " L" + x4 + "," + y6 + + " L" + x5 + "," + y6 + + " L" + hc + "," + h + + " L" + x2 + "," + y6 + + " L" + x3 + "," + y6 + + " L" + x3 + "," + y4 + + " L" + x1 + "," + y4 + + " L" + x1 + "," + y5 + " z"; + + result += ""; + + break; + case "leftRightUpArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, a1, a2, a3, q1, x1, x2, dx2, x3, dx3, x4, x5, x6, y2, dy2, y3, y4, y5, maxAdj1, maxAdj3; + var minWH = Math.min(w, h); + if (adj2 < 0) a2 = 0 + else if (adj2 > cnstVal1) a2 = cnstVal1 + else a2 = adj2 + maxAdj1 = 2 * a2; + if (adj1 < 0) a1 = 0 + else if (adj1 > maxAdj1) a1 = maxAdj1 + else a1 = adj1 + q1 = cnstVal2 - maxAdj1; + maxAdj3 = q1 / 2; + if (adj3 < 0) a3 = 0 + else if (adj3 > maxAdj3) a3 = maxAdj3 + else a3 = adj3 + x1 = minWH * a3 / cnstVal2; + dx2 = minWH * a2 / cnstVal2; + x2 = hc - dx2; + x5 = hc + dx2; + dx3 = minWH * a1 / cnstVal3; + x3 = hc - dx3; + x4 = hc + dx3; + x6 = w - x1; + dy2 = minWH * a2 / cnstVal1; + y2 = h - dy2; + y4 = h - dx2; + y3 = y4 - dx3; + y5 = y4 + dx3; + var d_val = "M" + 0 + "," + y4 + + " L" + x1 + "," + y2 + + " L" + x1 + "," + y3 + + " L" + x3 + "," + y3 + + " L" + x3 + "," + x1 + + " L" + x2 + "," + x1 + + " L" + hc + "," + 0 + + " L" + x5 + "," + x1 + + " L" + x4 + "," + x1 + + " L" + x4 + "," + y3 + + " L" + x6 + "," + y3 + + " L" + x6 + "," + y2 + + " L" + w + "," + y4 + + " L" + x6 + "," + h + + " L" + x6 + "," + y5 + + " L" + x1 + "," + y5 + + " L" + x1 + "," + h + " z"; + + result += ""; + + break; + case "leftUpArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, a1, a2, a3, x1, x2, dx4, dx3, x3, x4, x5, y2, y3, y4, y5, maxAdj1, maxAdj3; + var minWH = Math.min(w, h); + if (adj2 < 0) a2 = 0 + else if (adj2 > cnstVal1) a2 = cnstVal1 + else a2 = adj2 + maxAdj1 = 2 * a2; + if (adj1 < 0) a1 = 0 + else if (adj1 > maxAdj1) a1 = maxAdj1 + else a1 = adj1 + maxAdj3 = cnstVal2 - maxAdj1; + if (adj3 < 0) a3 = 0 + else if (adj3 > maxAdj3) a3 = maxAdj3 + else a3 = adj3 + x1 = minWH * a3 / cnstVal2; + dx2 = minWH * a2 / cnstVal1; + x2 = w - dx2; + y2 = h - dx2; + dx4 = minWH * a2 / cnstVal2; + x4 = w - dx4; + y4 = h - dx4; + dx3 = minWH * a1 / cnstVal3; + x3 = x4 - dx3; + x5 = x4 + dx3; + y3 = y4 - dx3; + y5 = y4 + dx3; + var d_val = "M" + 0 + "," + y4 + + " L" + x1 + "," + y2 + + " L" + x1 + "," + y3 + + " L" + x3 + "," + y3 + + " L" + x3 + "," + x1 + + " L" + x2 + "," + x1 + + " L" + x4 + "," + 0 + + " L" + w + "," + x1 + + " L" + x5 + "," + x1 + + " L" + x5 + "," + y5 + + " L" + x1 + "," + y5 + + " L" + x1 + "," + h + " z"; + + result += ""; + + break; + case "bentUpArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, a1, a2, a3, dx1, x1, dx2, x2, dx3, x3, x4, y1, y2, dy2; + var minWH = Math.min(w, h); + if (adj1 < 0) a1 = 0 + else if (adj1 > cnstVal1) a1 = cnstVal1 + else a1 = adj1 + if (adj2 < 0) a2 = 0 + else if (adj2 > cnstVal1) a2 = cnstVal1 + else a2 = adj2 + if (adj3 < 0) a3 = 0 + else if (adj3 > maxAdj3) a3 = maxAdj3 + else a3 = adj3 + y1 = minWH * a3 / cnstVal2; + dx1 = minWH * a2 / cnstVal1; + x1 = w - dx1; + dx3 = minWH * a2 / cnstVal2; + x3 = w - dx3; + dx2 = minWH * a1 / cnstVal3; + x2 = x3 - dx2; + x4 = x3 + dx2; + dy2 = minWH * a1 / cnstVal2; + y2 = h - dy2; + var d_val = "M" + 0 + "," + y2 + + " L" + x2 + "," + y2 + + " L" + x2 + "," + y1 + + " L" + x1 + "," + y1 + + " L" + x3 + "," + 0 + + " L" + w + "," + y1 + + " L" + x4 + "," + y1 + + " L" + x4 + "," + h + + " L" + 0 + "," + h + " z"; + + result += ""; + + break; + case "bentArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var sAdj4, adj4 = 43750 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * slideFactor; + } + } + } + var a1, a2, a3, a4, x3, x4, y3, y4, y5, y6, maxAdj1, maxAdj4; + var minWH = Math.min(w, h); + if (adj2 < 0) a2 = 0 + else if (adj2 > cnstVal1) a2 = cnstVal1 + else a2 = adj2 + maxAdj1 = 2 * a2; + if (adj1 < 0) a1 = 0 + else if (adj1 > maxAdj1) a1 = maxAdj1 + else a1 = adj1 + if (adj3 < 0) a3 = 0 + else if (adj3 > cnstVal1) a3 = cnstVal1 + else a3 = adj3 + var th, aw2, th2, dh2, ah, bw, bh, bs, bd, bd3, bd2, + th = minWH * a1 / cnstVal2; + aw2 = minWH * a2 / cnstVal2; + th2 = th / 2; + dh2 = aw2 - th2; + ah = minWH * a3 / cnstVal2; + bw = w - ah; + bh = h - dh2; + bs = (bw < bh) ? bw : bh; + maxAdj4 = cnstVal2 * bs / minWH; + if (adj4 < 0) a4 = 0 + else if (adj4 > maxAdj4) a4 = maxAdj4 + else a4 = adj4 + bd = minWH * a4 / cnstVal2; + bd3 = bd - th; + bd2 = (bd3 > 0) ? bd3 : 0; + x3 = th + bd2; + x4 = w - ah; + y3 = dh2 + th; + y4 = y3 + dh2; + y5 = dh2 + bd; + y6 = y3 + bd2; + + var d_val = "M" + 0 + "," + h + + " L" + 0 + "," + y5 + + shapeArc(bd, y5, bd, bd, 180, 270, false).replace("M", "L") + + " L" + x4 + "," + dh2 + + " L" + x4 + "," + 0 + + " L" + w + "," + aw2 + + " L" + x4 + "," + y4 + + " L" + x4 + "," + y3 + + " L" + x3 + "," + y3 + + shapeArc(x3, y6, bd2, bd2, 270, 180, false).replace("M", "L") + + " L" + th + "," + h + " z"; + + result += ""; + + break; + case "uturnArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var sAdj4, adj4 = 43750 * slideFactor; + var sAdj5, adj5 = 75000 * slideFactor; + var cnstVal1 = 25000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * slideFactor; + } else if (sAdj_name == "adj5") { + sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj5 = parseInt(sAdj5.substr(4)) * slideFactor; + } + } + } + var a1, a2, a3, a4, a5, q1, q2, q3, x3, x4, x5, x6, x7, x8, x9, y4, y5, minAdj5, maxAdj1, maxAdj3, maxAdj4; + var minWH = Math.min(w, h); + if (adj2 < 0) a2 = 0 + else if (adj2 > cnstVal1) a2 = cnstVal1 + else a2 = adj2 + maxAdj1 = 2 * a2; + if (adj1 < 0) a1 = 0 + else if (adj1 > maxAdj1) a1 = maxAdj1 + else a1 = adj1 + q2 = a1 * minWH / h; + q3 = cnstVal2 - q2; + maxAdj3 = q3 * h / minWH; + if (adj3 < 0) a3 = 0 + else if (adj3 > maxAdj3) a3 = maxAdj3 + else a3 = adj3 + q1 = a3 + a1; + minAdj5 = q1 * minWH / h; + if (adj5 < minAdj5) a5 = minAdj5 + else if (adj5 > cnstVal2) a5 = cnstVal2 + else a5 = adj5 + + var th, aw2, th2, dh2, ah, bw, bs, bd, bd3, bd2, + th = minWH * a1 / cnstVal2; + aw2 = minWH * a2 / cnstVal2; + th2 = th / 2; + dh2 = aw2 - th2; + y5 = h * a5 / cnstVal2; + ah = minWH * a3 / cnstVal2; + y4 = y5 - ah; + x9 = w - dh2; + bw = x9 / 2; + bs = (bw < y4) ? bw : y4; + maxAdj4 = cnstVal2 * bs / minWH; + if (adj4 < 0) a4 = 0 + else if (adj4 > maxAdj4) a4 = maxAdj4 + else a4 = adj4 + bd = minWH * a4 / cnstVal2; + bd3 = bd - th; + bd2 = (bd3 > 0) ? bd3 : 0; + x3 = th + bd2; + x8 = w - aw2; + x6 = x8 - aw2; + x7 = x6 + dh2; + x4 = x9 - bd; + x5 = x7 - bd2; + cx = (th + x7) / 2 + var cy = (y4 + th) / 2 + var d_val = "M" + 0 + "," + h + + " L" + 0 + "," + bd + + shapeArc(bd, bd, bd, bd, 180, 270, false).replace("M", "L") + + " L" + x4 + "," + 0 + + shapeArc(x4, bd, bd, bd, 270, 360, false).replace("M", "L") + + " L" + x9 + "," + y4 + + " L" + w + "," + y4 + + " L" + x8 + "," + y5 + + " L" + x6 + "," + y4 + + " L" + x7 + "," + y4 + + " L" + x7 + "," + x3 + + shapeArc(x5, x3, bd2, bd2, 0, -90, false).replace("M", "L") + + " L" + x3 + "," + th + + shapeArc(x3, x3, bd2, bd2, 270, 180, false).replace("M", "L") + + " L" + th + "," + h + " z"; + + result += ""; + + break; + case "stripedRightArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 50000 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + var cnstVal2 = 200000 * slideFactor; + var cnstVal3 = 84375 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } + } + } + var a1, a2, x4, x5, dx5, x6, dx6, y1, dy1, y2, maxAdj2, vc = h / 2; + var minWH = Math.min(w, h); + maxAdj2 = cnstVal3 * w / minWH; + if (adj1 < 0) a1 = 0 + else if (adj1 > cnstVal1) a1 = cnstVal1 + else a1 = adj1 + if (adj2 < 0) a2 = 0 + else if (adj2 > maxAdj2) a2 = maxAdj2 + else a2 = adj2 + x4 = minWH * 5 / 32; + dx5 = minWH * a2 / cnstVal1; + x5 = w - dx5; + dy1 = h * a1 / cnstVal2; + y1 = vc - dy1; + y2 = vc + dy1; + //dx6 = dy1*dx5/hd2; + //x6 = w-dx6; + var ssd8 = minWH / 8, + ssd16 = minWH / 16, + ssd32 = minWH / 32; + var d_val = "M" + 0 + "," + y1 + + " L" + ssd32 + "," + y1 + + " L" + ssd32 + "," + y2 + + " L" + 0 + "," + y2 + " z" + + " M" + ssd16 + "," + y1 + + " L" + ssd8 + "," + y1 + + " L" + ssd8 + "," + y2 + + " L" + ssd16 + "," + y2 + " z" + + " M" + x4 + "," + y1 + + " L" + x5 + "," + y1 + + " L" + x5 + "," + 0 + + " L" + w + "," + vc + + " L" + x5 + "," + h + + " L" + x5 + "," + y2 + + " L" + x4 + "," + y2 + " z"; + + result += ""; + + break; + case "notchedRightArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 50000 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + var cnstVal2 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } + } + } + var a1, a2, x1, x2, dx2, y1, dy1, y2, maxAdj2, vc = h / 2, hd2 = vc; + var minWH = Math.min(w, h); + maxAdj2 = cnstVal1 * w / minWH; + if (adj1 < 0) a1 = 0 + else if (adj1 > cnstVal1) a1 = cnstVal1 + else a1 = adj1 + if (adj2 < 0) a2 = 0 + else if (adj2 > maxAdj2) a2 = maxAdj2 + else a2 = adj2 + dx2 = minWH * a2 / cnstVal1; + x2 = w - dx2; + dy1 = h * a1 / cnstVal2; + y1 = vc - dy1; + y2 = vc + dy1; + x1 = dy1 * dx2 / hd2; + var d_val = "M" + 0 + "," + y1 + + " L" + x2 + "," + y1 + + " L" + x2 + "," + 0 + + " L" + w + "," + vc + + " L" + x2 + "," + h + + " L" + x2 + "," + y2 + + " L" + 0 + "," + y2 + + " L" + x1 + "," + vc + " z"; + + result += ""; + + break; + case "homePlate": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var a, x1, dx1, maxAdj, vc = h / 2; + var minWH = Math.min(w, h); + maxAdj = cnstVal1 * w / minWH; + if (adj < 0) a = 0 + else if (adj > maxAdj) a = maxAdj + else a = adj + dx1 = minWH * a / cnstVal1; + x1 = w - dx1; + var d_val = "M" + 0 + "," + 0 + + " L" + x1 + "," + 0 + + " L" + w + "," + vc + + " L" + x1 + "," + h + + " L" + 0 + "," + h + " z"; + + result += ""; + + break; + case "chevron": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 50000 * slideFactor; + var cnstVal1 = 100000 * slideFactor; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var a, x1, dx1, x2, maxAdj, vc = h / 2; + var minWH = Math.min(w, h); + maxAdj = cnstVal1 * w / minWH; + if (adj < 0) a = 0 + else if (adj > maxAdj) a = maxAdj + else a = adj + x1 = minWH * a / cnstVal1; + x2 = w - x1; + var d_val = "M" + 0 + "," + 0 + + " L" + x2 + "," + 0 + + " L" + w + "," + vc + + " L" + x2 + "," + h + + " L" + 0 + "," + h + + " L" + x1 + "," + vc + " z"; + + result += ""; + + + break; + case "rightArrowCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var sAdj4, adj4 = 64977 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * slideFactor; + } + } + } + var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, dx3, x3, x2, x1; + var vc = h / 2, r = w, b = h, l = 0, t = 0; + var ss = Math.min(w, h); + maxAdj2 = cnstVal1 * h / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + maxAdj1 = a2 * 2; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + maxAdj3 = cnstVal2 * w / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + q2 = a3 * ss / w; + maxAdj4 = cnstVal - q2; + a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4; + dy1 = ss * a2 / cnstVal2; + dy2 = ss * a1 / cnstVal3; + y1 = vc - dy1; + y2 = vc - dy2; + y3 = vc + dy2; + y4 = vc + dy1; + dx3 = ss * a3 / cnstVal2; + x3 = r - dx3; + x2 = w * a4 / cnstVal2; + x1 = x2 / 2; + var d_val = "M" + l + "," + t + + " L" + x2 + "," + t + + " L" + x2 + "," + y2 + + " L" + x3 + "," + y2 + + " L" + x3 + "," + y1 + + " L" + r + "," + vc + + " L" + x3 + "," + y4 + + " L" + x3 + "," + y3 + + " L" + x2 + "," + y3 + + " L" + x2 + "," + b + + " L" + l + "," + b + + " z"; + result += ""; + + break; + case "downArrowCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var sAdj4, adj4 = 64977 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * slideFactor; + } + } + } + var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dx1, dx2, x1, x2, x3, x4, dy3, y3, y2, y1; + var hc = w / 2, r = w, b = h, l = 0, t = 0; + var ss = Math.min(w, h); + + maxAdj2 = cnstVal1 * w / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + maxAdj1 = a2 * 2; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + maxAdj3 = cnstVal2 * h / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + q2 = a3 * ss / h; + maxAdj4 = cnstVal2 - q2; + a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4; + dx1 = ss * a2 / cnstVal2; + dx2 = ss * a1 / cnstVal3; + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc + dx2; + x4 = hc + dx1; + dy3 = ss * a3 / cnstVal2; + y3 = b - dy3; + y2 = h * a4 / cnstVal2; + y1 = y2 / 2; + var d_val = "M" + l + "," + t + + " L" + r + "," + t + + " L" + r + "," + y2 + + " L" + x3 + "," + y2 + + " L" + x3 + "," + y3 + + " L" + x4 + "," + y3 + + " L" + hc + "," + b + + " L" + x1 + "," + y3 + + " L" + x2 + "," + y3 + + " L" + x2 + "," + y2 + + " L" + l + "," + y2 + + " z"; + result += ""; + + break; + case "leftArrowCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var sAdj4, adj4 = 64977 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * slideFactor; + } + } + } + var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, x1, dx2, x2, x3; + var vc = h / 2, r = w, b = h, l = 0, t = 0; + var ss = Math.min(w, h); + + maxAdj2 = cnstVal1 * h / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + maxAdj1 = a2 * 2; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + maxAdj3 = cnstVal2 * w / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + q2 = a3 * ss / w; + maxAdj4 = cnstVal2 - q2; + a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4; + dy1 = ss * a2 / cnstVal2; + dy2 = ss * a1 / cnstVal3; + y1 = vc - dy1; + y2 = vc - dy2; + y3 = vc + dy2; + y4 = vc + dy1; + x1 = ss * a3 / cnstVal2; + dx2 = w * a4 / cnstVal2; + x2 = r - dx2; + x3 = (x2 + r) / 2; + var d_val = "M" + l + "," + vc + + " L" + x1 + "," + y1 + + " L" + x1 + "," + y2 + + " L" + x2 + "," + y2 + + " L" + x2 + "," + t + + " L" + r + "," + t + + " L" + r + "," + b + + " L" + x2 + "," + b + + " L" + x2 + "," + y3 + + " L" + x1 + "," + y3 + + " L" + x1 + "," + y4 + + " z"; + result += ""; + + break; + case "upArrowCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var sAdj4, adj4 = 64977 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * slideFactor; + } + } + } + var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dx1, dx2, x1, x2, x3, x4, y1, dy2, y2, y3; + var hc = w / 2, r = w, b = h, l = 0, t = 0; + var ss = Math.min(w, h); + maxAdj2 = cnstVal1 * w / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + maxAdj1 = a2 * 2; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + maxAdj3 = cnstVal2 * h / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + q2 = a3 * ss / h; + maxAdj4 = cnstVal2 - q2; + a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4; + dx1 = ss * a2 / cnstVal2; + dx2 = ss * a1 / cnstVal3; + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc + dx2; + x4 = hc + dx1; + y1 = ss * a3 / cnstVal2; + dy2 = h * a4 / cnstVal2; + y2 = b - dy2; + y3 = (y2 + b) / 2; + + var d_val = "M" + l + "," + y2 + + " L" + x2 + "," + y2 + + " L" + x2 + "," + y1 + + " L" + x1 + "," + y1 + + " L" + hc + "," + t + + " L" + x4 + "," + y1 + + " L" + x3 + "," + y1 + + " L" + x3 + "," + y2 + + " L" + r + "," + y2 + + " L" + r + "," + b + + " L" + l + "," + b + + " z"; + result += ""; + + break; + case "leftRightArrowCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 25000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var sAdj4, adj4 = 48123 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * slideFactor; + } + } + } + var maxAdj2, a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dy1, dy2, y1, y2, y3, y4, x1, x4, dx2, x2, x3; + var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0; + var ss = Math.min(w, h); + maxAdj2 = cnstVal1 * h / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + maxAdj1 = a2 * 2; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + maxAdj3 = cnstVal1 * w / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + q2 = a3 * ss / wd2; + maxAdj4 = cnstVal2 - q2; + a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4; + dy1 = ss * a2 / cnstVal2; + dy2 = ss * a1 / cnstVal3; + y1 = vc - dy1; + y2 = vc - dy2; + y3 = vc + dy2; + y4 = vc + dy1; + x1 = ss * a3 / cnstVal2; + x4 = r - x1; + dx2 = w * a4 / cnstVal3; + x2 = hc - dx2; + x3 = hc + dx2; + var d_val = "M" + l + "," + vc + + " L" + x1 + "," + y1 + + " L" + x1 + "," + y2 + + " L" + x2 + "," + y2 + + " L" + x2 + "," + t + + " L" + x3 + "," + t + + " L" + x3 + "," + y2 + + " L" + x4 + "," + y2 + + " L" + x4 + "," + y1 + + " L" + r + "," + vc + + " L" + x4 + "," + y4 + + " L" + x4 + "," + y3 + + " L" + x3 + "," + y3 + + " L" + x3 + "," + b + + " L" + x2 + "," + b + + " L" + x2 + "," + y3 + + " L" + x1 + "," + y3 + + " L" + x1 + "," + y4 + + " z"; + result += ""; + + break; + case "quadArrowCallout": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 18515 * slideFactor; + var sAdj2, adj2 = 18515 * slideFactor; + var sAdj3, adj3 = 18515 * slideFactor; + var sAdj4, adj4 = 48123 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = parseInt(sAdj4.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0; + var ss = Math.min(w, h); + var a2, maxAdj1, a1, maxAdj3, a3, q2, maxAdj4, a4, dx2, dx3, ah, dx1, dy1, x8, x2, x7, x3, x6, x4, x5, y8, y2, y7, y3, y6, y4, y5; + a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2; + maxAdj1 = a2 * 2; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + maxAdj3 = cnstVal1 - a2; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + q2 = a3 * 2; + maxAdj4 = cnstVal2 - q2; + a4 = (adj4 < a1) ? a1 : (adj4 > maxAdj4) ? maxAdj4 : adj4; + dx2 = ss * a2 / cnstVal2; + dx3 = ss * a1 / cnstVal3; + ah = ss * a3 / cnstVal2; + dx1 = w * a4 / cnstVal3; + dy1 = h * a4 / cnstVal3; + x8 = r - ah; + x2 = hc - dx1; + x7 = hc + dx1; + x3 = hc - dx2; + x6 = hc + dx2; + x4 = hc - dx3; + x5 = hc + dx3; + y8 = b - ah; + y2 = vc - dy1; + y7 = vc + dy1; + y3 = vc - dx2; + y6 = vc + dx2; + y4 = vc - dx3; + y5 = vc + dx3; + var d_val = "M" + l + "," + vc + + " L" + ah + "," + y3 + + " L" + ah + "," + y4 + + " L" + x2 + "," + y4 + + " L" + x2 + "," + y2 + + " L" + x4 + "," + y2 + + " L" + x4 + "," + ah + + " L" + x3 + "," + ah + + " L" + hc + "," + t + + " L" + x6 + "," + ah + + " L" + x5 + "," + ah + + " L" + x5 + "," + y2 + + " L" + x7 + "," + y2 + + " L" + x7 + "," + y4 + + " L" + x8 + "," + y4 + + " L" + x8 + "," + y3 + + " L" + r + "," + vc + + " L" + x8 + "," + y6 + + " L" + x8 + "," + y5 + + " L" + x7 + "," + y5 + + " L" + x7 + "," + y7 + + " L" + x5 + "," + y7 + + " L" + x5 + "," + y8 + + " L" + x6 + "," + y8 + + " L" + hc + "," + b + + " L" + x3 + "," + y8 + + " L" + x4 + "," + y8 + + " L" + x4 + "," + y7 + + " L" + x2 + "," + y7 + + " L" + x2 + "," + y5 + + " L" + ah + "," + y5 + + " L" + ah + "," + y6 + + " z"; + + result += ""; + + break; + case "curvedDownArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, wd2 = w / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90; + var ss = Math.min(w, h); + var maxAdj2, a2, a1, th, aw, q1, wR, q7, q8, q9, q10, q11, idy, maxAdj3, a3, ah, x3, q2, q3, q4, q5, dx, x5, x7, q6, dh, x4, x8, aw2, x6, y1, swAng, mswAng, iy, ix, q12, dang2, stAng, stAng2, swAng2, swAng3; + + maxAdj2 = cnstVal1 * w / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1; + th = ss * a1 / cnstVal2; + aw = ss * a2 / cnstVal2; + q1 = (th + aw) / 4; + wR = wd2 - q1; + q7 = wR * 2; + q8 = q7 * q7; + q9 = th * th; + q10 = q8 - q9; + q11 = Math.sqrt(q10); + idy = q11 * h / q7; + maxAdj3 = cnstVal2 * idy / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + ah = ss * adj3 / cnstVal2; + x3 = wR + th; + q2 = h * h; + q3 = ah * ah; + q4 = q2 - q3; + q5 = Math.sqrt(q4); + dx = q5 * wR / h; + x5 = wR + dx; + x7 = x3 + dx; + q6 = aw - th; + dh = q6 / 2; + x4 = x5 - dh; + x8 = x7 + dh; + aw2 = aw / 2; + x6 = r - aw2; + y1 = b - ah; + swAng = Math.atan(dx / ah); + var swAngDeg = swAng * 180 / Math.PI; + mswAng = -swAngDeg; + iy = b - idy; + ix = (wR + x3) / 2; + q12 = th / 2; + dang2 = Math.atan(q12 / idy); + var dang2Deg = dang2 * 180 / Math.PI; + stAng = c3d4 + swAngDeg; + stAng2 = c3d4 - dang2Deg; + swAng2 = dang2Deg - cd4; + swAng3 = cd4 + dang2Deg; + //var cX = x5 - Math.cos(stAng*Math.PI/180) * wR; + //var cY = y1 - Math.sin(stAng*Math.PI/180) * h; + + var d_val = "M" + x6 + "," + b + + " L" + x4 + "," + y1 + + " L" + x5 + "," + y1 + + shapeArc(wR, h, wR, h, stAng, (stAng + mswAng), false).replace("M", "L") + + " L" + x3 + "," + t + + shapeArc(x3, h, wR, h, c3d4, (c3d4 + swAngDeg), false).replace("M", "L") + + " L" + (x5 + th) + "," + y1 + + " L" + x8 + "," + y1 + + " z" + + "M" + x3 + "," + t + + shapeArc(x3, h, wR, h, stAng2, (stAng2 + swAng2), false).replace("M", "L") + + shapeArc(wR, h, wR, h, cd2, (cd2 + swAng3), false).replace("M", "L"); + + result += ""; + + break; + case "curvedLeftArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, hd2 = h / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90; + var ss = Math.min(w, h); + var maxAdj2, a2, a1, th, aw, q1, hR, q7, q8, q9, q10, q11, iDx, maxAdj3, a3, ah, y3, q2, q3, q4, q5, dy, y5, y7, q6, dh, y4, y8, aw2, y6, x1, swAng, mswAng, ix, iy, q12, dang2, swAng2, swAng3, stAng3; + + maxAdj2 = cnstVal1 * h / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1; + th = ss * a1 / cnstVal2; + aw = ss * a2 / cnstVal2; + q1 = (th + aw) / 4; + hR = hd2 - q1; + q7 = hR * 2; + q8 = q7 * q7; + q9 = th * th; + q10 = q8 - q9; + q11 = Math.sqrt(q10); + iDx = q11 * w / q7; + maxAdj3 = cnstVal2 * iDx / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + ah = ss * a3 / cnstVal2; + y3 = hR + th; + q2 = w * w; + q3 = ah * ah; + q4 = q2 - q3; + q5 = Math.sqrt(q4); + dy = q5 * hR / w; + y5 = hR + dy; + y7 = y3 + dy; + q6 = aw - th; + dh = q6 / 2; + y4 = y5 - dh; + y8 = y7 + dh; + aw2 = aw / 2; + y6 = b - aw2; + x1 = l + ah; + swAng = Math.atan(dy / ah); + mswAng = -swAng; + ix = l + iDx; + iy = (hR + y3) / 2; + q12 = th / 2; + dang2 = Math.atan(q12 / iDx); + swAng2 = dang2 - swAng; + swAng3 = swAng + dang2; + stAng3 = -dang2; + var swAngDg, swAng2Dg, swAng3Dg, stAng3dg; + swAngDg = swAng * 180 / Math.PI; + swAng2Dg = swAng2 * 180 / Math.PI; + swAng3Dg = swAng3 * 180 / Math.PI; + stAng3dg = stAng3 * 180 / Math.PI; + + var d_val = "M" + r + "," + y3 + + shapeArc(l, hR, w, hR, 0, -cd4, false).replace("M", "L") + + " L" + l + "," + t + + shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace("M", "L") + + " L" + r + "," + y3 + + shapeArc(l, y3, w, hR, 0, swAngDg, false).replace("M", "L") + + " L" + x1 + "," + y7 + + " L" + x1 + "," + y8 + + " L" + l + "," + y6 + + " L" + x1 + "," + y4 + + " L" + x1 + "," + y5 + + shapeArc(l, hR, w, hR, swAngDg, (swAngDg + swAng2Dg), false).replace("M", "L") + + shapeArc(l, hR, w, hR, 0, -cd4, false).replace("M", "L") + + shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace("M", "L"); + + result += ""; + + break; + case "curvedRightArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, hd2 = h / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90; + var ss = Math.min(w, h); + var maxAdj2, a2, a1, th, aw, q1, hR, q7, q8, q9, q10, q11, iDx, maxAdj3, a3, ah, y3, q2, q3, q4, q5, dy, + y5, y7, q6, dh, y4, y8, aw2, y6, x1, swAng, stAng, mswAng, ix, iy, q12, dang2, swAng2, swAng3, stAng3; + + maxAdj2 = cnstVal1 * h / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1; + th = ss * a1 / cnstVal2; + aw = ss * a2 / cnstVal2; + q1 = (th + aw) / 4; + hR = hd2 - q1; + q7 = hR * 2; + q8 = q7 * q7; + q9 = th * th; + q10 = q8 - q9; + q11 = Math.sqrt(q10); + iDx = q11 * w / q7; + maxAdj3 = cnstVal2 * iDx / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + ah = ss * a3 / cnstVal2; + y3 = hR + th; + q2 = w * w; + q3 = ah * ah; + q4 = q2 - q3; + q5 = Math.sqrt(q4); + dy = q5 * hR / w; + y5 = hR + dy; + y7 = y3 + dy; + q6 = aw - th; + dh = q6 / 2; + y4 = y5 - dh; + y8 = y7 + dh; + aw2 = aw / 2; + y6 = b - aw2; + x1 = r - ah; + swAng = Math.atan(dy / ah); + stAng = Math.PI + 0 - swAng; + mswAng = -swAng; + ix = r - iDx; + iy = (hR + y3) / 2; + q12 = th / 2; + dang2 = Math.atan(q12 / iDx); + swAng2 = dang2 - Math.PI / 2; + swAng3 = Math.PI / 2 + dang2; + stAng3 = Math.PI - dang2; + + var stAngDg, mswAngDg, swAngDg, swAng2dg; + stAngDg = stAng * 180 / Math.PI; + mswAngDg = mswAng * 180 / Math.PI; + swAngDg = swAng * 180 / Math.PI; + swAng2dg = swAng2 * 180 / Math.PI; + + var d_val = "M" + l + "," + hR + + shapeArc(w, hR, w, hR, cd2, cd2 + mswAngDg, false).replace("M", "L") + + " L" + x1 + "," + y5 + + " L" + x1 + "," + y4 + + " L" + r + "," + y6 + + " L" + x1 + "," + y8 + + " L" + x1 + "," + y7 + + shapeArc(w, y3, w, hR, stAngDg, stAngDg + swAngDg, false).replace("M", "L") + + " L" + l + "," + hR + + shapeArc(w, hR, w, hR, cd2, cd2 + cd4, false).replace("M", "L") + + " L" + r + "," + th + + shapeArc(w, y3, w, hR, c3d4, c3d4 + swAng2dg, false).replace("M", "L") + ""; + result += ""; + + break; + case "curvedUpArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 25000 * slideFactor; + var sAdj2, adj2 = 50000 * slideFactor; + var sAdj3, adj3 = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * slideFactor; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, wd2 = w / 2, r = w, b = h, l = 0, t = 0, c3d4 = 270, cd2 = 180, cd4 = 90; + var ss = Math.min(w, h); + var maxAdj2, a2, a1, th, aw, q1, wR, q7, q8, q9, q10, q11, idy, maxAdj3, a3, ah, x3, q2, q3, q4, q5, dx, x5, x7, q6, dh, x4, x8, aw2, x6, y1, swAng, mswAng, iy, ix, q12, dang2, swAng2, mswAng2, stAng3, swAng3, stAng2; + + maxAdj2 = cnstVal1 * w / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1; + th = ss * a1 / cnstVal2; + aw = ss * a2 / cnstVal2; + q1 = (th + aw) / 4; + wR = wd2 - q1; + q7 = wR * 2; + q8 = q7 * q7; + q9 = th * th; + q10 = q8 - q9; + q11 = Math.sqrt(q10); + idy = q11 * h / q7; + maxAdj3 = cnstVal2 * idy / ss; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + ah = ss * adj3 / cnstVal2; + x3 = wR + th; + q2 = h * h; + q3 = ah * ah; + q4 = q2 - q3; + q5 = Math.sqrt(q4); + dx = q5 * wR / h; + x5 = wR + dx; + x7 = x3 + dx; + q6 = aw - th; + dh = q6 / 2; + x4 = x5 - dh; + x8 = x7 + dh; + aw2 = aw / 2; + x6 = r - aw2; + y1 = t + ah; + swAng = Math.atan(dx / ah); + mswAng = -swAng; + iy = t + idy; + ix = (wR + x3) / 2; + q12 = th / 2; + dang2 = Math.atan(q12 / idy); + swAng2 = dang2 - swAng; + mswAng2 = -swAng2; + stAng3 = Math.PI / 2 - swAng; + swAng3 = swAng + dang2; + stAng2 = Math.PI / 2 - dang2; + + var stAng2dg, swAng2dg, swAngDg, swAng2dg; + stAng2dg = stAng2 * 180 / Math.PI; + swAng2dg = swAng2 * 180 / Math.PI; + stAng3dg = stAng3 * 180 / Math.PI; + swAngDg = swAng * 180 / Math.PI; + + var d_val = //"M" + ix + "," +iy + + shapeArc(wR, 0, wR, h, stAng2dg, stAng2dg + swAng2dg, false) + //.replace("M","L") + + " L" + x5 + "," + y1 + + " L" + x4 + "," + y1 + + " L" + x6 + "," + t + + " L" + x8 + "," + y1 + + " L" + x7 + "," + y1 + + shapeArc(x3, 0, wR, h, stAng3dg, stAng3dg + swAngDg, false).replace("M", "L") + + " L" + wR + "," + b + + shapeArc(wR, 0, wR, h, cd4, cd2, false).replace("M", "L") + + " L" + th + "," + t + + shapeArc(x3, 0, wR, h, cd2, cd4, false).replace("M", "L") + + ""; + result += ""; + + break; + case "mathDivide": + case "mathEqual": + case "mathMinus": + case "mathMultiply": + case "mathNotEqual": + case "mathPlus": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1; + var sAdj2, adj2; + var sAdj3, adj3; + if (shapAdjst_ary !== undefined) { + if (shapAdjst_ary.constructor === Array) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)); + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)); + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = parseInt(sAdj3.substr(4)); + } + } + } else { + sAdj1 = getTextByPathList(shapAdjst_ary, ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)); + } + } + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var cnstVal3 = 200000 * slideFactor; + var dVal; + var hc = w / 2, vc = h / 2, hd2 = h / 2; + if (shapType == "mathNotEqual") { + if (shapAdjst_ary === undefined) { + adj1 = 23520 * slideFactor; + adj2 = 110 * Math.PI / 180; + adj3 = 11760 * slideFactor; + } else { + adj1 = adj1 * slideFactor; + adj2 = (adj2 / 60000) * Math.PI / 180; + adj3 = adj3 * slideFactor; + } + var a1, crAng, a2a1, maxAdj3, a3, dy1, dy2, dx1, x1, x8, y2, y3, y1, y4, + cadj2, xadj2, len, bhw, bhw2, x7, dx67, x6, dx57, x5, dx47, x4, dx37, + x3, dx27, x2, rx7, rx6, rx5, rx4, rx3, rx2, dx7, rxt, lxt, rx, lx, + dy3, dy4, ry, ly, dlx, drx, dly, dry, xC1, xC2, yC1, yC2, yC3, yC4; + var angVal1 = 70 * Math.PI / 180, angVal2 = 110 * Math.PI / 180; + var cnstVal4 = 73490 * slideFactor; + //var cd4 = 90; + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1; + crAng = (adj2 < angVal1) ? angVal1 : (adj2 > angVal2) ? angVal2 : adj2; + a2a1 = a1 * 2; + maxAdj3 = cnstVal2 - a2a1; + a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + dy1 = h * a1 / cnstVal2; + dy2 = h * a3 / cnstVal3; + dx1 = w * cnstVal4 / cnstVal3; + x1 = hc - dx1; + x8 = hc + dx1; + y2 = vc - dy2; + y3 = vc + dy2; + y1 = y2 - dy1; + y4 = y3 + dy1; + cadj2 = crAng - Math.PI / 2; + xadj2 = hd2 * Math.tan(cadj2); + len = Math.sqrt(xadj2 * xadj2 + hd2 * hd2); + bhw = len * dy1 / hd2; + bhw2 = bhw / 2; + x7 = hc + xadj2 - bhw2; + dx67 = xadj2 * y1 / hd2; + x6 = x7 - dx67; + dx57 = xadj2 * y2 / hd2; + x5 = x7 - dx57; + dx47 = xadj2 * y3 / hd2; + x4 = x7 - dx47; + dx37 = xadj2 * y4 / hd2; + x3 = x7 - dx37; + dx27 = xadj2 * 2; + x2 = x7 - dx27; + rx7 = x7 + bhw; + rx6 = x6 + bhw; + rx5 = x5 + bhw; + rx4 = x4 + bhw; + rx3 = x3 + bhw; + rx2 = x2 + bhw; + dx7 = dy1 * hd2 / len; + rxt = x7 + dx7; + lxt = rx7 - dx7; + rx = (cadj2 > 0) ? rxt : rx7; + lx = (cadj2 > 0) ? x7 : lxt; + dy3 = dy1 * xadj2 / len; + dy4 = -dy3; + ry = (cadj2 > 0) ? dy3 : 0; + ly = (cadj2 > 0) ? 0 : dy4; + dlx = w - rx; + drx = w - lx; + dly = h - ry; + dry = h - ly; + xC1 = (rx + lx) / 2; + xC2 = (drx + dlx) / 2; + yC1 = (ry + ly) / 2; + yC2 = (y1 + y2) / 2; + yC3 = (y3 + y4) / 2; + yC4 = (dry + dly) / 2; + + dVal = "M" + x1 + "," + y1 + + " L" + x6 + "," + y1 + + " L" + lx + "," + ly + + " L" + rx + "," + ry + + " L" + rx6 + "," + y1 + + " L" + x8 + "," + y1 + + " L" + x8 + "," + y2 + + " L" + rx5 + "," + y2 + + " L" + rx4 + "," + y3 + + " L" + x8 + "," + y3 + + " L" + x8 + "," + y4 + + " L" + rx3 + "," + y4 + + " L" + drx + "," + dry + + " L" + dlx + "," + dly + + " L" + x3 + "," + y4 + + " L" + x1 + "," + y4 + + " L" + x1 + "," + y3 + + " L" + x4 + "," + y3 + + " L" + x5 + "," + y2 + + " L" + x1 + "," + y2 + + " z"; + } else if (shapType == "mathDivide") { + if (shapAdjst_ary === undefined) { + adj1 = 23520 * slideFactor; + adj2 = 5880 * slideFactor; + adj3 = 11760 * slideFactor; + } else { + adj1 = adj1 * slideFactor; + adj2 = adj2 * slideFactor; + adj3 = adj3 * slideFactor; + } + var a1, ma1, ma3h, ma3w, maxAdj3, a3, m4a3, maxAdj2, a2, dy1, yg, rad, dx1, + y3, y4, a, y2, y1, y5, x1, x3, x2; + var cnstVal4 = 1000 * slideFactor; + var cnstVal5 = 36745 * slideFactor; + var cnstVal6 = 73490 * slideFactor; + a1 = (adj1 < cnstVal4) ? cnstVal4 : (adj1 > cnstVal5) ? cnstVal5 : adj1; + ma1 = -a1; + ma3h = (cnstVal6 + ma1) / 4; + ma3w = cnstVal5 * w / h; + maxAdj3 = (ma3h < ma3w) ? ma3h : ma3w; + a3 = (adj3 < cnstVal4) ? cnstVal4 : (adj3 > maxAdj3) ? maxAdj3 : adj3; + m4a3 = -4 * a3; + maxAdj2 = cnstVal6 + m4a3 - a1; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + dy1 = h * a1 / cnstVal3; + yg = h * a2 / cnstVal2; + rad = h * a3 / cnstVal2; + dx1 = w * cnstVal6 / cnstVal3; + y3 = vc - dy1; + y4 = vc + dy1; + a = yg + rad; + y2 = y3 - a; + y1 = y2 - rad; + y5 = h - y1; + x1 = hc - dx1; + x3 = hc + dx1; + x2 = hc - rad; + var cd4 = 90, c3d4 = 270; + var cX1 = hc - Math.cos(c3d4 * Math.PI / 180) * rad; + var cY1 = y1 - Math.sin(c3d4 * Math.PI / 180) * rad; + var cX2 = hc - Math.cos(Math.PI / 2) * rad; + var cY2 = y5 - Math.sin(Math.PI / 2) * rad; + dVal = "M" + hc + "," + y1 + + shapeArc(cX1, cY1, rad, rad, c3d4, c3d4 + 360, false).replace("M", "L") + + " z" + + " M" + hc + "," + y5 + + shapeArc(cX2, cY2, rad, rad, cd4, cd4 + 360, false).replace("M", "L") + + " z" + + " M" + x1 + "," + y3 + + " L" + x3 + "," + y3 + + " L" + x3 + "," + y4 + + " L" + x1 + "," + y4 + + " z"; + } else if (shapType == "mathEqual") { + if (shapAdjst_ary === undefined) { + adj1 = 23520 * slideFactor; + adj2 = 11760 * slideFactor; + } else { + adj1 = adj1 * slideFactor; + adj2 = adj2 * slideFactor; + } + var cnstVal5 = 36745 * slideFactor; + var cnstVal6 = 73490 * slideFactor; + var a1, a2a1, mAdj2, a2, dy1, dy2, dx1, y2, y3, y1, y4, x1, x2, yC1, yC2; + + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1; + a2a1 = a1 * 2; + mAdj2 = cnstVal2 - a2a1; + a2 = (adj2 < 0) ? 0 : (adj2 > mAdj2) ? mAdj2 : adj2; + dy1 = h * a1 / cnstVal2; + dy2 = h * a2 / cnstVal3; + dx1 = w * cnstVal6 / cnstVal3; + y2 = vc - dy2; + y3 = vc + dy2; + y1 = y2 - dy1; + y4 = y3 + dy1; + x1 = hc - dx1; + x2 = hc + dx1; + yC1 = (y1 + y2) / 2; + yC2 = (y3 + y4) / 2; + dVal = "M" + x1 + "," + y1 + + " L" + x2 + "," + y1 + + " L" + x2 + "," + y2 + + " L" + x1 + "," + y2 + + " z" + + "M" + x1 + "," + y3 + + " L" + x2 + "," + y3 + + " L" + x2 + "," + y4 + + " L" + x1 + "," + y4 + + " z"; + } else if (shapType == "mathMinus") { + if (shapAdjst_ary === undefined) { + adj1 = 23520 * slideFactor; + } else { + adj1 = adj1 * slideFactor; + } + var cnstVal6 = 73490 * slideFactor; + var a1, dy1, dx1, y1, y2, x1, x2; + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1; + dy1 = h * a1 / cnstVal3; + dx1 = w * cnstVal6 / cnstVal3; + y1 = vc - dy1; + y2 = vc + dy1; + x1 = hc - dx1; + x2 = hc + dx1; + + dVal = "M" + x1 + "," + y1 + + " L" + x2 + "," + y1 + + " L" + x2 + "," + y2 + + " L" + x1 + "," + y2 + + " z"; + } else if (shapType == "mathMultiply") { + if (shapAdjst_ary === undefined) { + adj1 = 23520 * slideFactor; + } else { + adj1 = adj1 * slideFactor; + } + var cnstVal6 = 51965 * slideFactor; + var a1, th, a, sa, ca, ta, dl, rw, lM, xM, yM, dxAM, dyAM, + xA, yA, xB, yB, xBC, yBC, yC, xD, xE, yFE, xFE, xF, xL, yG, yH, yI, xC2, yC3; + var ss = Math.min(w, h); + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1; + th = ss * a1 / cnstVal2; + a = Math.atan(h / w); + sa = 1 * Math.sin(a); + ca = 1 * Math.cos(a); + ta = 1 * Math.tan(a); + dl = Math.sqrt(w * w + h * h); + rw = dl * cnstVal6 / cnstVal2; + lM = dl - rw; + xM = ca * lM / 2; + yM = sa * lM / 2; + dxAM = sa * th / 2; + dyAM = ca * th / 2; + xA = xM - dxAM; + yA = yM + dyAM; + xB = xM + dxAM; + yB = yM - dyAM; + xBC = hc - xB; + yBC = xBC * ta; + yC = yBC + yB; + xD = w - xB; + xE = w - xA; + yFE = vc - yA; + xFE = yFE / ta; + xF = xE - xFE; + xL = xA + xFE; + yG = h - yA; + yH = h - yB; + yI = h - yC; + xC2 = w - xM; + yC3 = h - yM; + + dVal = "M" + xA + "," + yA + + " L" + xB + "," + yB + + " L" + hc + "," + yC + + " L" + xD + "," + yB + + " L" + xE + "," + yA + + " L" + xF + "," + vc + + " L" + xE + "," + yG + + " L" + xD + "," + yH + + " L" + hc + "," + yI + + " L" + xB + "," + yH + + " L" + xA + "," + yG + + " L" + xL + "," + vc + + " z"; + } else if (shapType == "mathPlus") { + if (shapAdjst_ary === undefined) { + adj1 = 23520 * slideFactor; + } else { + adj1 = adj1 * slideFactor; + } + var cnstVal6 = 73490 * slideFactor; + var ss = Math.min(w, h); + var a1, dx1, dy1, dx2, x1, x2, x3, x4, y1, y2, y3, y4; + + a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1; + dx1 = w * cnstVal6 / cnstVal3; + dy1 = h * cnstVal6 / cnstVal3; + dx2 = ss * a1 / cnstVal3; + x1 = hc - dx1; + x2 = hc - dx2; + x3 = hc + dx2; + x4 = hc + dx1; + y1 = vc - dy1; + y2 = vc - dx2; + y3 = vc + dx2; + y4 = vc + dy1; + + dVal = "M" + x1 + "," + y2 + + " L" + x2 + "," + y2 + + " L" + x2 + "," + y1 + + " L" + x3 + "," + y1 + + " L" + x3 + "," + y2 + + " L" + x4 + "," + y2 + + " L" + x4 + "," + y3 + + " L" + x3 + "," + y3 + + " L" + x3 + "," + y4 + + " L" + x2 + "," + y4 + + " L" + x2 + "," + y3 + + " L" + x1 + "," + y3 + + " z"; + } + result += ""; + + //console.log(shapType); + break; + case "can": + case "flowChartMagneticDisk": + case "flowChartMagneticDrum": + var shapAdjst = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd", "attrs", "fmla"]); + var adj = 25000 * slideFactor; + var cnstVal1 = 50000 * slideFactor; + var cnstVal2 = 200000 * slideFactor; + if (shapAdjst !== undefined) { + adj = parseInt(shapAdjst.substr(4)) * slideFactor; + } + var ss = Math.min(w, h); + var maxAdj, a, y1, y2, y3, dVal; + if (shapType == "flowChartMagneticDisk" || shapType == "flowChartMagneticDrum") { + adj = 50000 * slideFactor; + } + maxAdj = cnstVal1 * h / ss; + a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj; + y1 = ss * a / cnstVal2; + y2 = y1 + y1; + y3 = h - y1; + var cd2 = 180, wd2 = w / 2; + + var tranglRott = ""; + if (shapType == "flowChartMagneticDrum") { + tranglRott = "transform='rotate(90 " + w / 2 + "," + h / 2 + ")'"; + } + dVal = shapeArc(wd2, y1, wd2, y1, 0, cd2, false) + + shapeArc(wd2, y1, wd2, y1, cd2, cd2 + cd2, false).replace("M", "L") + + " L" + w + "," + y3 + + shapeArc(wd2, y3, wd2, y1, 0, cd2, false).replace("M", "L") + + " L" + 0 + "," + y1; + + result += ""; + + break; + case "swooshArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var refr = slideFactor; + var sAdj1, adj1 = 25000 * refr; + var sAdj2, adj2 = 16667 * refr; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * refr; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = parseInt(sAdj2.substr(4)) * refr; + } + } + } + var cnstVal1 = 1 * refr; + var cnstVal2 = 70000 * refr; + var cnstVal3 = 75000 * refr; + var cnstVal4 = 100000 * refr; + var ss = Math.min(w, h); + var ssd8 = ss / 8; + var hd6 = h / 6; + + var a1, maxAdj2, a2, ad1, ad2, xB, yB, alfa, dx0, xC, dx1, yF, xF, xE, yE, dy2, dy22, dy3, yD, dy4, yP1, xP1, dy5, yP2, xP2; + + a1 = (adj1 < cnstVal1) ? cnstVal1 : (adj1 > cnstVal3) ? cnstVal3 : adj1; + maxAdj2 = cnstVal2 * w / ss; + a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2; + ad1 = h * a1 / cnstVal4; + ad2 = ss * a2 / cnstVal4; + xB = w - ad2; + yB = ssd8; + alfa = (Math.PI / 2) / 14; + dx0 = ssd8 * Math.tan(alfa); + xC = xB - dx0; + dx1 = ad1 * Math.tan(alfa); + yF = yB + ad1; + xF = xB + dx1; + xE = xF + dx0; + yE = yF + ssd8; + dy2 = yE - 0; + dy22 = dy2 / 2; + dy3 = h / 20; + yD = dy22 - dy3; + dy4 = hd6; + yP1 = hd6 + dy4; + xP1 = w / 6; + dy5 = hd6 / 2; + yP2 = yF + dy5; + xP2 = w / 4; + + var dVal = "M" + 0 + "," + h + + " Q" + xP1 + "," + yP1 + " " + xB + "," + yB + + " L" + xC + "," + 0 + + " L" + w + "," + yD + + " L" + xE + "," + yE + + " L" + xF + "," + yF + + " Q" + xP2 + "," + yP2 + " " + 0 + "," + h + + " z"; + + result += ""; + + break; + case "circularArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 12500 * slideFactor; + var sAdj2, adj2 = (1142319 / 60000) * Math.PI / 180; + var sAdj3, adj3 = (20457681 / 60000) * Math.PI / 180; + var sAdj4, adj4 = (10800000 / 60000) * Math.PI / 180; + var sAdj5, adj5 = 12500 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = (parseInt(sAdj2.substr(4)) / 60000) * Math.PI / 180; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = (parseInt(sAdj3.substr(4)) / 60000) * Math.PI / 180; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = (parseInt(sAdj4.substr(4)) / 60000) * Math.PI / 180; + } else if (sAdj_name == "adj5") { + sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj5 = parseInt(sAdj5.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0, wd2 = w / 2, hd2 = h / 2; + var ss = Math.min(w, h); + var a5, maxAdj1, a1, enAng, stAng, th, thh, th2, rw1, rh1, rw2, rh2, rw3, rh3, wtH, htH, dxH, + dyH, xH, yH, rI, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17, + u18, u19, u20, u21, maxAng, aAng, ptAng, wtA, htA, dxA, dyA, xA, yA, wtE, htE, dxE, dyE, xE, yE, + dxG, dyG, xG, yG, dxB, dyB, xB, yB, sx1, sy1, sx2, sy2, rO, x1O, y1O, x2O, y2O, dxO, dyO, dO, + q1, q2, DO, q3, q4, q5, q6, q7, q8, sdelO, ndyO, sdyO, q9, q10, q11, dxF1, q12, dxF2, adyO, + q13, q14, dyF1, q15, dyF2, q16, q17, q18, q19, q20, q21, q22, dxF, dyF, sdxF, sdyF, xF, yF, + x1I, y1I, x2I, y2I, dxI, dyI, dI, v1, v2, DI, v3, v4, v5, v6, v7, v8, sdelI, v9, v10, v11, + dxC1, v12, dxC2, adyI, v13, v14, dyC1, v15, dyC2, v16, v17, v18, v19, v20, v21, v22, dxC, dyC, + sdxC, sdyC, xC, yC, ist0, ist1, istAng, isw1, isw2, iswAng, p1, p2, p3, p4, p5, xGp, yGp, + xBp, yBp, en0, en1, en2, sw0, sw1, swAng; + var cnstVal1 = 25000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var rdAngVal1 = (1 / 60000) * Math.PI / 180; + var rdAngVal2 = (21599999 / 60000) * Math.PI / 180; + var rdAngVal3 = 2 * Math.PI; + + a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5; + maxAdj1 = a5 * 2; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3; + stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4; ////////////////////////////////////////// + th = ss * a1 / cnstVal2; + thh = ss * a5 / cnstVal2; + th2 = th / 2; + rw1 = wd2 + th2 - thh; + rh1 = hd2 + th2 - thh; + rw2 = rw1 - th; + rh2 = rh1 - th; + rw3 = rw2 + th2; + rh3 = rh2 + th2; + wtH = rw3 * Math.sin(enAng); + htH = rh3 * Math.cos(enAng); + + //dxH = rw3*Math.cos(Math.atan(wtH/htH)); + //dyH = rh3*Math.sin(Math.atan(wtH/htH)); + dxH = rw3 * Math.cos(Math.atan2(wtH, htH)); + dyH = rh3 * Math.sin(Math.atan2(wtH, htH)); + + xH = hc + dxH; + yH = vc + dyH; + rI = (rw2 < rh2) ? rw2 : rh2; + u1 = dxH * dxH; + u2 = dyH * dyH; + u3 = rI * rI; + u4 = u1 - u3; + u5 = u2 - u3; + u6 = u4 * u5 / u1; + u7 = u6 / u2; + u8 = 1 - u7; + u9 = Math.sqrt(u8); + u10 = u4 / dxH; + u11 = u10 / dyH; + u12 = (1 + u9) / u11; + + //u13 = Math.atan(u12/1); + u13 = Math.atan2(u12, 1); + + u14 = u13 + rdAngVal3; + u15 = (u13 > 0) ? u13 : u14; + u16 = u15 - enAng; + u17 = u16 + rdAngVal3; + u18 = (u16 > 0) ? u16 : u17; + u19 = u18 - cd2; + u20 = u18 - rdAngVal3; + u21 = (u19 > 0) ? u20 : u18; + maxAng = Math.abs(u21); + aAng = (adj2 < 0) ? 0 : (adj2 > maxAng) ? maxAng : adj2; + ptAng = enAng + aAng; + wtA = rw3 * Math.sin(ptAng); + htA = rh3 * Math.cos(ptAng); + //dxA = rw3*Math.cos(Math.atan(wtA/htA)); + //dyA = rh3*Math.sin(Math.atan(wtA/htA)); + dxA = rw3 * Math.cos(Math.atan2(wtA, htA)); + dyA = rh3 * Math.sin(Math.atan2(wtA, htA)); + + xA = hc + dxA; + yA = vc + dyA; + wtE = rw1 * Math.sin(stAng); + htE = rh1 * Math.cos(stAng); + + //dxE = rw1*Math.cos(Math.atan(wtE/htE)); + //dyE = rh1*Math.sin(Math.atan(wtE/htE)); + dxE = rw1 * Math.cos(Math.atan2(wtE, htE)); + dyE = rh1 * Math.sin(Math.atan2(wtE, htE)); + + xE = hc + dxE; + yE = vc + dyE; + dxG = thh * Math.cos(ptAng); + dyG = thh * Math.sin(ptAng); + xG = xH + dxG; + yG = yH + dyG; + dxB = thh * Math.cos(ptAng); + dyB = thh * Math.sin(ptAng); + xB = xH - dxB; + yB = yH - dyB; + sx1 = xB - hc; + sy1 = yB - vc; + sx2 = xG - hc; + sy2 = yG - vc; + rO = (rw1 < rh1) ? rw1 : rh1; + x1O = sx1 * rO / rw1; + y1O = sy1 * rO / rh1; + x2O = sx2 * rO / rw1; + y2O = sy2 * rO / rh1; + dxO = x2O - x1O; + dyO = y2O - y1O; + dO = Math.sqrt(dxO * dxO + dyO * dyO); + q1 = x1O * y2O; + q2 = x2O * y1O; + DO = q1 - q2; + q3 = rO * rO; + q4 = dO * dO; + q5 = q3 * q4; + q6 = DO * DO; + q7 = q5 - q6; + q8 = (q7 > 0) ? q7 : 0; + sdelO = Math.sqrt(q8); + ndyO = dyO * -1; + sdyO = (ndyO > 0) ? -1 : 1; + q9 = sdyO * dxO; + q10 = q9 * sdelO; + q11 = DO * dyO; + dxF1 = (q11 + q10) / q4; + q12 = q11 - q10; + dxF2 = q12 / q4; + adyO = Math.abs(dyO); + q13 = adyO * sdelO; + q14 = DO * dxO / -1; + dyF1 = (q14 + q13) / q4; + q15 = q14 - q13; + dyF2 = q15 / q4; + q16 = x2O - dxF1; + q17 = x2O - dxF2; + q18 = y2O - dyF1; + q19 = y2O - dyF2; + q20 = Math.sqrt(q16 * q16 + q18 * q18); + q21 = Math.sqrt(q17 * q17 + q19 * q19); + q22 = q21 - q20; + dxF = (q22 > 0) ? dxF1 : dxF2; + dyF = (q22 > 0) ? dyF1 : dyF2; + sdxF = dxF * rw1 / rO; + sdyF = dyF * rh1 / rO; + xF = hc + sdxF; + yF = vc + sdyF; + x1I = sx1 * rI / rw2; + y1I = sy1 * rI / rh2; + x2I = sx2 * rI / rw2; + y2I = sy2 * rI / rh2; + dxI = x2I - x1I; + dyI = y2I - y1I; + dI = Math.sqrt(dxI * dxI + dyI * dyI); + v1 = x1I * y2I; + v2 = x2I * y1I; + DI = v1 - v2; + v3 = rI * rI; + v4 = dI * dI; + v5 = v3 * v4; + v6 = DI * DI; + v7 = v5 - v6; + v8 = (v7 > 0) ? v7 : 0; + sdelI = Math.sqrt(v8); + v9 = sdyO * dxI; + v10 = v9 * sdelI; + v11 = DI * dyI; + dxC1 = (v11 + v10) / v4; + v12 = v11 - v10; + dxC2 = v12 / v4; + adyI = Math.abs(dyI); + v13 = adyI * sdelI; + v14 = DI * dxI / -1; + dyC1 = (v14 + v13) / v4; + v15 = v14 - v13; + dyC2 = v15 / v4; + v16 = x1I - dxC1; + v17 = x1I - dxC2; + v18 = y1I - dyC1; + v19 = y1I - dyC2; + v20 = Math.sqrt(v16 * v16 + v18 * v18); + v21 = Math.sqrt(v17 * v17 + v19 * v19); + v22 = v21 - v20; + dxC = (v22 > 0) ? dxC1 : dxC2; + dyC = (v22 > 0) ? dyC1 : dyC2; + sdxC = dxC * rw2 / rI; + sdyC = dyC * rh2 / rI; + xC = hc + sdxC; + yC = vc + sdyC; + + //ist0 = Math.atan(sdyC/sdxC); + ist0 = Math.atan2(sdyC, sdxC); + + ist1 = ist0 + rdAngVal3; + istAng = (ist0 > 0) ? ist0 : ist1; + isw1 = stAng - istAng; + isw2 = isw1 - rdAngVal3; + iswAng = (isw1 > 0) ? isw2 : isw1; + p1 = xF - xC; + p2 = yF - yC; + p3 = Math.sqrt(p1 * p1 + p2 * p2); + p4 = p3 / 2; + p5 = p4 - thh; + xGp = (p5 > 0) ? xF : xG; + yGp = (p5 > 0) ? yF : yG; + xBp = (p5 > 0) ? xC : xB; + yBp = (p5 > 0) ? yC : yB; + + //en0 = Math.atan(sdyF/sdxF); + en0 = Math.atan2(sdyF, sdxF); + + en1 = en0 + rdAngVal3; + en2 = (en0 > 0) ? en0 : en1; + sw0 = en2 - stAng; + sw1 = sw0 + rdAngVal3; + swAng = (sw0 > 0) ? sw0 : sw1; + + var strtAng = stAng * 180 / Math.PI + var endAng = strtAng + (swAng * 180 / Math.PI); + var stiAng = istAng * 180 / Math.PI; + var swiAng = iswAng * 180 / Math.PI; + var ediAng = stiAng + swiAng; + + var d_val = shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAng, false) + + " L" + xGp + "," + yGp + + " L" + xA + "," + yA + + " L" + xBp + "," + yBp + + " L" + xC + "," + yC + + shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace("M", "L") + + " z"; + result += ""; + + break; + case "leftCircularArrow": + var shapAdjst_ary = getTextByPathList(node, ["p:spPr", "a:prstGeom", "a:avLst", "a:gd"]); + var sAdj1, adj1 = 12500 * slideFactor; + var sAdj2, adj2 = (-1142319 / 60000) * Math.PI / 180; + var sAdj3, adj3 = (1142319 / 60000) * Math.PI / 180; + var sAdj4, adj4 = (10800000 / 60000) * Math.PI / 180; + var sAdj5, adj5 = 12500 * slideFactor; + if (shapAdjst_ary !== undefined) { + for (var i = 0; i < shapAdjst_ary.length; i++) { + var sAdj_name = getTextByPathList(shapAdjst_ary[i], ["attrs", "name"]); + if (sAdj_name == "adj1") { + sAdj1 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj1 = parseInt(sAdj1.substr(4)) * slideFactor; + } else if (sAdj_name == "adj2") { + sAdj2 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj2 = (parseInt(sAdj2.substr(4)) / 60000) * Math.PI / 180; + } else if (sAdj_name == "adj3") { + sAdj3 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj3 = (parseInt(sAdj3.substr(4)) / 60000) * Math.PI / 180; + } else if (sAdj_name == "adj4") { + sAdj4 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj4 = (parseInt(sAdj4.substr(4)) / 60000) * Math.PI / 180; + } else if (sAdj_name == "adj5") { + sAdj5 = getTextByPathList(shapAdjst_ary[i], ["attrs", "fmla"]); + adj5 = parseInt(sAdj5.substr(4)) * slideFactor; + } + } + } + var vc = h / 2, hc = w / 2, r = w, b = h, l = 0, t = 0, wd2 = w / 2, hd2 = h / 2; + var ss = Math.min(w, h); + var cnstVal1 = 25000 * slideFactor; + var cnstVal2 = 100000 * slideFactor; + var rdAngVal1 = (1 / 60000) * Math.PI / 180; + var rdAngVal2 = (21599999 / 60000) * Math.PI / 180; + var rdAngVal3 = 2 * Math.PI; + var a5, maxAdj1, a1, enAng, stAng, th, thh, th2, rw1, rh1, rw2, rh2, rw3, rh3, wtH, htH, dxH, dyH, xH, yH, rI, + u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17, u18, u19, u20, u21, u22, + minAng, u23, a2, aAng, ptAng, wtA, htA, dxA, dyA, xA, yA, wtE, htE, dxE, dyE, xE, yE, wtD, htD, dxD, dyD, + xD, yD, dxG, dyG, xG, yG, dxB, dyB, xB, yB, sx1, sy1, sx2, sy2, rO, x1O, y1O, x2O, y2O, dxO, dyO, dO, + q1, q2, DO, q3, q4, q5, q6, q7, q8, sdelO, ndyO, sdyO, q9, q10, q11, dxF1, q12, dxF2, adyO, q13, q14, dyF1, + q15, dyF2, q16, q17, q18, q19, q20, q21, q22, dxF, dyF, sdxF, sdyF, xF, yF, x1I, y1I, x2I, y2I, dxI, dyI, dI, + v1, v2, DI, v3, v4, v5, v6, v7, v8, sdelI, v9, v10, v11, dxC1, v12, dxC2, adyI, v13, v14, dyC1, v15, dyC2, v16, + v17, v18, v19, v20, v21, v22, dxC, dyC, sdxC, sdyC, xC, yC, ist0, ist1, istAng0, isw1, isw2, iswAng0, istAng, + iswAng, p1, p2, p3, p4, p5, xGp, yGp, xBp, yBp, en0, en1, en2, sw0, sw1, swAng, stAng0; + + a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5; + maxAdj1 = a5 * 2; + a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1; + enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3; + stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4; + th = ss * a1 / cnstVal2; + thh = ss * a5 / cnstVal2; + th2 = th / 2; + rw1 = wd2 + th2 - thh; + rh1 = hd2 + th2 - thh; + rw2 = rw1 - th; + rh2 = rh1 - th; + rw3 = rw2 + th2; + rh3 = rh2 + th2; + wtH = rw3 * Math.sin(enAng); + htH = rh3 * Math.cos(enAng); + dxH = rw3 * Math.cos(Math.atan2(wtH, htH)); + dyH = rh3 * Math.sin(Math.atan2(wtH, htH)); + xH = hc + dxH; + yH = vc + dyH; + rI = (rw2 < rh2) ? rw2 : rh2; + u1 = dxH * dxH; + u2 = dyH * dyH; + u3 = rI * rI; + u4 = u1 - u3; + u5 = u2 - u3; + u6 = u4 * u5 / u1; + u7 = u6 / u2; + u8 = 1 - u7; + u9 = Math.sqrt(u8); + u10 = u4 / dxH; + u11 = u10 / dyH; + u12 = (1 + u9) / u11; + u13 = Math.atan2(u12, 1); + u14 = u13 + rdAngVal3; + u15 = (u13 > 0) ? u13 : u14; + u16 = u15 - enAng; + u17 = u16 + rdAngVal3; + u18 = (u16 > 0) ? u16 : u17; + u19 = u18 - cd2; + u20 = u18 - rdAngVal3; + u21 = (u19 > 0) ? u20 : u18; + u22 = Math.abs(u21); + minAng = u22 * -1; + u23 = Math.abs(adj2); + a2 = u23 * -1; + aAng = (a2 < minAng) ? minAng : (a2 > 0) ? 0 : a2; + ptAng = enAng + aAng; + wtA = rw3 * Math.sin(ptAng); + htA = rh3 * Math.cos(ptAng); + dxA = rw3 * Math.cos(Math.atan2(wtA, htA)); + dyA = rh3 * Math.sin(Math.atan2(wtA, htA)); + xA = hc + dxA; + yA = vc + dyA; + wtE = rw1 * Math.sin(stAng); + htE = rh1 * Math.cos(stAng); + dxE = rw1 * Math.cos(Math.atan2(wtE, htE)); + dyE = rh1 * Math.sin(Math.atan2(wtE, htE)); + xE = hc + dxE; + yE = vc + dyE; + wtD = rw2 * Math.sin(stAng); + htD = rh2 * Math.cos(stAng); + dxD = rw2 * Math.cos(Math.atan2(wtD, htD)); + dyD = rh2 * Math.sin(Math.atan2(wtD, htD)); + xD = hc + dxD; + yD = vc + dyD; + dxG = thh * Math.cos(ptAng); + dyG = thh * Math.sin(ptAng); + xG = xH + dxG; + yG = yH + dyG; + dxB = thh * Math.cos(ptAng); + dyB = thh * Math.sin(ptAng); + xB = xH - dxB; + yB = yH - dyB; + sx1 = xB - hc; + sy1 = yB - vc; + sx2 = xG - hc; + sy2 = yG - vc; + rO = (rw1 < rh1) ? rw1 : rh1; + x1O = sx1 * rO / rw1; + y1O = sy1 * rO / rh1; + x2O = sx2 * rO / rw1; + y2O = sy2 * rO / rh1; + dxO = x2O - x1O; + dyO = y2O - y1O; + dO = Math.sqrt(dxO * dxO + dyO * dyO); + q1 = x1O * y2O; + q2 = x2O * y1O; + DO = q1 - q2; + q3 = rO * rO; + q4 = dO * dO; + q5 = q3 * q4; + q6 = DO * DO; + q7 = q5 - q6; + q8 = (q7 > 0) ? q7 : 0; + sdelO = Math.sqrt(q8); + ndyO = dyO * -1; + sdyO = (ndyO > 0) ? -1 : 1; + q9 = sdyO * dxO; + q10 = q9 * sdelO; + q11 = DO * dyO; + dxF1 = (q11 + q10) / q4; + q12 = q11 - q10; + dxF2 = q12 / q4; + adyO = Math.abs(dyO); + q13 = adyO * sdelO; + q14 = DO * dxO / -1; + dyF1 = (q14 + q13) / q4; + q15 = q14 - q13; + dyF2 = q15 / q4; + q16 = x2O - dxF1; + q17 = x2O - dxF2; + q18 = y2O - dyF1; + q19 = y2O - dyF2; + q20 = Math.sqrt(q16 * q16 + q18 * q18); + q21 = Math.sqrt(q17 * q17 + q19 * q19); + q22 = q21 - q20; + dxF = (q22 > 0) ? dxF1 : dxF2; + dyF = (q22 > 0) ? dyF1 : dyF2; + sdxF = dxF * rw1 / rO; + sdyF = dyF * rh1 / rO; + xF = hc + sdxF; + yF = vc + sdyF; + x1I = sx1 * rI / rw2; + y1I = sy1 * rI / rh2; + x2I = sx2 * rI / rw2; + y2I = sy2 * rI / rh2; + dxI = x2I - x1I; + dyI = y2I - y1I; + dI = Math.sqrt(dxI * dxI + dyI * dyI); + v1 = x1I * y2I; + v2 = x2I * y1I; + DI = v1 - v2; + v3 = rI * rI; + v4 = dI * dI; + v5 = v3 * v4; + v6 = DI * DI; + v7 = v5 - v6; + v8 = (v7 > 0) ? v7 : 0; + sdelI = Math.sqrt(v8); + v9 = sdyO * dxI; + v10 = v9 * sdelI; + v11 = DI * dyI; + dxC1 = (v11 + v10) / v4; + v12 = v11 - v10; + dxC2 = v12 / v4; + adyI = Math.abs(dyI); + v13 = adyI * sdelI; + v14 = DI * dxI / -1; + dyC1 = (v14 + v13) / v4; + v15 = v14 - v13; + dyC2 = v15 / v4; + v16 = x1I - dxC1; + v17 = x1I - dxC2; + v18 = y1I - dyC1; + v19 = y1I - dyC2; + v20 = Math.sqrt(v16 * v16 + v18 * v18); + v21 = Math.sqrt(v17 * v17 + v19 * v19); + v22 = v21 - v20; + dxC = (v22 > 0) ? dxC1 : dxC2; + dyC = (v22 > 0) ? dyC1 : dyC2; + sdxC = dxC * rw2 / rI; + sdyC = dyC * rh2 / rI; + xC = hc + sdxC; + yC = vc + sdyC; + ist0 = Math.atan2(sdyC, sdxC); + ist1 = ist0 + rdAngVal3; + istAng0 = (ist0 > 0) ? ist0 : ist1; + isw1 = stAng - istAng0; + isw2 = isw1 + rdAngVal3; + iswAng0 = (isw1 > 0) ? isw1 : isw2; + istAng = istAng0 + iswAng0; + iswAng = -iswAng0; + p1 = xF - xC; + p2 = yF - yC; + p3 = Math.sqrt(p1 * p1 + p2 * p2); + p4 = p3 / 2; + p5 = p4 - thh; + xGp = (p5 > 0) ? xF : xG; + yGp = (p5 > 0) ? yF : yG; + xBp = (p5 > 0) ? xC : xB; + yBp = (p5 > 0) ? yC : yB; + en0 = Math.atan2(sdyF, sdxF); + en1 = en0 + rdAngVal3; + en2 = (en0 > 0) ? en0 : en1; + sw0 = en2 - stAng; + sw1 = sw0 - rdAngVal3; + swAng = (sw0 > 0) ? sw1 : sw0; + stAng0 = stAng + swAng; + + var strtAng = stAng0 * 180 / Math.PI; + var endAng = stAng * 180 / Math.PI; + var stiAng = istAng * 180 / Math.PI; + var swiAng = iswAng * 180 / Math.PI; + var ediAng = stiAng + swiAng; + + var d_val = "M" + xE + "," + yE + + " L" + xD + "," + yD + + shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace("M", "L") + + " L" + xBp + "," + yBp + + " L" + xA + "," + yA + + " L" + xGp + "," + yGp + + " L" + xF + "," + yF + + shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAng, false).replace("M", "L") + + " z"; + result += ""; + + break; + case "leftRightCircularArrow": + case "chartPlus": + case "chartStar": + case "chartX": + case "cornerTabs": + case "flowChartOfflineStorage": + case "folderCorner": + case "funnel": + case "lineInv": + case "nonIsoscelesTrapezoid": + case "plaqueTabs": + case "squareTabs": + case "upDownArrowCallout": + console.log(shapType, " -unsupported shape type."); + break; + case undefined: + default: + console.warn("Undefine shape type.(" + shapType + ")"); + } + + result += ""; + + result += "
"; + + // TextBody + if (node["p:txBody"] !== undefined && (isUserDrawnBg === undefined || isUserDrawnBg === true)) { + if (type != "diagram" && type != "textBox") { + type = "shape"; + } + result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, idx, warpObj); //type='shape' + } + result += "
"; + } else if (custShapType !== undefined) { + //custGeom here - Amir /////////////////////////////////////////////////////// + //http://officeopenxml.com/drwSp-custGeom.php + var pathLstNode = getTextByPathList(custShapType, ["a:pathLst"]); + var pathNodes = getTextByPathList(pathLstNode, ["a:path"]); + //var pathNode = getTextByPathList(pathLstNode, ["a:path", "attrs"]); + var maxX = parseInt(pathNodes["attrs"]["w"]);// * slideFactor; + var maxY = parseInt(pathNodes["attrs"]["h"]);// * slideFactor; + var cX = (1 / maxX) * w; + var cY = (1 / maxY) * h; + //console.log("w = "+w+"\nh = "+h+"\nmaxX = "+maxX +"\nmaxY = " + maxY); + //cheke if it is close shape + + //console.log("custShapType : ", custShapType, ", pathLstNode: ", pathLstNode, ", node: ", node);//, ", y:", y, ", w:", w, ", h:", h); + + var moveToNode = getTextByPathList(pathNodes, ["a:moveTo"]); + var total_shapes = moveToNode.length; + + var lnToNodes = pathNodes["a:lnTo"]; //total a:pt : 1 + var cubicBezToNodes = pathNodes["a:cubicBezTo"]; //total a:pt : 3 + var arcToNodes = pathNodes["a:arcTo"]; //total a:pt : 0?1? ; attrs: ~4 () + var closeNode = getTextByPathList(pathNodes, ["a:close"]); //total a:pt : 0 + //quadBezTo //total a:pt : 2 - TODO + //console.log("ia moveToNode array: ", Array.isArray(moveToNode)) + if (!Array.isArray(moveToNode)) { + moveToNode = [moveToNode]; + } + //console.log("ia moveToNode array: ", Array.isArray(moveToNode)) + + var multiSapeAry = []; + if (moveToNode.length > 0) { + //a:moveTo + Object.keys(moveToNode).forEach(function (key) { + var moveToPtNode = moveToNode[key]["a:pt"]; + if (moveToPtNode !== undefined) { + Object.keys(moveToPtNode).forEach(function (key2) { + var ptObj = {}; + var moveToNoPt = moveToPtNode[key2]; + var spX = moveToNoPt["attrs", "x"];//parseInt(moveToNoPt["attrs", "x"]) * slideFactor; + var spY = moveToNoPt["attrs", "y"];//parseInt(moveToNoPt["attrs", "y"]) * slideFactor; + var ptOrdr = moveToNoPt["attrs", "order"]; + ptObj.type = "movto"; + ptObj.order = ptOrdr; + ptObj.x = spX; + ptObj.y = spY; + multiSapeAry.push(ptObj); + //console.log(key2, lnToNoPt); + + }); + } + }); + //a:lnTo + if (lnToNodes !== undefined) { + Object.keys(lnToNodes).forEach(function (key) { + var lnToPtNode = lnToNodes[key]["a:pt"]; + if (lnToPtNode !== undefined) { + Object.keys(lnToPtNode).forEach(function (key2) { + var ptObj = {}; + var lnToNoPt = lnToPtNode[key2]; + var ptX = lnToNoPt["attrs", "x"]; + var ptY = lnToNoPt["attrs", "y"]; + var ptOrdr = lnToNoPt["attrs", "order"]; + ptObj.type = "lnto"; + ptObj.order = ptOrdr; + ptObj.x = ptX; + ptObj.y = ptY; + multiSapeAry.push(ptObj); + //console.log(key2, lnToNoPt); + }); + } + }); + } + //a:cubicBezTo + if (cubicBezToNodes !== undefined) { + + var cubicBezToPtNodesAry = []; + //console.log("cubicBezToNodes: ", cubicBezToNodes, ", is arry: ", Array.isArray(cubicBezToNodes)) + if (!Array.isArray(cubicBezToNodes)) { + cubicBezToNodes = [cubicBezToNodes]; + } + Object.keys(cubicBezToNodes).forEach(function (key) { + //console.log("cubicBezTo[" + key + "]:"); + cubicBezToPtNodesAry.push(cubicBezToNodes[key]["a:pt"]); + }); + + //console.log("cubicBezToNodes: ", cubicBezToPtNodesAry) + cubicBezToPtNodesAry.forEach(function (key2) { + //console.log("cubicBezToPtNodesAry: key2 : ", key2) + var nodeObj = {}; + nodeObj.type = "cubicBezTo"; + nodeObj.order = key2[0]["attrs"]["order"]; + var pts_ary = []; + key2.forEach(function (pt) { + var pt_obj = { + x: pt["attrs"]["x"], + y: pt["attrs"]["y"] + } + pts_ary.push(pt_obj) + }) + nodeObj.cubBzPt = pts_ary;//key2; + multiSapeAry.push(nodeObj); + }); + } + //a:arcTo + if (arcToNodes !== undefined) { + var arcToNodesAttrs = arcToNodes["attrs"]; + var arcOrder = arcToNodesAttrs["order"]; + var hR = arcToNodesAttrs["hR"]; + var wR = arcToNodesAttrs["wR"]; + var stAng = arcToNodesAttrs["stAng"]; + var swAng = arcToNodesAttrs["swAng"]; + var shftX = 0; + var shftY = 0; + var arcToPtNode = getTextByPathList(arcToNodes, ["a:pt", "attrs"]); + if (arcToPtNode !== undefined) { + shftX = arcToPtNode["x"]; + shftY = arcToPtNode["y"]; + //console.log("shftX: ",shftX," shftY: ",shftY) + } + var ptObj = {}; + ptObj.type = "arcTo"; + ptObj.order = arcOrder; + ptObj.hR = hR; + ptObj.wR = wR; + ptObj.stAng = stAng; + ptObj.swAng = swAng; + ptObj.shftX = shftX; + ptObj.shftY = shftY; + multiSapeAry.push(ptObj); + + } + //a:quadBezTo - TODO + + //a:close + if (closeNode !== undefined) { + + if (!Array.isArray(closeNode)) { + closeNode = [closeNode]; + } + // Object.keys(closeNode).forEach(function (key) { + // //console.log("cubicBezTo[" + key + "]:"); + // cubicBezToPtNodesAry.push(closeNode[key]["a:pt"]); + // }); + Object.keys(closeNode).forEach(function (key) { + //console.log("custShapType >> closeNode: key: ", key); + var clsAttrs = closeNode[key]["attrs"]; + //var clsAttrs = closeNode["attrs"]; + var clsOrder = clsAttrs["order"]; + var ptObj = {}; + ptObj.type = "close"; + ptObj.order = clsOrder; + multiSapeAry.push(ptObj); + + }); + + } + + // console.log("custShapType >> multiSapeAry: ", multiSapeAry); + + multiSapeAry.sort(function (a, b) { + return a.order - b.order; + }); + + //console.log("custShapType >>sorted multiSapeAry: "); + //console.log(multiSapeAry); + var k = 0; + var isClose = false; + var d = ""; + while (k < multiSapeAry.length) { + + if (multiSapeAry[k].type == "movto") { + //start point + var spX = parseInt(multiSapeAry[k].x) * cX;//slideFactor; + var spY = parseInt(multiSapeAry[k].y) * cY;//slideFactor; + // if (d == "") { + // d = "M" + spX + "," + spY; + // } else { + // //shape without close : then close the shape and start new path + // result += ""; + + // TextBody + if (node["p:txBody"] !== undefined && (isUserDrawnBg === undefined || isUserDrawnBg === true)) { + if (type != "diagram" && type != "textBox") { + type = "shape"; + } + result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, idx, warpObj); //type=shape + } + result += ""; + + // result = ""; + } else { + + result += "
"; + + // TextBody + if (node["p:txBody"] !== undefined && (isUserDrawnBg === undefined || isUserDrawnBg === true)) { + result += genTextBody(node["p:txBody"], node, slideLayoutSpNode, slideMasterSpNode, type, idx, warpObj); + } + result += "
"; + + } + //console.log("div block result:\n", result) + return result; + } + + function shapePie(H, w, adj1, adj2, isClose) { + var pieVal = parseInt(adj2); + var piAngle = parseInt(adj1); + var size = parseInt(H), + radius = (size / 2), + value = pieVal - piAngle; + if (value < 0) { + value = 360 + value; + } + //console.log("value: ",value) + value = Math.min(Math.max(value, 0), 360); + + //calculate x,y coordinates of the point on the circle to draw the arc to. + var x = Math.cos((2 * Math.PI) / (360 / value)); + var y = Math.sin((2 * Math.PI) / (360 / value)); + + + //d is a string that describes the path of the slice. + var longArc, d, rot; + if (isClose) { + longArc = (value <= 180) ? 0 : 1; + d = "M" + radius + "," + radius + " L" + radius + "," + 0 + " A" + radius + "," + radius + " 0 " + longArc + ",1 " + (radius + y * radius) + "," + (radius - x * radius) + " z"; + rot = "rotate(" + (piAngle - 270) + ", " + radius + ", " + radius + ")"; + } else { + longArc = (value <= 180) ? 0 : 1; + var radius1 = radius; + var radius2 = w / 2; + d = "M" + radius1 + "," + 0 + " A" + radius2 + "," + radius1 + " 0 " + longArc + ",1 " + (radius2 + y * radius2) + "," + (radius1 - x * radius1); + rot = "rotate(" + (piAngle + 90) + ", " + radius + ", " + radius + ")"; + } + + return [d, rot]; + } + function shapeGear(w, h, points) { + var innerRadius = h;//gear.innerRadius; + var outerRadius = 1.5 * innerRadius; + var cx = outerRadius;//Math.max(innerRadius, outerRadius), // center x + cy = outerRadius;//Math.max(innerRadius, outerRadius), // center y + notches = points,//gear.points, // num. of notches + radiusO = outerRadius, // outer radius + radiusI = innerRadius, // inner radius + taperO = 50, // outer taper % + taperI = 35, // inner taper % + + // pre-calculate values for loop + + pi2 = 2 * Math.PI, // cache 2xPI (360deg) + angle = pi2 / (notches * 2), // angle between notches + taperAI = angle * taperI * 0.005, // inner taper offset (100% = half notch) + taperAO = angle * taperO * 0.005, // outer taper offset + a = angle, // iterator (angle) + toggle = false; + // move to starting point + var d = " M" + (cx + radiusO * Math.cos(taperAO)) + " " + (cy + radiusO * Math.sin(taperAO)); + + // loop + for (; a <= pi2 + angle; a += angle) { + // draw inner to outer line + if (toggle) { + d += " L" + (cx + radiusI * Math.cos(a - taperAI)) + "," + (cy + radiusI * Math.sin(a - taperAI)); + d += " L" + (cx + radiusO * Math.cos(a + taperAO)) + "," + (cy + radiusO * Math.sin(a + taperAO)); + } else { // draw outer to inner line + d += " L" + (cx + radiusO * Math.cos(a - taperAO)) + "," + (cy + radiusO * Math.sin(a - taperAO)); // outer line + d += " L" + (cx + radiusI * Math.cos(a + taperAI)) + "," + (cy + radiusI * Math.sin(a + taperAI));// inner line + + } + // switch level + toggle = !toggle; + } + // close the final line + d += " "; + return d; + } + function shapeArc(cX, cY, rX, rY, stAng, endAng, isClose) { + var dData; + var angle = stAng; + if (endAng >= stAng) { + while (angle <= endAng) { + var radians = angle * (Math.PI / 180); // convert degree to radians + var x = cX + Math.cos(radians) * rX; + var y = cY + Math.sin(radians) * rY; + if (angle == stAng) { + dData = " M" + x + " " + y; + } + dData += " L" + x + " " + y; + angle++; + } + } else { + while (angle > endAng) { + var radians = angle * (Math.PI / 180); // convert degree to radians + var x = cX + Math.cos(radians) * rX; + var y = cY + Math.sin(radians) * rY; + if (angle == stAng) { + dData = " M " + x + " " + y; + } + dData += " L " + x + " " + y; + angle--; + } + } + dData += (isClose ? " z" : ""); + return dData; + } + function shapeSnipRoundRect(w, h, adj1, adj2, shapeType, adjType) { + /* + shapeType: snip,round + adjType: cornr1,cornr2,cornrAll,diag + */ + var adjA, adjB, adjC, adjD; + if (adjType == "cornr1") { + adjA = 0; + adjB = 0; + adjC = 0; + adjD = adj1; + } else if (adjType == "cornr2") { + adjA = adj1; + adjB = adj2; + adjC = adj2; + adjD = adj1; + } else if (adjType == "cornrAll") { + adjA = adj1; + adjB = adj1; + adjC = adj1; + adjD = adj1; + } else if (adjType == "diag") { + adjA = adj1; + adjB = adj2; + adjC = adj1; + adjD = adj2; + } + //d is a string that describes the path of the slice. + var d; + if (shapeType == "round") { + d = "M0" + "," + (h / 2 + (1 - adjB) * (h / 2)) + " Q" + 0 + "," + h + " " + adjB * (w / 2) + "," + h + " L" + (w / 2 + (1 - adjC) * (w / 2)) + "," + h + + " Q" + w + "," + h + " " + w + "," + (h / 2 + (h / 2) * (1 - adjC)) + "L" + w + "," + (h / 2) * adjD + + " Q" + w + "," + 0 + " " + (w / 2 + (w / 2) * (1 - adjD)) + ",0 L" + (w / 2) * adjA + ",0" + + " Q" + 0 + "," + 0 + " 0," + (h / 2) * (adjA) + " z"; + } else if (shapeType == "snip") { + d = "M0" + "," + adjA * (h / 2) + " L0" + "," + (h / 2 + (h / 2) * (1 - adjB)) + "L" + adjB * (w / 2) + "," + h + + " L" + (w / 2 + (w / 2) * (1 - adjC)) + "," + h + "L" + w + "," + (h / 2 + (h / 2) * (1 - adjC)) + + " L" + w + "," + adjD * (h / 2) + "L" + (w / 2 + (w / 2) * (1 - adjD)) + ",0 L" + ((w / 2) * adjA) + ",0 z"; + } + return d; + } + /* + function shapePolygon(sidesNum) { + var sides = sidesNum; + var radius = 100; + var angle = 2 * Math.PI / sides; + var points = []; + + for (var i = 0; i < sides; i++) { + points.push(radius + radius * Math.sin(i * angle)); + points.push(radius - radius * Math.cos(i * angle)); + } + + return points; + } + */ + function processPicNode(node, warpObj, source, sType) { + //console.log("processPicNode node:", node, "source:", source, "sType:", sType, "warpObj;", warpObj); + var rtrnData = ""; + var mediaPicFlag = false; + var order = node["attrs"]["order"]; + + var rid = node["p:blipFill"]["a:blip"]["attrs"]["r:embed"]; + var resObj; + if (source == "slideMasterBg") { + resObj = warpObj["masterResObj"]; + } else if (source == "slideLayoutBg") { + resObj = warpObj["layoutResObj"]; + } else { + //imgName = warpObj["slideResObj"][rid]["target"]; + resObj = warpObj["slideResObj"]; + } + var imgName = resObj[rid]["target"]; + + //console.log("processPicNode imgName:", imgName); + var imgFileExt = extractFileExtension(imgName).toLowerCase(); + var zip = warpObj["zip"]; + var imgArrayBuffer = zip.file(imgName).asArrayBuffer(); + var mimeType = ""; + var xfrmNode = node["p:spPr"]["a:xfrm"]; + if (xfrmNode === undefined) { + var idx = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "p:ph", "attrs", "idx"]); + var type = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "p:ph", "attrs", "type"]); + if (idx !== undefined) { + xfrmNode = getTextByPathList(warpObj["slideLayoutTables"], ["idxTable", idx, "p:spPr", "a:xfrm"]); + } + } + ///////////////////////////////////////Amir////////////////////////////// + var rotate = 0; + var rotateNode = getTextByPathList(node, ["p:spPr", "a:xfrm", "attrs", "rot"]); + if (rotateNode !== undefined) { + rotate = angleToDegrees(rotateNode); + } + //video + var vdoNode = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "a:videoFile"]); + var vdoRid, vdoFile, vdoFileExt, vdoMimeType, uInt8Array, blob, vdoBlob, mediaSupportFlag = false, isVdeoLink = false; + var mediaProcess = settings.mediaProcess; + if (vdoNode !== undefined & mediaProcess) { + vdoRid = vdoNode["attrs"]["r:link"]; + vdoFile = resObj[vdoRid]["target"]; + var checkIfLink = IsVideoLink(vdoFile); + if (checkIfLink) { + vdoFile = escapeHtml(vdoFile); + //vdoBlob = vdoFile; + isVdeoLink = true; + mediaSupportFlag = true; + mediaPicFlag = true; + } else { + vdoFileExt = extractFileExtension(vdoFile).toLowerCase(); + if (vdoFileExt == "mp4" || vdoFileExt == "webm" || vdoFileExt == "ogg") { + uInt8Array = zip.file(vdoFile).asArrayBuffer(); + vdoMimeType = getMimeType(vdoFileExt); + blob = new Blob([uInt8Array], { + type: vdoMimeType + }); + vdoBlob = URL.createObjectURL(blob); + mediaSupportFlag = true; + mediaPicFlag = true; + } + } + } + //Audio + var audioNode = getTextByPathList(node, ["p:nvPicPr", "p:nvPr", "a:audioFile"]); + var audioRid, audioFile, audioFileExt, audioMimeType, uInt8ArrayAudio, blobAudio, audioBlob; + var audioPlayerFlag = false; + var audioObjc; + if (audioNode !== undefined & mediaProcess) { + audioRid = audioNode["attrs"]["r:link"]; + audioFile = resObj[audioRid]["target"]; + audioFileExt = extractFileExtension(audioFile).toLowerCase(); + if (audioFileExt == "mp3" || audioFileExt == "wav" || audioFileExt == "ogg") { + uInt8ArrayAudio = zip.file(audioFile).asArrayBuffer(); + blobAudio = new Blob([uInt8ArrayAudio]); + audioBlob = URL.createObjectURL(blobAudio); + var cx = parseInt(xfrmNode["a:ext"]["attrs"]["cx"]) * 20; + var cy = xfrmNode["a:ext"]["attrs"]["cy"]; + var x = parseInt(xfrmNode["a:off"]["attrs"]["x"]) / 2.5; + var y = xfrmNode["a:off"]["attrs"]["y"]; + audioObjc = { + "a:ext": { + "attrs": { + "cx": cx, + "cy": cy + } + }, + "a:off": { + "attrs": { + "x": x, + "y": y + + } + } + } + audioPlayerFlag = true; + mediaSupportFlag = true; + mediaPicFlag = true; + } + } + //console.log(node) + ////////////////////////////////////////////////////////////////////////// + mimeType = getMimeType(imgFileExt); + rtrnData = "
"; + if ((vdoNode === undefined && audioNode === undefined) || !mediaProcess || !mediaSupportFlag) { + rtrnData += ""; + } else if ((vdoNode !== undefined || audioNode !== undefined) && mediaProcess && mediaSupportFlag) { + if (vdoNode !== undefined && !isVdeoLink) { + rtrnData += ""; + } else if (vdoNode !== undefined && isVdeoLink) { + rtrnData += ""; + } + if (audioNode !== undefined) { + rtrnData += ''; + //''+ + //''; + } + } + if (!mediaSupportFlag && mediaPicFlag) { + rtrnData += "This media file Not supported by HTML5"; + } + if ((vdoNode !== undefined || audioNode !== undefined) && !mediaProcess && mediaSupportFlag) { + console.log("Founded supported media file but media process disabled (mediaProcess=false)"); + } + rtrnData += "
"; + //console.log(rtrnData) + return rtrnData; + } + + function processGraphicFrameNode(node, warpObj, source, sType) { + + var result = ""; + var graphicTypeUri = getTextByPathList(node, ["a:graphic", "a:graphicData", "attrs", "uri"]); + + switch (graphicTypeUri) { + case "http://schemas.openxmlformats.org/drawingml/2006/table": + result = genTable(node, warpObj); + break; + case "http://schemas.openxmlformats.org/drawingml/2006/chart": + result = genChart(node, warpObj); + break; + case "http://schemas.openxmlformats.org/drawingml/2006/diagram": + result = genDiagram(node, warpObj, source, sType); + break; + case "http://schemas.openxmlformats.org/presentationml/2006/ole": + //result = genDiagram(node, warpObj, source, sType); + var oleObjNode = getTextByPathList(node, ["a:graphic", "a:graphicData", "mc:AlternateContent", "mc:Fallback","p:oleObj"]); + + if (oleObjNode === undefined) { + oleObjNode = getTextByPathList(node, ["a:graphic", "a:graphicData", "p:oleObj"]); + } + //console.log("node:", node, "oleObjNode:", oleObjNode) + if (oleObjNode !== undefined){ + result = processGroupSpNode(oleObjNode, warpObj, source); + } + break; + default: + } + + return result; + } + + function processSpPrNode(node, warpObj) { + + /* + * 2241 + * 2242 + * 2243 + * 2244 + * 2245 + * 2246 + * 2247 + * 2248 + * 2249 + * 2250 + * 2251 + * 2252 + * 2253 + */ + + // TODO: + } + + var is_first_br = false; + function genTextBody(textBodyNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, idx, warpObj, tbl_col_width) { + var text = ""; + var slideMasterTextStyles = warpObj["slideMasterTextStyles"]; + + if (textBodyNode === undefined) { + return text; + } + //rtl : + // + + var pFontStyle = getTextByPathList(spNode, ["p:style", "a:fontRef"]); + //console.log("genTextBody spNode: ", getTextByPathList(spNode,["p:spPr","a:xfrm","a:ext"])); + + //var lstStyle = textBodyNode["a:lstStyle"]; + + var apNode = textBodyNode["a:p"]; + if (apNode.constructor !== Array) { + apNode = [apNode]; + } + + for (var i = 0; i < apNode.length; i++) { + var pNode = apNode[i]; + var rNode = pNode["a:r"]; + var fldNode = pNode["a:fld"]; + var brNode = pNode["a:br"]; + if (rNode !== undefined) { + rNode = (rNode.constructor === Array) ? rNode : [rNode]; + } + if (rNode !== undefined && fldNode !== undefined) { + fldNode = (fldNode.constructor === Array) ? fldNode : [fldNode]; + rNode = rNode.concat(fldNode) + } + if (rNode !== undefined && brNode !== undefined) { + is_first_br = true; + brNode = (brNode.constructor === Array) ? brNode : [brNode]; + brNode.forEach(function (item, indx) { + item.type = "br"; + }); + if (brNode.length > 1) { + brNode.shift(); + } + rNode = rNode.concat(brNode) + //console.log("single a:p rNode:", rNode, "brNode:", brNode ) + rNode.sort(function (a, b) { + return a.attrs.order - b.attrs.order; + }); + //console.log("sorted rNode:",rNode) + } + //rtlStr = "";//"dir='"+isRTL+"'"; + var styleText = ""; + var marginsVer = getVerticalMargins(pNode, textBodyNode, type, idx, warpObj); + if (marginsVer != "") { + styleText = marginsVer; + } + if (type == "body" || type == "obj" || type == "shape") { + styleText += "font-size: 0px;"; + //styleText += "line-height: 0;"; + styleText += "font-weight: 100;"; + styleText += "font-style: normal;"; + } + var cssName = ""; + + if (styleText in styleTable) { + cssName = styleTable[styleText]["name"]; + } else { + cssName = "_css_" + (Object.keys(styleTable).length + 1); + styleTable[styleText] = { + "name": cssName, + "text": styleText + }; + } + //console.log("textBodyNode: ", textBodyNode["a:lstStyle"]) + var prg_width_node = getTextByPathList(spNode, ["p:spPr", "a:xfrm", "a:ext", "attrs", "cx"]); + var prg_height_node;// = getTextByPathList(spNode, ["p:spPr", "a:xfrm", "a:ext", "attrs", "cy"]); + var sld_prg_width = ((prg_width_node !== undefined) ? ("width:" + (parseInt(prg_width_node) * slideFactor) + "px;") : "width:inherit;"); + var sld_prg_height = ((prg_height_node !== undefined) ? ("height:" + (parseInt(prg_height_node) * slideFactor) + "px;") : ""); + var prg_dir = getPregraphDir(pNode, textBodyNode, idx, type, warpObj); + text += "
"; + var buText_ary = genBuChar(pNode, i, spNode, textBodyNode, pFontStyle, idx, type, warpObj); + var isBullate = (buText_ary[0] !== undefined && buText_ary[0] !== null && buText_ary[0] != "" ) ? true : false; + var bu_width = (buText_ary[1] !== undefined && buText_ary[1] !== null && isBullate) ? buText_ary[1] + buText_ary[2] : 0; + text += (buText_ary[0] !== undefined) ? buText_ary[0]:""; + //get text margin + var margin_ary = getPregraphMargn(pNode, idx, type, isBullate, warpObj); + var margin = margin_ary[0]; + var mrgin_val = margin_ary[1]; + if (prg_width_node === undefined && tbl_col_width !== undefined && prg_width_node != 0){ + //sorce : table text + prg_width_node = tbl_col_width; + } + + var prgrph_text = ""; + //var prgr_txt_art = []; + var total_text_len = 0; + if (rNode === undefined && pNode !== undefined) { + // without r + var prgr_text = genSpanElement(pNode, undefined, spNode, textBodyNode, pFontStyle, slideLayoutSpNode, idx, type, 1, warpObj, isBullate); + if (isBullate) { + var txt_obj = $(prgr_text) + .css({ 'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden' }) + .appendTo($('body')); + total_text_len += txt_obj.outerWidth(); + txt_obj.remove(); + } + prgrph_text += prgr_text; + } else if (rNode !== undefined) { + // with multi r + for (var j = 0; j < rNode.length; j++) { + var prgr_text = genSpanElement(rNode[j], j, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, idx, type, rNode.length, warpObj, isBullate); + if (isBullate) { + var txt_obj = $(prgr_text) + .css({ 'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden'}) + .appendTo($('body')); + total_text_len += txt_obj.outerWidth(); + txt_obj.remove(); + } + prgrph_text += prgr_text; + } + } + + prg_width_node = parseInt(prg_width_node) * slideFactor - bu_width - mrgin_val; + if (isBullate) { + //get prg_width_node if there is a bulltes + //console.log("total_text_len: ", total_text_len, "prg_width_node:", prg_width_node) + + if (total_text_len < prg_width_node ){ + prg_width_node = total_text_len + bu_width; + } + } + var prg_width = ((prg_width_node !== undefined) ? ("width:" + (prg_width_node )) + "px;" : "width:inherit;"); + text += "
"; + text += prgrph_text; + text += "
"; + text += "
"; + } + + return text; + } + + function genBuChar(node, i, spNode, textBodyNode, pFontStyle, idx, type, warpObj) { + //console.log("genBuChar node: ", node, ", spNode: ", spNode, ", pFontStyle: ", pFontStyle, "type", type) + ///////////////////////////////////////Amir/////////////////////////////// + var sldMstrTxtStyles = warpObj["slideMasterTextStyles"]; + var lstStyle = textBodyNode["a:lstStyle"]; + + var rNode = getTextByPathList(node, ["a:r"]); + if (rNode !== undefined && rNode.constructor === Array) { + rNode = rNode[0]; //bullet only to first "a:r" + } + var lvl = parseInt(getTextByPathList(node["a:pPr"], ["attrs", "lvl"])) + 1; + if (isNaN(lvl)) { + lvl = 1; + } + var lvlStr = "a:lvl" + lvl + "pPr"; + var dfltBultColor, dfltBultSize, bultColor, bultSize, color_tye; + + if (rNode !== undefined) { + dfltBultColor = getFontColorPr(rNode, spNode, lstStyle, pFontStyle, lvl, idx, type, warpObj); + color_tye = dfltBultColor[2]; + dfltBultSize = getFontSize(rNode, textBodyNode, pFontStyle, lvl, type, warpObj); + } else { + return ""; + } + //console.log("Bullet Size: " + bultSize); + + var bullet = "", marRStr = "", marLStr = "", margin_val=0, font_val=0; + ///////////////////////////////////////////////////////////////// + + + var pPrNode = node["a:pPr"]; + var BullNONE = getTextByPathList(pPrNode, ["a:buNone"]); + if (BullNONE !== undefined) { + return ""; + } + + var buType = "TYPE_NONE"; + + var layoutMasterNode = getLayoutAndMasterNode(node, idx, type, warpObj); + var pPrNodeLaout = layoutMasterNode.nodeLaout; + var pPrNodeMaster = layoutMasterNode.nodeMaster; + + var buChar = getTextByPathList(pPrNode, ["a:buChar", "attrs", "char"]); + var buNum = getTextByPathList(pPrNode, ["a:buAutoNum", "attrs", "type"]); + var buPic = getTextByPathList(pPrNode, ["a:buBlip"]); + if (buChar !== undefined) { + buType = "TYPE_BULLET"; + } + if (buNum !== undefined) { + buType = "TYPE_NUMERIC"; + } + if (buPic !== undefined) { + buType = "TYPE_BULPIC"; + } + + var buFontSize = getTextByPathList(pPrNode, ["a:buSzPts", "attrs", "val"]); + if (buFontSize === undefined) { + buFontSize = getTextByPathList(pPrNode, ["a:buSzPct", "attrs", "val"]); + if (buFontSize !== undefined) { + var prcnt = parseInt(buFontSize) / 100000; + //dfltBultSize = XXpt + //var dfltBultSizeNoPt = dfltBultSize.substr(0, dfltBultSize.length - 2); + var dfltBultSizeNoPt = parseInt(dfltBultSize, "px"); + bultSize = prcnt * (parseInt(dfltBultSizeNoPt)) + "px";// + "pt"; + } + } else { + bultSize = (parseInt(buFontSize) / 100) * fontSizeFactor + "px"; + } + + //get definde bullet COLOR + var buClrNode = getTextByPathList(pPrNode, ["a:buClr"]); + + + if (buChar === undefined && buNum === undefined && buPic === undefined) { + + if (lstStyle !== undefined) { + BullNONE = getTextByPathList(lstStyle, [lvlStr,"a:buNone"]); + if (BullNONE !== undefined) { + return ""; + } + buType = "TYPE_NONE"; + buChar = getTextByPathList(lstStyle, [lvlStr,"a:buChar", "attrs", "char"]); + buNum = getTextByPathList(lstStyle, [lvlStr,"a:buAutoNum", "attrs", "type"]); + buPic = getTextByPathList(lstStyle, [lvlStr,"a:buBlip"]); + if (buChar !== undefined) { + buType = "TYPE_BULLET"; + } + if (buNum !== undefined) { + buType = "TYPE_NUMERIC"; + } + if (buPic !== undefined) { + buType = "TYPE_BULPIC"; + } + if (buChar !== undefined || buNum !== undefined || buPic !== undefined) { + pPrNode = lstStyle[lvlStr]; + } + } + } + if (buChar === undefined && buNum === undefined && buPic === undefined) { + //check in slidelayout and masterlayout - TODO + if (pPrNodeLaout !== undefined) { + BullNONE = getTextByPathList(pPrNodeLaout, ["a:buNone"]); + if (BullNONE !== undefined) { + return ""; + } + buType = "TYPE_NONE"; + buChar = getTextByPathList(pPrNodeLaout, ["a:buChar", "attrs", "char"]); + buNum = getTextByPathList(pPrNodeLaout, ["a:buAutoNum", "attrs", "type"]); + buPic = getTextByPathList(pPrNodeLaout, ["a:buBlip"]); + if (buChar !== undefined) { + buType = "TYPE_BULLET"; + } + if (buNum !== undefined) { + buType = "TYPE_NUMERIC"; + } + if (buPic !== undefined) { + buType = "TYPE_BULPIC"; + } + } + if (buChar === undefined && buNum === undefined && buPic === undefined) { + //masterlayout + + if (pPrNodeMaster !== undefined) { + BullNONE = getTextByPathList(pPrNodeMaster, ["a:buNone"]); + if (BullNONE !== undefined) { + return ""; + } + buType = "TYPE_NONE"; + buChar = getTextByPathList(pPrNodeMaster, ["a:buChar", "attrs", "char"]); + buNum = getTextByPathList(pPrNodeMaster, ["a:buAutoNum", "attrs", "type"]); + buPic = getTextByPathList(pPrNodeMaster, ["a:buBlip"]); + if (buChar !== undefined) { + buType = "TYPE_BULLET"; + } + if (buNum !== undefined) { + buType = "TYPE_NUMERIC"; + } + if (buPic !== undefined) { + buType = "TYPE_BULPIC"; + } + } + + } + + } + //rtl + var getRtlVal = getTextByPathList(pPrNode, ["attrs", "rtl"]); + if (getRtlVal === undefined) { + getRtlVal = getTextByPathList(pPrNodeLaout, ["attrs", "rtl"]); + if (getRtlVal === undefined && type != "shape") { + getRtlVal = getTextByPathList(pPrNodeMaster, ["attrs", "rtl"]); + } + } + var isRTL = false; + if (getRtlVal !== undefined && getRtlVal == "1") { + isRTL = true; + } + //align + var alignNode = getTextByPathList(pPrNode, ["attrs", "algn"]); //"l" | "ctr" | "r" | "just" | "justLow" | "dist" | "thaiDist + if (alignNode === undefined) { + alignNode = getTextByPathList(pPrNodeLaout, ["attrs", "algn"]); + if (alignNode === undefined) { + alignNode = getTextByPathList(pPrNodeMaster, ["attrs", "algn"]); + } + } + //indent? + var indentNode = getTextByPathList(pPrNode, ["attrs", "indent"]); + if (indentNode === undefined) { + indentNode = getTextByPathList(pPrNodeLaout, ["attrs", "indent"]); + if (indentNode === undefined) { + indentNode = getTextByPathList(pPrNodeMaster, ["attrs", "indent"]); + } + } + var indent = 0; + if (indentNode !== undefined) { + indent = parseInt(indentNode) * slideFactor; + } + //marL + var marLNode = getTextByPathList(pPrNode, ["attrs", "marL"]); + if (marLNode === undefined) { + marLNode = getTextByPathList(pPrNodeLaout, ["attrs", "marL"]); + if (marLNode === undefined) { + marLNode = getTextByPathList(pPrNodeMaster, ["attrs", "marL"]); + } + } + //console.log("genBuChar() isRTL", isRTL, "alignNode:", alignNode) + if (marLNode !== undefined) { + var marginLeft = parseInt(marLNode) * slideFactor; + if (isRTL) {// && alignNode == "r") { + marLStr = "padding-right:";// "margin-right: "; + } else { + marLStr = "padding-left:";//"margin-left: "; + } + margin_val = ((marginLeft + indent < 0) ? 0 : (marginLeft + indent)); + marLStr += margin_val + "px;"; + } + + //marR? + var marRNode = getTextByPathList(pPrNode, ["attrs", "marR"]); + if (marRNode === undefined && marLNode === undefined) { + //need to check if this posble - TODO + marRNode = getTextByPathList(pPrNodeLaout, ["attrs", "marR"]); + if (marRNode === undefined) { + marRNode = getTextByPathList(pPrNodeMaster, ["attrs", "marR"]); + } + } + if (marRNode !== undefined) { + var marginRight = parseInt(marRNode) * slideFactor; + if (isRTL) {// && alignNode == "r") { + marLStr = "padding-right:";// "margin-right: "; + } else { + marLStr = "padding-left:";//"margin-left: "; + } + marRStr += ((marginRight + indent < 0) ? 0 : (marginRight + indent)) + "px;"; + } + + if (buType != "TYPE_NONE") { + //var buFontAttrs = getTextByPathList(pPrNode, ["a:buFont", "attrs"]); + } + //console.log("Bullet Type: " + buType); + //console.log("NumericTypr: " + buNum); + //console.log("buChar: " + (buChar === undefined?'':buChar.charCodeAt(0))); + //get definde bullet COLOR + if (buClrNode === undefined){ + //lstStyle + buClrNode = getTextByPathList(lstStyle, [lvlStr, "a:buClr"]); + } + if (buClrNode === undefined) { + buClrNode = getTextByPathList(pPrNodeLaout, ["a:buClr"]); + if (buClrNode === undefined) { + buClrNode = getTextByPathList(pPrNodeMaster, ["a:buClr"]); + } + } + var defBultColor; + if (buClrNode !== undefined) { + defBultColor = getSolidFill(buClrNode, undefined, undefined, warpObj); + } else { + if (pFontStyle !== undefined) { + //console.log("genBuChar pFontStyle: ", pFontStyle) + defBultColor = getSolidFill(pFontStyle, undefined, undefined, warpObj); + } + } + if (defBultColor === undefined || defBultColor == "NONE") { + bultColor = dfltBultColor; + } else { + bultColor = [defBultColor, "", "solid"]; + color_tye = "solid"; + } + //console.log("genBuChar node:", node, "pPrNode", pPrNode, " buClrNode: ", buClrNode, "defBultColor:", defBultColor,"dfltBultColor:" , dfltBultColor , "bultColor:", bultColor) + + //console.log("genBuChar: buClrNode: ", buClrNode, "bultColor", bultColor) + //get definde bullet SIZE + if (buFontSize === undefined) { + buFontSize = getTextByPathList(pPrNodeLaout, ["a:buSzPts", "attrs", "val"]); + if (buFontSize === undefined) { + buFontSize = getTextByPathList(pPrNodeLaout, ["a:buSzPct", "attrs", "val"]); + if (buFontSize !== undefined) { + var prcnt = parseInt(buFontSize) / 100000; + //var dfltBultSizeNoPt = dfltBultSize.substr(0, dfltBultSize.length - 2); + var dfltBultSizeNoPt = parseInt(dfltBultSize, "px"); + bultSize = prcnt * (parseInt(dfltBultSizeNoPt)) + "px";// + "pt"; + } + }else{ + bultSize = (parseInt(buFontSize) / 100) * fontSizeFactor + "px"; + } + } + if (buFontSize === undefined) { + buFontSize = getTextByPathList(pPrNodeMaster, ["a:buSzPts", "attrs", "val"]); + if (buFontSize === undefined) { + buFontSize = getTextByPathList(pPrNodeMaster, ["a:buSzPct", "attrs", "val"]); + if (buFontSize !== undefined) { + var prcnt = parseInt(buFontSize) / 100000; + //dfltBultSize = XXpt + //var dfltBultSizeNoPt = dfltBultSize.substr(0, dfltBultSize.length - 2); + var dfltBultSizeNoPt = parseInt(dfltBultSize, "px"); + bultSize = prcnt * (parseInt(dfltBultSizeNoPt)) + "px";// + "pt"; + } + } else { + bultSize = (parseInt(buFontSize) / 100) * fontSizeFactor + "px"; + } + } + if (buFontSize === undefined) { + bultSize = dfltBultSize; + } + font_val = parseInt(bultSize, "px"); + //////////////////////////////////////////////////////////////////////// + if (buType == "TYPE_BULLET") { + var typefaceNode = getTextByPathList(pPrNode, ["a:buFont", "attrs", "typeface"]); + var typeface = ""; + if (typefaceNode !== undefined) { + typeface = "font-family: " + typefaceNode; + } + // var marginLeft = parseInt(getTextByPathList(marLNode)) * slideFactor; + // var marginRight = parseInt(getTextByPathList(marRNode)) * slideFactor; + // if (isNaN(marginLeft)) { + // marginLeft = 328600 * slideFactor; + // } + // if (isNaN(marginRight)) { + // marginRight = 0; + // } + + bullet = "
" + htmlBu + "
"; //font_val + //} + // else { + // marginLeft = 328600 * slideFactor * lvl; + + // bullet = "
" + buChar + "
"; + // } + } else if (buType == "TYPE_NUMERIC") { ///////////Amir/////////////////////////////// + //if (buFontAttrs !== undefined) { + // var marginLeft = parseInt(getTextByPathList(pPrNode, ["attrs", "marL"])) * slideFactor; + // var marginRight = parseInt(buFontAttrs["pitchFamily"]); + + // if (isNaN(marginLeft)) { + // marginLeft = 328600 * slideFactor; + // } + // if (isNaN(marginRight)) { + // marginRight = 0; + // } + //var typeface = buFontAttrs["typeface"]; + + bullet = "
"; + // } else { + // marginLeft = 328600 * slideFactor * lvl; + // bullet = "
"; + // } + + } else if (buType == "TYPE_BULPIC") { //PIC BULLET + // var marginLeft = parseInt(getTextByPathList(pPrNode, ["attrs", "marL"])) * slideFactor; + // var marginRight = parseInt(getTextByPathList(pPrNode, ["attrs", "marR"])) * slideFactor; + + // if (isNaN(marginRight)) { + // marginRight = 0; + // } + // //console.log("marginRight: "+marginRight) + // //buPic + // if (isNaN(marginLeft)) { + // marginLeft = 328600 * slideFactor; + // } else { + // marginLeft = 0; + // } + //var buPicId = getTextByPathList(buPic, ["a:blip","a:extLst","a:ext","asvg:svgBlip" , "attrs", "r:embed"]); + var buPicId = getTextByPathList(buPic, ["a:blip", "attrs", "r:embed"]); + var svgPicPath = ""; + var buImg; + if (buPicId !== undefined) { + //svgPicPath = warpObj["slideResObj"][buPicId]["target"]; + //buImg = warpObj["zip"].file(svgPicPath).asText(); + //}else{ + //buPicId = getTextByPathList(buPic, ["a:blip", "attrs", "r:embed"]); + var imgPath = warpObj["slideResObj"][buPicId]["target"]; + //console.log("imgPath: ", imgPath); + var imgArrayBuffer = warpObj["zip"].file(imgPath).asArrayBuffer(); + var imgExt = imgPath.split(".").pop(); + var imgMimeType = getMimeType(imgExt); + buImg = ""// height: 100% + //console.log("imgPath: "+imgPath+"\nimgMimeType: "+imgMimeType) + } + if (buPicId === undefined) { + buImg = "‣"; + } + bullet = "
" + buImg + "
"; + ////////////////////////////////////////////////////////////////////////////////////// + } + // else { + // bullet = "
"; + // } + //console.log("genBuChar: width: ", $(bullet).outerWidth()) + return [bullet, margin_val, font_val];//$(bullet).outerWidth()]; + } + function getHtmlBullet(typefaceNode, buChar) { + //http://www.alanwood.net/demos/wingdings.html + //not work for IE11 + //console.log("genBuChar typefaceNode:", typefaceNode, " buChar:", buChar, "charCodeAt:", buChar.charCodeAt(0)) + switch (buChar) { + case "§": + return "■";//"■"; //9632 | U+25A0 | Black square + break; + case "q": + return "❑";//"❑"; // 10065 | U+2751 | Lower right shadowed white square + break; + case "v": + return "❖";//"❖"; //10070 | U+2756 | Black diamond minus white X + break; + case "Ø": + return "⮚";//"⮚"; //11162 | U+2B9A | Three-D top-lighted rightwards equilateral arrowhead + break; + case "ü": + return "✔";//"✔"; //10004 | U+2714 | Heavy check mark + break; + default: + if (/*typefaceNode == "Wingdings" ||*/ typefaceNode == "Wingdings 2" || typefaceNode == "Wingdings 3"){ + var wingCharCode = getDingbatToUnicode(typefaceNode, buChar); + if (wingCharCode !== null){ + return "&#" + wingCharCode + ";"; + } + } + return "&#" + (buChar.charCodeAt(0)) + ";"; + } + } + function getDingbatToUnicode(typefaceNode, buChar){ + if (dingbat_unicode){ + var dingbat_code = buChar.codePointAt(0) & 0xFFF; + var char_unicode = null; + var len = dingbat_unicode.length; + var i = 0; + while (len--) { + // blah blah + var item = dingbat_unicode[i]; + if (item.f == typefaceNode && item.code == dingbat_code) { + char_unicode = item.unicode; + break; + } + i++; + } + return char_unicode + } + } + + function getLayoutAndMasterNode(node, idx, type, warpObj) { + var pPrNodeLaout, pPrNodeMaster; + var pPrNode = node["a:pPr"]; + //lvl + var lvl = 1; + var lvlNode = getTextByPathList(pPrNode, ["attrs", "lvl"]); + if (lvlNode !== undefined) { + lvl = parseInt(lvlNode) + 1; + } + if (idx !== undefined) { + //slidelayout + pPrNodeLaout = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:lstStyle", "a:lvl" + lvl + "pPr"]); + if (pPrNodeLaout === undefined) { + pPrNodeLaout = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:p", "a:pPr"]); + if (pPrNodeLaout === undefined) { + pPrNodeLaout = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:p", (lvl - 1), "a:pPr"]); + } + } + } + if (type !== undefined) { + //slidelayout + var lvlStr = "a:lvl" + lvl + "pPr"; + if (pPrNodeLaout === undefined) { + pPrNodeLaout = getTextByPathList(warpObj, ["slideLayoutTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr]); + } + //masterlayout + if (type == "title" || type == "ctrTitle") { + pPrNodeMaster = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:titleStyle", lvlStr]); + } else if (type == "body" || type == "obj" || type == "subTitle") { + pPrNodeMaster = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", lvlStr]); + } else if (type == "shape" || type == "diagram") { + pPrNodeMaster = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:otherStyle", lvlStr]); + } else if (type == "textBox") { + pPrNodeMaster = getTextByPathList(warpObj, ["defaultTextStyle", lvlStr]); + } else { + pPrNodeMaster = getTextByPathList(warpObj, ["slideMasterTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr]); + } + } + return { + "nodeLaout": pPrNodeLaout, + "nodeMaster": pPrNodeMaster + }; + } + function genSpanElement(node, rIndex, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, idx, type, rNodeLength, warpObj, isBullate) { + //https://codepen.io/imdunn/pen/GRgwaye ? + var text_style = ""; + var lstStyle = textBodyNode["a:lstStyle"]; + var slideMasterTextStyles = warpObj["slideMasterTextStyles"]; + + var text = node["a:t"]; + //var text_count = text.length; + + var openElemnt = ""; + var styleText = ""; + if (text === undefined && node["type"] !== undefined) { + if (is_first_br) { + //openElemnt = "" + is_first_br = false; + return ""; + } else { + // styleText += "display: block;"; + // openElemnt = " "; + } + // if (text === undefined) { + // return ""; + // } + } + + var pPrNode = pNode["a:pPr"]; + //lvl + var lvl = 1; + var lvlNode = getTextByPathList(pPrNode, ["attrs", "lvl"]); + if (lvlNode !== undefined) { + lvl = parseInt(lvlNode) + 1; + } + //console.log("genSpanElement node: ", node, "rIndex: ", rIndex, ", pNode: ", pNode, ",pPrNode: ", pPrNode, "pFontStyle:", pFontStyle, ", idx: ", idx, "type:", type, warpObj); + var layoutMasterNode = getLayoutAndMasterNode(pNode, idx, type, warpObj); + var pPrNodeLaout = layoutMasterNode.nodeLaout; + var pPrNodeMaster = layoutMasterNode.nodeMaster; + + //Language + var lang = getTextByPathList(node, ["a:rPr", "attrs", "lang"]); + var isRtlLan = (lang !== undefined && rtl_langs_array.indexOf(lang) !== -1)?true:false; + //rtl + var getRtlVal = getTextByPathList(pPrNode, ["attrs", "rtl"]); + if (getRtlVal === undefined) { + getRtlVal = getTextByPathList(pPrNodeLaout, ["attrs", "rtl"]); + if (getRtlVal === undefined && type != "shape") { + getRtlVal = getTextByPathList(pPrNodeMaster, ["attrs", "rtl"]); + } + } + var isRTL = false; + var dirStr = "ltr"; + if (getRtlVal !== undefined && getRtlVal == "1") { + isRTL = true; + dirStr = "rtl"; + } + + var linkID = getTextByPathList(node, ["a:rPr", "a:hlinkClick", "attrs", "r:id"]); + var linkTooltip = ""; + var defLinkClr; + if (linkID !== undefined) { + linkTooltip = getTextByPathList(node, ["a:rPr", "a:hlinkClick", "attrs", "tooltip"]); + if (linkTooltip !== undefined) { + linkTooltip = "title='" + linkTooltip + "'"; + } + defLinkClr = getSchemeColorFromTheme("a:hlink", undefined, undefined, warpObj); + + var linkClrNode = getTextByPathList(node, ["a:rPr", "a:solidFill"]);// getTextByPathList(node, ["a:rPr", "a:solidFill"]); + var rPrlinkClr = getSolidFill(linkClrNode, undefined, undefined, warpObj); + + + //console.log("genSpanElement defLinkClr: ", defLinkClr, "rPrlinkClr:", rPrlinkClr) + if (rPrlinkClr !== undefined && rPrlinkClr != "") { + defLinkClr = rPrlinkClr; + } + + } + ///////////////////////////////////////////////////////////////////////////////////// + //getFontColor + var fontClrPr = getFontColorPr(node, pNode, lstStyle, pFontStyle, lvl, idx, type, warpObj); + var fontClrType = fontClrPr[2]; + //console.log("genSpanElement fontClrPr: ", fontClrPr, "linkID", linkID); + if (fontClrType == "solid") { + if (linkID === undefined && fontClrPr[0] !== undefined && fontClrPr[0] != "") { + styleText += "color: #" + fontClrPr[0] + ";"; + } + else if (linkID !== undefined && defLinkClr !== undefined) { + styleText += "color: #" + defLinkClr + ";"; + } + + if (fontClrPr[1] !== undefined && fontClrPr[1] != "" && fontClrPr[1] != ";") { + styleText += "text-shadow:" + fontClrPr[1] + ";"; + } + if (fontClrPr[3] !== undefined && fontClrPr[3] != "") { + styleText += "background-color: #" + fontClrPr[3] + ";"; + } + } else if (fontClrType == "pattern" || fontClrType == "pic" || fontClrType == "gradient") { + if (fontClrType == "pattern") { + styleText += "background:" + fontClrPr[0][0] + ";"; + if (fontClrPr[0][1] !== null && fontClrPr[0][1] !== undefined && fontClrPr[0][1] != "") { + styleText += "background-size:" + fontClrPr[0][1] + ";";//" 2px 2px;" + + } + if (fontClrPr[0][2] !== null && fontClrPr[0][2] !== undefined && fontClrPr[0][2] != "") { + styleText += "background-position:" + fontClrPr[0][2] + ";";//" 2px 2px;" + + } + // styleText += "-webkit-background-clip: text;" + + // "background-clip: text;" + + // "color: transparent;" + + // "-webkit-text-stroke: " + fontClrPr[1].border + ";" + + // "filter: " + fontClrPr[1].effcts + ";"; + } else if (fontClrType == "pic") { + styleText += fontClrPr[0] + ";"; + // styleText += "-webkit-background-clip: text;" + + // "background-clip: text;" + + // "color: transparent;" + + // "-webkit-text-stroke: " + fontClrPr[1].border + ";"; + } else if (fontClrType == "gradient") { + + var colorAry = fontClrPr[0].color; + var rot = fontClrPr[0].rot; + + styleText += "background: linear-gradient(" + rot + "deg,"; + for (var i = 0; i < colorAry.length; i++) { + if (i == colorAry.length - 1) { + styleText += "#" + colorAry[i] + ");"; + } else { + styleText += "#" + colorAry[i] + ", "; + } + } + // styleText += "-webkit-background-clip: text;" + + // "background-clip: text;" + + // "color: transparent;" + + // "-webkit-text-stroke: " + fontClrPr[1].border + ";"; + + } + styleText += "-webkit-background-clip: text;" + + "background-clip: text;" + + "color: transparent;"; + if (fontClrPr[1].border !== undefined && fontClrPr[1].border !== "") { + styleText += "-webkit-text-stroke: " + fontClrPr[1].border + ";"; + } + if (fontClrPr[1].effcts !== undefined && fontClrPr[1].effcts !== "") { + styleText += "filter: " + fontClrPr[1].effcts + ";"; + } + } + var font_size = getFontSize(node, textBodyNode, pFontStyle, lvl, type, warpObj); + //text_style += "font-size:" + font_size + ";" + + text_style += "font-size:" + font_size + ";" + + // marLStr + + "font-family:" + getFontType(node, type, warpObj, pFontStyle) + ";" + + "font-weight:" + getFontBold(node, type, slideMasterTextStyles) + ";" + + "font-style:" + getFontItalic(node, type, slideMasterTextStyles) + ";" + + "text-decoration:" + getFontDecoration(node, type, slideMasterTextStyles) + ";" + + "text-align:" + getTextHorizontalAlign(node, pNode, type, warpObj) + ";" + + "vertical-align:" + getTextVerticalAlign(node, type, slideMasterTextStyles) + ";"; + //rNodeLength + //console.log("genSpanElement node:", node, "lang:", lang, "isRtlLan:", isRtlLan, "span parent dir:", dirStr) + if (isRtlLan) { //|| rIndex === undefined + styleText += "direction:rtl;"; + }else{ //|| rIndex === undefined + styleText += "direction:ltr;"; + } + // } else if (dirStr == "rtl" && isRtlLan ) { + // styleText += "direction:rtl;"; + + // } else if (dirStr == "ltr" && !isRtlLan ) { + // styleText += "direction:ltr;"; + // } else if (dirStr == "ltr" && isRtlLan){ + // styleText += "direction:ltr;"; + // }else{ + // styleText += "direction:inherit;"; + // } + + // if (dirStr == "rtl" && !isRtlLan) { //|| rIndex === undefined + // styleText += "direction:ltr;"; + // } else if (dirStr == "rtl" && isRtlLan) { + // styleText += "direction:rtl;"; + // } else if (dirStr == "ltr" && !isRtlLan) { + // styleText += "direction:ltr;"; + // } else if (dirStr == "ltr" && isRtlLan) { + // styleText += "direction:rtl;"; + // } else { + // styleText += "direction:inherit;"; + // } + + // //"direction:" + dirStr + ";"; + //if (rNodeLength == 1 || rIndex == 0 ){ + //styleText += "display: table-cell;white-space: nowrap;"; + //} + var highlight = getTextByPathList(node, ["a:rPr", "a:highlight"]); + if (highlight !== undefined) { + styleText += "background-color:#" + getSolidFill(highlight, undefined, undefined, warpObj) + ";"; + //styleText += "Opacity:" + getColorOpacity(highlight) + ";"; + } + + //letter-spacing: + var spcNode = getTextByPathList(node, ["a:rPr", "attrs", "spc"]); + if (spcNode === undefined) { + spcNode = getTextByPathList(pPrNodeLaout, ["a:defRPr", "attrs", "spc"]); + if (spcNode === undefined) { + spcNode = getTextByPathList(pPrNodeMaster, ["a:defRPr", "attrs", "spc"]); + } + } + if (spcNode !== undefined) { + var ltrSpc = parseInt(spcNode) / 100; //pt + styleText += "letter-spacing: " + ltrSpc + "px;";// + "pt;"; + } + + //Text Cap Types + var capNode = getTextByPathList(node, ["a:rPr", "attrs", "cap"]); + if (capNode === undefined) { + capNode = getTextByPathList(pPrNodeLaout, ["a:defRPr", "attrs", "cap"]); + if (capNode === undefined) { + capNode = getTextByPathList(pPrNodeMaster, ["a:defRPr", "attrs", "cap"]); + } + } + if (capNode == "small" || capNode == "all") { + styleText += "text-transform: uppercase"; + } + //styleText += "word-break: break-word;"; + //console.log("genSpanElement node: ", node, ", capNode: ", capNode, ",pPrNodeLaout: ", pPrNodeLaout, ", pPrNodeMaster: ", pPrNodeMaster, "warpObj:", warpObj); + + var cssName = ""; + + if (styleText in styleTable) { + cssName = styleTable[styleText]["name"]; + } else { + cssName = "_css_" + (Object.keys(styleTable).length + 1); + styleTable[styleText] = { + "name": cssName, + "text": styleText + }; + } + var linkColorSyle = ""; + if (fontClrType == "solid" && linkID !== undefined) { + linkColorSyle = "style='color: inherit;'"; + } + + if (linkID !== undefined && linkID != "") { + var linkURL = warpObj["slideResObj"][linkID]["target"]; + linkURL = escapeHtml(linkURL); + return openElemnt + " class='text-block " + cssName + "' style='" + text_style + "'>" + + text.replace(/\t/g, '    ').replace(/\s/g, " ") + "" + closeElemnt; + } else { + return openElemnt + " class='text-block " + cssName + "' style='" + text_style + "'>" + text.replace(/\t/g, '    ').replace(/\s/g, " ") + closeElemnt;//""; + } + + } + + function getPregraphMargn(pNode, idx, type, isBullate, warpObj){ + if (!isBullate){ + return ["",0]; + } + var marLStr = "", marRStr = "" , maginVal = 0; + var pPrNode = pNode["a:pPr"]; + var layoutMasterNode = getLayoutAndMasterNode(pNode, idx, type, warpObj); + var pPrNodeLaout = layoutMasterNode.nodeLaout; + var pPrNodeMaster = layoutMasterNode.nodeMaster; + + // var lang = getTextByPathList(node, ["a:rPr", "attrs", "lang"]); + // var isRtlLan = (lang !== undefined && rtl_langs_array.indexOf(lang) !== -1) ? true : false; + //rtl + var getRtlVal = getTextByPathList(pPrNode, ["attrs", "rtl"]); + if (getRtlVal === undefined) { + getRtlVal = getTextByPathList(pPrNodeLaout, ["attrs", "rtl"]); + if (getRtlVal === undefined && type != "shape") { + getRtlVal = getTextByPathList(pPrNodeMaster, ["attrs", "rtl"]); + } + } + var isRTL = false; + var dirStr = "ltr"; + if (getRtlVal !== undefined && getRtlVal == "1") { + isRTL = true; + dirStr = "rtl"; + } + + //align + var alignNode = getTextByPathList(pPrNode, ["attrs", "algn"]); //"l" | "ctr" | "r" | "just" | "justLow" | "dist" | "thaiDist + if (alignNode === undefined) { + alignNode = getTextByPathList(pPrNodeLaout, ["attrs", "algn"]); + if (alignNode === undefined) { + alignNode = getTextByPathList(pPrNodeMaster, ["attrs", "algn"]); + } + } + //indent? + var indentNode = getTextByPathList(pPrNode, ["attrs", "indent"]); + if (indentNode === undefined) { + indentNode = getTextByPathList(pPrNodeLaout, ["attrs", "indent"]); + if (indentNode === undefined) { + indentNode = getTextByPathList(pPrNodeMaster, ["attrs", "indent"]); + } + } + var indent = 0; + if (indentNode !== undefined) { + indent = parseInt(indentNode) * slideFactor; + } + // + //marL + var marLNode = getTextByPathList(pPrNode, ["attrs", "marL"]); + if (marLNode === undefined) { + marLNode = getTextByPathList(pPrNodeLaout, ["attrs", "marL"]); + if (marLNode === undefined) { + marLNode = getTextByPathList(pPrNodeMaster, ["attrs", "marL"]); + } + } + var marginLeft = 0; + if (marLNode !== undefined) { + marginLeft = parseInt(marLNode) * slideFactor; + } + if ((indentNode !== undefined || marLNode !== undefined)) { + //var lvlIndent = defTabSz * lvl; + + if (isRTL) {// && alignNode == "r") { + //marLStr = "margin-right: "; + marLStr = "padding-right: "; + } else { + //marLStr = "margin-left: "; + marLStr = "padding-left: "; + } + if (isBullate) { + maginVal = Math.abs(0 - indent); + marLStr += maginVal + "px;"; // (minus bullate numeric lenght/size - TODO + } else { + maginVal = Math.abs(marginLeft + indent); + marLStr += maginVal + "px;"; // (minus bullate numeric lenght/size - TODO + } + } + + //marR? + var marRNode = getTextByPathList(pPrNode, ["attrs", "marR"]); + if (marRNode === undefined && marLNode === undefined) { + //need to check if this posble - TODO + marRNode = getTextByPathList(pPrNodeLaout, ["attrs", "marR"]); + if (marRNode === undefined) { + marRNode = getTextByPathList(pPrNodeMaster, ["attrs", "marR"]); + } + } + if (marRNode !== undefined && isBullate) { + var marginRight = parseInt(marRNode) * slideFactor; + if (isRTL) {// && alignNode == "r") { + //marRStr = "margin-right: "; + marRStr = "padding-right: "; + } else { + //marRStr = "margin-left: "; + marRStr = "padding-left: "; + } + marRStr += Math.abs(0 - indent) + "px;"; + } + + + return [marLStr, maginVal]; + } + + function genGlobalCSS() { + var cssText = ""; + //console.log("styleTable: ", styleTable) + for (var key in styleTable) { + var tagname = ""; + // if (settings.slideMode && settings.slideType == "revealjs") { + // tagname = "section"; + // } else { + // tagname = "div"; + // } + //ADD suffix + cssText += tagname + " ." + styleTable[key]["name"] + + ((styleTable[key]["suffix"]) ? styleTable[key]["suffix"] : "") + + "{" + styleTable[key]["text"] + "}\n"; //section > div + } + //cssText += " .slide{margin-bottom: 5px;}\n"; // TODO + + if (settings.slideMode && settings.slideType == "divs2slidesjs") { + //divId + //console.log("slideWidth: ", slideWidth) + cssText += "#all_slides_warpper{margin-right: auto;margin-left: auto;padding-top:10px;width: " + slideWidth + "px;}\n"; // TODO + } + return cssText; + } + + function genTable(node, warpObj) { + var order = node["attrs"]["order"]; + var tableNode = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl"]); + var xfrmNode = getTextByPathList(node, ["p:xfrm"]); + /////////////////////////////////////////Amir//////////////////////////////////////////////// + var getTblPr = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl", "a:tblPr"]); + var getColsGrid = getTextByPathList(node, ["a:graphic", "a:graphicData", "a:tbl", "a:tblGrid", "a:gridCol"]); + var tblDir = ""; + if (getTblPr !== undefined) { + var isRTL = getTblPr["attrs"]["rtl"]; + tblDir = (isRTL == 1 ? "dir=rtl" : "dir=ltr"); + } + var firstRowAttr = getTblPr["attrs"]["firstRow"]; //associated element in the table styles + var firstColAttr = getTblPr["attrs"]["firstCol"]; //associated element in the table styles + var lastRowAttr = getTblPr["attrs"]["lastRow"]; //associated element in the table styles + var lastColAttr = getTblPr["attrs"]["lastCol"]; //associated element in the table styles + var bandRowAttr = getTblPr["attrs"]["bandRow"]; //associated element , in the table styles + var bandColAttr = getTblPr["attrs"]["bandCol"]; //associated element , in the table styles + //console.log("getTblPr: ", getTblPr); + var tblStylAttrObj = { + isFrstRowAttr: (firstRowAttr !== undefined && firstRowAttr == "1") ? 1 : 0, + isFrstColAttr: (firstColAttr !== undefined && firstColAttr == "1") ? 1 : 0, + isLstRowAttr: (lastRowAttr !== undefined && lastRowAttr == "1") ? 1 : 0, + isLstColAttr: (lastColAttr !== undefined && lastColAttr == "1") ? 1 : 0, + isBandRowAttr: (bandRowAttr !== undefined && bandRowAttr == "1") ? 1 : 0, + isBandColAttr: (bandColAttr !== undefined && bandColAttr == "1") ? 1 : 0 + } + + var thisTblStyle; + var tbleStyleId = getTblPr["a:tableStyleId"]; + if (tbleStyleId !== undefined) { + var tbleStylList = tableStyles["a:tblStyleLst"]["a:tblStyle"]; + if (tbleStylList !== undefined) { + if (tbleStylList.constructor === Array) { + for (var k = 0; k < tbleStylList.length; k++) { + if (tbleStylList[k]["attrs"]["styleId"] == tbleStyleId) { + thisTblStyle = tbleStylList[k]; + } + } + } else { + if (tbleStylList["attrs"]["styleId"] == tbleStyleId) { + thisTblStyle = tbleStylList; + } + } + } + } + if (thisTblStyle !== undefined) { + thisTblStyle["tblStylAttrObj"] = tblStylAttrObj; + warpObj["thisTbiStyle"] = thisTblStyle; + } + var tblStyl = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle"]); + var tblBorderStyl = getTextByPathList(tblStyl, ["a:tcBdr"]); + var tbl_borders = ""; + if (tblBorderStyl !== undefined) { + tbl_borders = getTableBorders(tblBorderStyl, warpObj); + } + var tbl_bgcolor = ""; + var tbl_opacity = 1; + var tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:tblBg", "a:fillRef"]); + //console.log( "thisTblStyle:", thisTblStyle, "warpObj:", warpObj) + if (tbl_bgFillschemeClr !== undefined) { + tbl_bgcolor = getSolidFill(tbl_bgFillschemeClr, undefined, undefined, warpObj); + } + if (tbl_bgFillschemeClr === undefined) { + tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:fill", "a:solidFill"]); + tbl_bgcolor = getSolidFill(tbl_bgFillschemeClr, undefined, undefined, warpObj); + } + if (tbl_bgcolor !== "") { + tbl_bgcolor = "background-color: #" + tbl_bgcolor + ";"; + } + //////////////////////////////////////////////////////////////////////////////////////////// + var tableHtml = ""; + + var trNodes = tableNode["a:tr"]; + if (trNodes.constructor !== Array) { + trNodes = [trNodes]; + } + //if (trNodes.constructor === Array) { + //multi rows + var totalrowSpan = 0; + var rowSpanAry = []; + for (var i = 0; i < trNodes.length; i++) { + //////////////rows Style ////////////Amir + var rowHeightParam = trNodes[i]["attrs"]["h"]; + var rowHeight = 0; + var rowsStyl = ""; + if (rowHeightParam !== undefined) { + rowHeight = parseInt(rowHeightParam) * slideFactor; + rowsStyl += "height:" + rowHeight + "px;"; + } + var fillColor = ""; + var row_borders = ""; + var fontClrPr = ""; + var fontWeight = ""; + var band_1H_fillColor; + var band_2H_fillColor; + + if (thisTblStyle !== undefined && thisTblStyle["a:wholeTbl"] !== undefined) { + var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:fill", "a:solidFill"]); + if (bgFillschemeClr !== undefined) { + var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj); + if (local_fillColor !== undefined) { + fillColor = local_fillColor; + } + } + var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcTxStyle"]); + if (rowTxtStyl !== undefined) { + var local_fontColor = getSolidFill(rowTxtStyl, undefined, undefined, warpObj); + if (local_fontColor !== undefined) { + fontClrPr = local_fontColor; + } + + var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : ""); + if (local_fontWeight != "") { + fontWeight = local_fontWeight + } + } + } + + if (i == 0 && tblStylAttrObj["isFrstRowAttr"] == 1 && thisTblStyle !== undefined) { + + var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcStyle", "a:fill", "a:solidFill"]); + if (bgFillschemeClr !== undefined) { + var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj); + if (local_fillColor !== undefined) { + fillColor = local_fillColor; + } + } + var borderStyl = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcStyle", "a:tcBdr"]); + if (borderStyl !== undefined) { + var local_row_borders = getTableBorders(borderStyl, warpObj); + if (local_row_borders != "") { + row_borders = local_row_borders; + } + } + var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:firstRow", "a:tcTxStyle"]); + if (rowTxtStyl !== undefined) { + var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj); + if (local_fontClrPr !== undefined) { + fontClrPr = local_fontClrPr; + } + var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : ""); + if (local_fontWeight !== "") { + fontWeight = local_fontWeight; + } + } + + } else if (i > 0 && tblStylAttrObj["isBandRowAttr"] == 1 && thisTblStyle !== undefined) { + fillColor = ""; + row_borders = undefined; + if ((i % 2) == 0 && thisTblStyle["a:band2H"] !== undefined) { + // console.log("i: ", i, 'thisTblStyle["a:band2H"]:', thisTblStyle["a:band2H"]) + //check if there is a row bg + var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcStyle", "a:fill", "a:solidFill"]); + if (bgFillschemeClr !== undefined) { + var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj); + if (local_fillColor !== "") { + fillColor = local_fillColor; + band_2H_fillColor = local_fillColor; + } + } + + + var borderStyl = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcStyle", "a:tcBdr"]); + if (borderStyl !== undefined) { + var local_row_borders = getTableBorders(borderStyl, warpObj); + if (local_row_borders != "") { + row_borders = local_row_borders; + } + } + var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:band2H", "a:tcTxStyle"]); + if (rowTxtStyl !== undefined) { + var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj); + if (local_fontClrPr !== undefined) { + fontClrPr = local_fontClrPr; + } + } + + var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : ""); + + if (local_fontWeight !== "") { + fontWeight = local_fontWeight; + } + } + if ((i % 2) != 0 && thisTblStyle["a:band1H"] !== undefined) { + var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcStyle", "a:fill", "a:solidFill"]); + if (bgFillschemeClr !== undefined) { + var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj); + if (local_fillColor !== undefined) { + fillColor = local_fillColor; + band_1H_fillColor = local_fillColor; + } + } + var borderStyl = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcStyle", "a:tcBdr"]); + if (borderStyl !== undefined) { + var local_row_borders = getTableBorders(borderStyl, warpObj); + if (local_row_borders != "") { + row_borders = local_row_borders; + } + } + var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:band1H", "a:tcTxStyle"]); + if (rowTxtStyl !== undefined) { + var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj); + if (local_fontClrPr !== undefined) { + fontClrPr = local_fontClrPr; + } + var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : ""); + if (local_fontWeight != "") { + fontWeight = local_fontWeight; + } + } + } + + } + //last row + if (i == (trNodes.length - 1) && tblStylAttrObj["isLstRowAttr"] == 1 && thisTblStyle !== undefined) { + var bgFillschemeClr = getTextByPathList(thisTblStyle, ["a:lastRow", "a:tcStyle", "a:fill", "a:solidFill"]); + if (bgFillschemeClr !== undefined) { + var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj); + if (local_fillColor !== undefined) { + fillColor = local_fillColor; + } + // var local_colorOpacity = getColorOpacity(bgFillschemeClr); + // if(local_colorOpacity !== undefined){ + // colorOpacity = local_colorOpacity; + // } + } + var borderStyl = getTextByPathList(thisTblStyle, ["a:lastRow", "a:tcStyle", "a:tcBdr"]); + if (borderStyl !== undefined) { + var local_row_borders = getTableBorders(borderStyl, warpObj); + if (local_row_borders != "") { + row_borders = local_row_borders; + } + } + var rowTxtStyl = getTextByPathList(thisTblStyle, ["a:lastRow", "a:tcTxStyle"]); + if (rowTxtStyl !== undefined) { + var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj); + if (local_fontClrPr !== undefined) { + fontClrPr = local_fontClrPr; + } + + var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : ""); + if (local_fontWeight !== "") { + fontWeight = local_fontWeight; + } + } + } + rowsStyl += ((row_borders !== undefined) ? row_borders : ""); + rowsStyl += ((fontClrPr !== undefined) ? " color: #" + fontClrPr + ";" : ""); + rowsStyl += ((fontWeight != "") ? " font-weight:" + fontWeight + ";" : ""); + if (fillColor !== undefined && fillColor != "") { + //rowsStyl += "background-color: rgba(" + hexToRgbNew(fillColor) + "," + colorOpacity + ");"; + rowsStyl += "background-color: #" + fillColor + ";"; + } + tableHtml += ""; + //////////////////////////////////////////////// + + var tcNodes = trNodes[i]["a:tc"]; + if (tcNodes !== undefined) { + if (tcNodes.constructor === Array) { + //multi columns + var j = 0; + if (rowSpanAry.length == 0) { + rowSpanAry = Array.apply(null, Array(tcNodes.length)).map(function () { return 0 }); + } + var totalColSpan = 0; + while (j < tcNodes.length) { + if (rowSpanAry[j] == 0 && totalColSpan == 0) { + var a_sorce; + //j=0 : first col + if (j == 0 && tblStylAttrObj["isFrstColAttr"] == 1) { + a_sorce = "a:firstCol"; + if (tblStylAttrObj["isLstRowAttr"] == 1 && i == (trNodes.length - 1) && + getTextByPathList(thisTblStyle, ["a:seCell"]) !== undefined) { + a_sorce = "a:seCell"; + } else if (tblStylAttrObj["isFrstRowAttr"] == 1 && i == 0 && + getTextByPathList(thisTblStyle, ["a:neCell"]) !== undefined) { + a_sorce = "a:neCell"; + } + } else if ((j > 0 && tblStylAttrObj["isBandColAttr"] == 1) && + !(tblStylAttrObj["isFrstColAttr"] == 1 && i == 0) && + !(tblStylAttrObj["isLstRowAttr"] == 1 && i == (trNodes.length - 1)) && + j != (tcNodes.length - 1)) { + + if ((j % 2) != 0) { + + var aBandNode = getTextByPathList(thisTblStyle, ["a:band2V"]); + if (aBandNode === undefined) { + aBandNode = getTextByPathList(thisTblStyle, ["a:band1V"]); + if (aBandNode !== undefined) { + a_sorce = "a:band2V"; + } + } else { + a_sorce = "a:band2V"; + } + + } + } + + if (j == (tcNodes.length - 1) && tblStylAttrObj["isLstColAttr"] == 1) { + a_sorce = "a:lastCol"; + if (tblStylAttrObj["isLstRowAttr"] == 1 && i == (trNodes.length - 1) && getTextByPathList(thisTblStyle, ["a:swCell"]) !== undefined) { + a_sorce = "a:swCell"; + } else if (tblStylAttrObj["isFrstRowAttr"] == 1 && i == 0 && getTextByPathList(thisTblStyle, ["a:nwCell"]) !== undefined) { + a_sorce = "a:nwCell"; + } + } + + var cellParmAry = getTableCellParams(tcNodes[j], getColsGrid, i , j , thisTblStyle, a_sorce, warpObj) + var text = cellParmAry[0]; + var colStyl = cellParmAry[1]; + var cssName = cellParmAry[2]; + var rowSpan = cellParmAry[3]; + var colSpan = cellParmAry[4]; + + + + if (rowSpan !== undefined) { + totalrowSpan++; + rowSpanAry[j] = parseInt(rowSpan) - 1; + tableHtml += ""; + } else if (colSpan !== undefined) { + tableHtml += ""; + totalColSpan = parseInt(colSpan) - 1; + } else { + tableHtml += ""; + } + + } else { + if (rowSpanAry[j] != 0) { + rowSpanAry[j] -= 1; + } + if (totalColSpan != 0) { + totalColSpan--; + } + } + j++; + } + } else { + //single column + + var a_sorce; + if (tblStylAttrObj["isFrstColAttr"] == 1 && !(tblStylAttrObj["isLstRowAttr"] == 1)) { + a_sorce = "a:firstCol"; + + } else if ((tblStylAttrObj["isBandColAttr"] == 1) && !(tblStylAttrObj["isLstRowAttr"] == 1)) { + + var aBandNode = getTextByPathList(thisTblStyle, ["a:band2V"]); + if (aBandNode === undefined) { + aBandNode = getTextByPathList(thisTblStyle, ["a:band1V"]); + if (aBandNode !== undefined) { + a_sorce = "a:band2V"; + } + } else { + a_sorce = "a:band2V"; + } + } + + if (tblStylAttrObj["isLstColAttr"] == 1 && !(tblStylAttrObj["isLstRowAttr"] == 1)) { + a_sorce = "a:lastCol"; + } + + + var cellParmAry = getTableCellParams(tcNodes, getColsGrid , i , undefined , thisTblStyle, a_sorce, warpObj) + var text = cellParmAry[0]; + var colStyl = cellParmAry[1]; + var cssName = cellParmAry[2]; + var rowSpan = cellParmAry[3]; + + if (rowSpan !== undefined) { + tableHtml += ""; + } else { + tableHtml += ""; + } + } + } + tableHtml += ""; + } + ////////////////////////////////////////////////////////////////////////////////// + + + return tableHtml; + } + + function getTableCellParams(tcNodes, getColsGrid , row_idx , col_idx , thisTblStyle, cellSource, warpObj) { + //thisTblStyle["a:band1V"] => thisTblStyle[cellSource] + //text, cell-width, cell-borders, + //var text = genTextBody(tcNodes["a:txBody"], tcNodes, undefined, undefined, undefined, undefined, warpObj);//tableStyles + var rowSpan = getTextByPathList(tcNodes, ["attrs", "rowSpan"]); + var colSpan = getTextByPathList(tcNodes, ["attrs", "gridSpan"]); + var vMerge = getTextByPathList(tcNodes, ["attrs", "vMerge"]); + var hMerge = getTextByPathList(tcNodes, ["attrs", "hMerge"]); + var colStyl = "word-wrap: break-word;"; + var colWidth; + var celFillColor = ""; + var col_borders = ""; + var colFontClrPr = ""; + var colFontWeight = ""; + var lin_bottm = "", + lin_top = "", + lin_left = "", + lin_right = "", + lin_bottom_left_to_top_right = "", + lin_top_left_to_bottom_right = ""; + + var colSapnInt = parseInt(colSpan); + var total_col_width = 0; + if (!isNaN(colSapnInt) && colSapnInt > 1){ + for (var k = 0; k < colSapnInt ; k++) { + total_col_width += parseInt(getTextByPathList(getColsGrid[col_idx + k], ["attrs", "w"])); + } + }else{ + total_col_width = getTextByPathList((col_idx === undefined) ? getColsGrid : getColsGrid[col_idx], ["attrs", "w"]); + } + + + var text = genTextBody(tcNodes["a:txBody"], tcNodes, undefined, undefined, undefined, undefined, warpObj, total_col_width);//tableStyles + + if (total_col_width != 0 /*&& row_idx == 0*/) { + colWidth = parseInt(total_col_width) * slideFactor; + colStyl += "width:" + colWidth + "px;"; + } + + //cell bords + lin_bottm = getTextByPathList(tcNodes, ["a:tcPr", "a:lnB"]); + if (lin_bottm === undefined && cellSource !== undefined) { + if (cellSource !== undefined) + lin_bottm = getTextByPathList(thisTblStyle[cellSource], ["a:tcStyle", "a:tcBdr", "a:bottom", "a:ln"]); + if (lin_bottm === undefined) { + lin_bottm = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:tcBdr", "a:bottom", "a:ln"]); + } + } + lin_top = getTextByPathList(tcNodes, ["a:tcPr", "a:lnT"]); + if (lin_top === undefined) { + if (cellSource !== undefined) + lin_top = getTextByPathList(thisTblStyle[cellSource], ["a:tcStyle", "a:tcBdr", "a:top", "a:ln"]); + if (lin_top === undefined) { + lin_top = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:tcBdr", "a:top", "a:ln"]); + } + } + lin_left = getTextByPathList(tcNodes, ["a:tcPr", "a:lnL"]); + if (lin_left === undefined) { + if (cellSource !== undefined) + lin_left = getTextByPathList(thisTblStyle[cellSource], ["a:tcStyle", "a:tcBdr", "a:left", "a:ln"]); + if (lin_left === undefined) { + lin_left = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:tcBdr", "a:left", "a:ln"]); + } + } + lin_right = getTextByPathList(tcNodes, ["a:tcPr", "a:lnR"]); + if (lin_right === undefined) { + if (cellSource !== undefined) + lin_right = getTextByPathList(thisTblStyle[cellSource], ["a:tcStyle", "a:tcBdr", "a:right", "a:ln"]); + if (lin_right === undefined) { + lin_right = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcStyle", "a:tcBdr", "a:right", "a:ln"]); + } + } + lin_bottom_left_to_top_right = getTextByPathList(tcNodes, ["a:tcPr", "a:lnBlToTr"]); + lin_top_left_to_bottom_right = getTextByPathList(tcNodes, ["a:tcPr", "a:InTlToBr"]); + + if (lin_bottm !== undefined && lin_bottm != "") { + var bottom_line_border = getBorder(lin_bottm, undefined, false, "", warpObj) + if (bottom_line_border != "") { + colStyl += "border-bottom:" + bottom_line_border + ";"; + } + } + if (lin_top !== undefined && lin_top != "") { + var top_line_border = getBorder(lin_top, undefined, false, "", warpObj); + if (top_line_border != "") { + colStyl += "border-top: " + top_line_border + ";"; + } + } + if (lin_left !== undefined && lin_left != "") { + var left_line_border = getBorder(lin_left, undefined, false, "", warpObj) + if (left_line_border != "") { + colStyl += "border-left: " + left_line_border + ";"; + } + } + if (lin_right !== undefined && lin_right != "") { + var right_line_border = getBorder(lin_right, undefined, false, "", warpObj) + if (right_line_border != "") { + colStyl += "border-right:" + right_line_border + ";"; + } + } + + //cell fill color custom + var getCelFill = getTextByPathList(tcNodes, ["a:tcPr"]); + if (getCelFill !== undefined && getCelFill != "") { + var cellObj = { + "p:spPr": getCelFill + }; + celFillColor = getShapeFill(cellObj, undefined, false, warpObj, "slide") + } + + //cell fill color theme + if (celFillColor == "" || celFillColor == "background-color: inherit;") { + var bgFillschemeClr; + if (cellSource !== undefined) + bgFillschemeClr = getTextByPathList(thisTblStyle, [cellSource, "a:tcStyle", "a:fill", "a:solidFill"]); + if (bgFillschemeClr !== undefined) { + var local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj); + if (local_fillColor !== undefined) { + celFillColor = " background-color: #" + local_fillColor + ";"; + } + } + } + var cssName = ""; + if (celFillColor !== undefined && celFillColor != "") { + if (celFillColor in styleTable) { + cssName = styleTable[celFillColor]["name"]; + } else { + cssName = "_tbl_cell_css_" + (Object.keys(styleTable).length + 1); + styleTable[celFillColor] = { + "name": cssName, + "text": celFillColor + }; + } + + } + + //border + // var borderStyl = getTextByPathList(thisTblStyle, [cellSource, "a:tcStyle", "a:tcBdr"]); + // if (borderStyl !== undefined) { + // var local_col_borders = getTableBorders(borderStyl, warpObj); + // if (local_col_borders != "") { + // col_borders = local_col_borders; + // } + // } + // if (col_borders != "") { + // colStyl += col_borders; + // } + + //Text style + var rowTxtStyl; + if (cellSource !== undefined) { + rowTxtStyl = getTextByPathList(thisTblStyle, [cellSource, "a:tcTxStyle"]); + } + // if (rowTxtStyl === undefined) { + // rowTxtStyl = getTextByPathList(thisTblStyle, ["a:wholeTbl", "a:tcTxStyle"]); + // } + if (rowTxtStyl !== undefined) { + var local_fontClrPr = getSolidFill(rowTxtStyl, undefined, undefined, warpObj); + if (local_fontClrPr !== undefined) { + colFontClrPr = local_fontClrPr; + } + var local_fontWeight = ((getTextByPathList(rowTxtStyl, ["attrs", "b"]) == "on") ? "bold" : ""); + if (local_fontWeight !== "") { + colFontWeight = local_fontWeight; + } + } + colStyl += ((colFontClrPr !== "") ? "color: #" + colFontClrPr + ";" : ""); + colStyl += ((colFontWeight != "") ? " font-weight:" + colFontWeight + ";" : ""); + + return [text, colStyl, cssName, rowSpan, colSpan]; + } + + function genChart(node, warpObj) { + + var order = node["attrs"]["order"]; + var xfrmNode = getTextByPathList(node, ["p:xfrm"]); + var result = "
"; + + var rid = node["a:graphic"]["a:graphicData"]["c:chart"]["attrs"]["r:id"]; + var refName = warpObj["slideResObj"][rid]["target"]; + var content = readXmlFile(warpObj["zip"], refName); + var plotArea = getTextByPathList(content, ["c:chartSpace", "c:chart", "c:plotArea"]); + + var chartData = null; + for (var key in plotArea) { + switch (key) { + case "c:lineChart": + chartData = { + "type": "createChart", + "data": { + "chartID": "chart" + chartID, + "chartType": "lineChart", + "chartData": extractChartData(plotArea[key]["c:ser"]) + } + }; + break; + case "c:barChart": + chartData = { + "type": "createChart", + "data": { + "chartID": "chart" + chartID, + "chartType": "barChart", + "chartData": extractChartData(plotArea[key]["c:ser"]) + } + }; + break; + case "c:pieChart": + chartData = { + "type": "createChart", + "data": { + "chartID": "chart" + chartID, + "chartType": "pieChart", + "chartData": extractChartData(plotArea[key]["c:ser"]) + } + }; + break; + case "c:pie3DChart": + chartData = { + "type": "createChart", + "data": { + "chartID": "chart" + chartID, + "chartType": "pie3DChart", + "chartData": extractChartData(plotArea[key]["c:ser"]) + } + }; + break; + case "c:areaChart": + chartData = { + "type": "createChart", + "data": { + "chartID": "chart" + chartID, + "chartType": "areaChart", + "chartData": extractChartData(plotArea[key]["c:ser"]) + } + }; + break; + case "c:scatterChart": + chartData = { + "type": "createChart", + "data": { + "chartID": "chart" + chartID, + "chartType": "scatterChart", + "chartData": extractChartData(plotArea[key]["c:ser"]) + } + }; + break; + case "c:catAx": + break; + case "c:valAx": + break; + default: + } + } + + if (chartData !== null) { + MsgQueue.push(chartData); + } + + chartID++; + return result; + } + + function genDiagram(node, warpObj, source, sType) { + //console.log(warpObj) + //readXmlFile(zip, sldFileName) + /**files define the diagram: + * 1-colors#.xml, + * 2-data#.xml, + * 3-layout#.xml, + * 4-quickStyle#.xml. + * 5-drawing#.xml, which Microsoft added as an extension for persisting diagram layout information. + */ + ///get colors#.xml, data#.xml , layout#.xml , quickStyle#.xml + var order = node["attrs"]["order"]; + var zip = warpObj["zip"]; + var xfrmNode = getTextByPathList(node, ["p:xfrm"]); + var dgmRelIds = getTextByPathList(node, ["a:graphic", "a:graphicData", "dgm:relIds", "attrs"]); + //console.log(dgmRelIds) + var dgmClrFileId = dgmRelIds["r:cs"]; + var dgmDataFileId = dgmRelIds["r:dm"]; + var dgmLayoutFileId = dgmRelIds["r:lo"]; + var dgmQuickStyleFileId = dgmRelIds["r:qs"]; + var dgmClrFileName = warpObj["slideResObj"][dgmClrFileId].target, + dgmDataFileName = warpObj["slideResObj"][dgmDataFileId].target, + dgmLayoutFileName = warpObj["slideResObj"][dgmLayoutFileId].target; + dgmQuickStyleFileName = warpObj["slideResObj"][dgmQuickStyleFileId].target; + //console.log("dgmClrFileName: " , dgmClrFileName,", dgmDataFileName: ",dgmDataFileName,", dgmLayoutFileName: ",dgmLayoutFileName,", dgmQuickStyleFileName: ",dgmQuickStyleFileName); + var dgmClr = readXmlFile(zip, dgmClrFileName); + var dgmData = readXmlFile(zip, dgmDataFileName); + var dgmLayout = readXmlFile(zip, dgmLayoutFileName); + var dgmQuickStyle = readXmlFile(zip, dgmQuickStyleFileName); + //console.log(dgmClr,dgmData,dgmLayout,dgmQuickStyle) + ///get drawing#.xml + // var dgmDrwFileName = ""; + // var dataModelExt = getTextByPathList(dgmData, ["dgm:dataModel", "dgm:extLst", "a:ext", "dsp:dataModelExt", "attrs"]); + // if (dataModelExt !== undefined) { + // var dgmDrwFileId = dataModelExt["relId"]; + // dgmDrwFileName = warpObj["slideResObj"][dgmDrwFileId]["target"]; + // } + // var dgmDrwFile = ""; + // if (dgmDrwFileName != "") { + // dgmDrwFile = readXmlFile(zip, dgmDrwFileName); + // } + // var dgmDrwSpArray = getTextByPathList(dgmDrwFile, ["dsp:drawing", "dsp:spTree", "dsp:sp"]); + //var dgmDrwSpArray = getTextByPathList(warpObj["digramFileContent"], ["dsp:drawing", "dsp:spTree", "dsp:sp"]); + var dgmDrwSpArray = getTextByPathList(warpObj["digramFileContent"], ["p:drawing", "p:spTree", "p:sp"]); + var rslt = ""; + if (dgmDrwSpArray !== undefined) { + var dgmDrwSpArrayLen = dgmDrwSpArray.length; + for (var i = 0; i < dgmDrwSpArrayLen; i++) { + var dspSp = dgmDrwSpArray[i]; + // var dspSpObjToStr = JSON.stringify(dspSp); + // var pSpStr = dspSpObjToStr.replace(/dsp:/g, "p:"); + // var pSpStrToObj = JSON.parse(pSpStr); + //console.log("pSpStrToObj[" + i + "]: ", pSpStrToObj); + //rslt += processSpNode(pSpStrToObj, node, warpObj, "diagramBg", sType) + rslt += processSpNode(dspSp, node, warpObj, "diagramBg", sType) + } + // dgmDrwFile: "dsp:"-> "p:" + } + + return "
" + rslt + "
"; + } + + function getPosition(slideSpNode, pNode, slideLayoutSpNode, slideMasterSpNode, sType) { + var off; + var x = -1, y = -1; + + if (slideSpNode !== undefined) { + off = slideSpNode["a:off"]["attrs"]; + } + + if (off === undefined && slideLayoutSpNode !== undefined) { + off = slideLayoutSpNode["a:off"]["attrs"]; + } else if (off === undefined && slideMasterSpNode !== undefined) { + off = slideMasterSpNode["a:off"]["attrs"]; + } + var offX = 0, offY = 0; + var grpX = 0, grpY = 0; + if (sType == "group") { + + var grpXfrmNode = getTextByPathList(pNode, ["p:grpSpPr", "a:xfrm"]); + if (xfrmNode !== undefined) { + grpX = parseInt(grpXfrmNode["a:off"]["attrs"]["x"]) * slideFactor; + grpY = parseInt(grpXfrmNode["a:off"]["attrs"]["y"]) * slideFactor; + // var chx = parseInt(grpXfrmNode["a:chOff"]["attrs"]["x"]) * slideFactor; + // var chy = parseInt(grpXfrmNode["a:chOff"]["attrs"]["y"]) * slideFactor; + // var cx = parseInt(grpXfrmNode["a:ext"]["attrs"]["cx"]) * slideFactor; + // var cy = parseInt(grpXfrmNode["a:ext"]["attrs"]["cy"]) * slideFactor; + // var chcx = parseInt(grpXfrmNode["a:chExt"]["attrs"]["cx"]) * slideFactor; + // var chcy = parseInt(grpXfrmNode["a:chExt"]["attrs"]["cy"]) * slideFactor; + // var rotate = parseInt(grpXfrmNode["attrs"]["rot"]) + } + } + if (sType == "group-rotate" && pNode["p:grpSpPr"] !== undefined) { + var xfrmNode = pNode["p:grpSpPr"]["a:xfrm"]; + // var ox = parseInt(xfrmNode["a:off"]["attrs"]["x"]) * slideFactor; + // var oy = parseInt(xfrmNode["a:off"]["attrs"]["y"]) * slideFactor; + var chx = parseInt(xfrmNode["a:chOff"]["attrs"]["x"]) * slideFactor; + var chy = parseInt(xfrmNode["a:chOff"]["attrs"]["y"]) * slideFactor; + + offX = chx; + offY = chy; + } + if (off === undefined) { + return ""; + } else { + x = parseInt(off["x"]) * slideFactor; + y = parseInt(off["y"]) * slideFactor; + // if (type = "body") + // console.log("getPosition: slideSpNode: ", slideSpNode, ", type: ", type, "x: ", x, "offX:", offX, "y:", y, "offY:", offY) + return (isNaN(x) || isNaN(y)) ? "" : "top:" + (y - offY + grpY) + "px; left:" + (x - offX + grpX) + "px;"; + } + + } + + function getSize(slideSpNode, slideLayoutSpNode, slideMasterSpNode) { + var ext = undefined; + var w = -1, h = -1; + + if (slideSpNode !== undefined) { + ext = slideSpNode["a:ext"]["attrs"]; + } else if (slideLayoutSpNode !== undefined) { + ext = slideLayoutSpNode["a:ext"]["attrs"]; + } else if (slideMasterSpNode !== undefined) { + ext = slideMasterSpNode["a:ext"]["attrs"]; + } + + if (ext === undefined) { + return ""; + } else { + w = parseInt(ext["cx"]) * slideFactor; + h = parseInt(ext["cy"]) * slideFactor; + return (isNaN(w) || isNaN(h)) ? "" : "width:" + w + "px; height:" + h + "px;"; + } + + } + function getVerticalMargins(pNode, textBodyNode, type, idx, warpObj) { + //margin-top ; + //a:pPr => a:spcBef => a:spcPts (/100) | a:spcPct (/?) + //margin-bottom + //a:pPr => a:spcAft => a:spcPts (/100) | a:spcPct (/?) + //+ + //a:pPr =>a:lnSpc => a:spcPts (/?) | a:spcPct (/?) + //console.log("getVerticalMargins ", pNode, type,idx, warpObj) + //var lstStyle = textBodyNode["a:lstStyle"]; + var lvl = 1 + var spcBefNode = getTextByPathList(pNode, ["a:pPr", "a:spcBef", "a:spcPts", "attrs", "val"]); + var spcAftNode = getTextByPathList(pNode, ["a:pPr", "a:spcAft", "a:spcPts", "attrs", "val"]); + var lnSpcNode = getTextByPathList(pNode, ["a:pPr", "a:lnSpc", "a:spcPct", "attrs", "val"]); + var lnSpcNodeType = "Pct"; + if (lnSpcNode === undefined) { + lnSpcNode = getTextByPathList(pNode, ["a:pPr", "a:lnSpc", "a:spcPts", "attrs", "val"]); + if (lnSpcNode !== undefined) { + lnSpcNodeType = "Pts"; + } + } + var lvlNode = getTextByPathList(pNode, ["a:pPr", "attrs", "lvl"]); + if (lvlNode !== undefined) { + lvl = parseInt(lvlNode) + 1; + } + var fontSize; + if (getTextByPathList(pNode, ["a:r"]) !== undefined) { + var fontSizeStr = getFontSize(pNode["a:r"], textBodyNode,undefined, lvl, type, warpObj); + if (fontSizeStr != "inherit") { + fontSize = parseInt(fontSizeStr, "px"); //pt + } + } + //var spcBef = ""; + //console.log("getVerticalMargins 1", fontSizeStr, fontSize, lnSpcNode, parseInt(lnSpcNode) / 100000, spcBefNode, spcAftNode) + // if(spcBefNode !== undefined){ + // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "pt;" + // } + // else{ + // //i did not found case with percentage + // spcBefNode = getTextByPathList(pNode, ["a:pPr", "a:spcBef", "a:spcPct","attrs","val"]); + // if(spcBefNode !== undefined){ + // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "%;" + // } + // } + //var spcAft = ""; + // if(spcAftNode !== undefined){ + // spcAft = "margin-bottom:" + parseInt(spcAftNode)/100 + "pt;" + // } + // else{ + // //i did not found case with percentage + // spcAftNode = getTextByPathList(pNode, ["a:pPr", "a:spcAft", "a:spcPct","attrs","val"]); + // if(spcAftNode !== undefined){ + // spcBef = "margin-bottom:" + parseInt(spcAftNode)/100 + "%;" + // } + // } + // if(spcAftNode !== undefined){ + // //check in layout and then in master + // } + var isInLayoutOrMaster = true; + if(type == "shape" || type == "textBox"){ + isInLayoutOrMaster = false; + } + if (isInLayoutOrMaster && (spcBefNode === undefined || spcAftNode === undefined || lnSpcNode === undefined)) { + //check in layout + if (idx !== undefined) { + var laypPrNode = getTextByPathList(warpObj, ["slideLayoutTables", "idxTable", idx, "p:txBody", "a:p", (lvl - 1), "a:pPr"]); + + if (spcBefNode === undefined) { + spcBefNode = getTextByPathList(laypPrNode, ["a:spcBef", "a:spcPts", "attrs", "val"]); + // if(spcBefNode !== undefined){ + // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "pt;" + // } + // else{ + // //i did not found case with percentage + // spcBefNode = getTextByPathList(laypPrNode, ["a:spcBef", "a:spcPct","attrs","val"]); + // if(spcBefNode !== undefined){ + // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "%;" + // } + // } + } + + if (spcAftNode === undefined) { + spcAftNode = getTextByPathList(laypPrNode, ["a:spcAft", "a:spcPts", "attrs", "val"]); + // if(spcAftNode !== undefined){ + // spcAft = "margin-bottom:" + parseInt(spcAftNode)/100 + "pt;" + // } + // else{ + // //i did not found case with percentage + // spcAftNode = getTextByPathList(laypPrNode, ["a:spcAft", "a:spcPct","attrs","val"]); + // if(spcAftNode !== undefined){ + // spcBef = "margin-bottom:" + parseInt(spcAftNode)/100 + "%;" + // } + // } + } + + if (lnSpcNode === undefined) { + lnSpcNode = getTextByPathList(laypPrNode, ["a:lnSpc", "a:spcPct", "attrs", "val"]); + if (lnSpcNode === undefined) { + lnSpcNode = getTextByPathList(laypPrNode, ["a:pPr", "a:lnSpc", "a:spcPts", "attrs", "val"]); + if (lnSpcNode !== undefined) { + lnSpcNodeType = "Pts"; + } + } + } + } + + } + if (isInLayoutOrMaster && (spcBefNode === undefined || spcAftNode === undefined || lnSpcNode === undefined)) { + //check in master + //slideMasterTextStyles + var slideMasterTextStyles = warpObj["slideMasterTextStyles"]; + var dirLoc = ""; + var lvl = "a:lvl" + lvl + "pPr"; + switch (type) { + case "title": + case "ctrTitle": + dirLoc = "p:titleStyle"; + break; + case "body": + case "obj": + case "dt": + case "ftr": + case "sldNum": + case "textBox": + // case "shape": + dirLoc = "p:bodyStyle"; + break; + case "shape": + //case "textBox": + default: + dirLoc = "p:otherStyle"; + } + // if (type == "shape" || type == "textBox") { + // lvl = "a:lvl1pPr"; + // } + var inLvlNode = getTextByPathList(slideMasterTextStyles, [dirLoc, lvl]); + if (inLvlNode !== undefined) { + if (spcBefNode === undefined) { + spcBefNode = getTextByPathList(inLvlNode, ["a:spcBef", "a:spcPts", "attrs", "val"]); + // if(spcBefNode !== undefined){ + // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "pt;" + // } + // else{ + // //i did not found case with percentage + // spcBefNode = getTextByPathList(inLvlNode, ["a:spcBef", "a:spcPct","attrs","val"]); + // if(spcBefNode !== undefined){ + // spcBef = "margin-top:" + parseInt(spcBefNode)/100 + "%;" + // } + // } + } + + if (spcAftNode === undefined) { + spcAftNode = getTextByPathList(inLvlNode, ["a:spcAft", "a:spcPts", "attrs", "val"]); + // if(spcAftNode !== undefined){ + // spcAft = "margin-bottom:" + parseInt(spcAftNode)/100 + "pt;" + // } + // else{ + // //i did not found case with percentage + // spcAftNode = getTextByPathList(inLvlNode, ["a:spcAft", "a:spcPct","attrs","val"]); + // if(spcAftNode !== undefined){ + // spcBef = "margin-bottom:" + parseInt(spcAftNode)/100 + "%;" + // } + // } + } + + if (lnSpcNode === undefined) { + lnSpcNode = getTextByPathList(inLvlNode, ["a:lnSpc", "a:spcPct", "attrs", "val"]); + if (lnSpcNode === undefined) { + lnSpcNode = getTextByPathList(inLvlNode, ["a:pPr", "a:lnSpc", "a:spcPts", "attrs", "val"]); + if (lnSpcNode !== undefined) { + lnSpcNodeType = "Pts"; + } + } + } + } + } + var spcBefor = 0, spcAfter = 0, spcLines = 0; + var marginTopBottomStr = ""; + if (spcBefNode !== undefined) { + spcBefor = parseInt(spcBefNode) / 100; + } + if (spcAftNode !== undefined) { + spcAfter = parseInt(spcAftNode) / 100; + } + + if (lnSpcNode !== undefined && fontSize !== undefined) { + if (lnSpcNodeType == "Pts") { + marginTopBottomStr += "padding-top: " + ((parseInt(lnSpcNode) / 100) - fontSize) + "px;";//+ "pt;"; + } else { + var fct = parseInt(lnSpcNode) / 100000; + spcLines = fontSize * (fct - 1) - fontSize;// fontSize * + var pTop = (fct > 1) ? spcLines : 0; + var pBottom = (fct > 1) ? fontSize : 0; + // marginTopBottomStr += "padding-top: " + spcLines + "pt;"; + // marginTopBottomStr += "padding-bottom: " + pBottom + "pt;"; + marginTopBottomStr += "padding-top: " + pBottom + "px;";// + "pt;"; + marginTopBottomStr += "padding-bottom: " + spcLines + "px;";// + "pt;"; + } + } + + //if (spcBefNode !== undefined || lnSpcNode !== undefined) { + marginTopBottomStr += "margin-top: " + (spcBefor - 1) + "px;";// + "pt;"; //margin-top: + spcLines // minus 1 - to fix space + //} + if (spcAftNode !== undefined || lnSpcNode !== undefined) { + //marginTopBottomStr += "margin-bottom: " + ((spcAfter - fontSize < 0) ? 0 : (spcAfter - fontSize)) + "pt;"; //margin-bottom: + spcLines + //marginTopBottomStr += "margin-bottom: " + spcAfter * (1 / 4) + "px;";// + "pt;"; + marginTopBottomStr += "margin-bottom: " + spcAfter + "px;";// + "pt;"; + } + + //console.log("getVerticalMargins 2 fontSize:", fontSize, "lnSpcNode:", lnSpcNode, "spcLines:", spcLines, "spcBefor:", spcBefor, "spcAfter:", spcAfter) + //console.log("getVerticalMargins 3 ", marginTopBottomStr, pNode, warpObj) + + //return spcAft + spcBef; + return marginTopBottomStr; + } + function getHorizontalAlign(node, textBodyNode, idx, type, prg_dir, warpObj) { + var algn = getTextByPathList(node, ["a:pPr", "attrs", "algn"]); + if (algn === undefined) { + //var layoutMasterNode = getLayoutAndMasterNode(node, idx, type, warpObj); + // var pPrNodeLaout = layoutMasterNode.nodeLaout; + // var pPrNodeMaster = layoutMasterNode.nodeMaster; + var lvlIdx = 1; + var lvlNode = getTextByPathList(node, ["a:pPr", "attrs", "lvl"]); + if (lvlNode !== undefined) { + lvlIdx = parseInt(lvlNode) + 1; + } + var lvlStr = "a:lvl" + lvlIdx + "pPr"; + + var lstStyle = textBodyNode["a:lstStyle"]; + algn = getTextByPathList(lstStyle, [lvlStr, "attrs", "algn"]); + + if (algn === undefined && idx !== undefined ) { + //slidelayout + algn = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]); + if (algn === undefined) { + algn = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:p", "a:pPr", "attrs", "algn"]); + if (algn === undefined) { + algn = getTextByPathList(warpObj["slideLayoutTables"]["idxTable"][idx], ["p:txBody", "a:p", (lvlIdx - 1), "a:pPr", "attrs", "algn"]); + } + } + } + if (algn === undefined) { + if (type !== undefined) { + //slidelayout + algn = getTextByPathList(warpObj, ["slideLayoutTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]); + + if (algn === undefined) { + //masterlayout + if (type == "title" || type == "ctrTitle") { + algn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:titleStyle", lvlStr, "attrs", "algn"]); + } else if (type == "body" || type == "obj" || type == "subTitle") { + algn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", lvlStr, "attrs", "algn"]); + } else if (type == "shape" || type == "diagram") { + algn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:otherStyle", lvlStr, "attrs", "algn"]); + } else if (type == "textBox") { + algn = getTextByPathList(warpObj, ["defaultTextStyle", lvlStr, "attrs", "algn"]); + } else { + algn = getTextByPathList(warpObj, ["slideMasterTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]); + } + } + } else { + algn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", lvlStr, "attrs", "algn"]); + } + } + } + + if (algn === undefined) { + if (type == "title" || type == "subTitle" || type == "ctrTitle") { + return "h-mid"; + } else if (type == "sldNum") { + return "h-right"; + } + } + if (algn !== undefined) { + switch (algn) { + case "l": + if (prg_dir == "pregraph-rtl"){ + //return "h-right"; + return "h-left-rtl"; + }else{ + return "h-left"; + } + break; + case "r": + if (prg_dir == "pregraph-rtl") { + //return "h-left"; + return "h-right-rtl"; + }else{ + return "h-right"; + } + break; + case "ctr": + return "h-mid"; + break; + case "just": + case "dist": + default: + return "h-" + algn; + } + } + //return algn === "ctr" ? "h-mid" : algn === "r" ? "h-right" : "h-left"; + } + function getPregraphDir(node, textBodyNode, idx, type, warpObj) { + var rtl = getTextByPathList(node, ["a:pPr", "attrs", "rtl"]); + //console.log("getPregraphDir node:", node, "textBodyNode", textBodyNode, "rtl:", rtl, "idx", idx, "type", type, "warpObj", warpObj) + + + if (rtl === undefined) { + var layoutMasterNode = getLayoutAndMasterNode(node, idx, type, warpObj); + var pPrNodeLaout = layoutMasterNode.nodeLaout; + var pPrNodeMaster = layoutMasterNode.nodeMaster; + rtl = getTextByPathList(pPrNodeLaout, ["attrs", "rtl"]); + if (rtl === undefined && type != "shape") { + rtl = getTextByPathList(pPrNodeMaster, ["attrs", "rtl"]); + } + } + + if (rtl == "1") { + return "pregraph-rtl"; + } else if (rtl == "0") { + return "pregraph-ltr"; + } + return "pregraph-inherit"; + + // var contentDir = getContentDir(type, warpObj); + // console.log("getPregraphDir node:", node["a:r"], "rtl:", rtl, "idx", idx, "type", type, "contentDir:", contentDir) + + // if (contentDir == "content"){ + // return "pregraph-ltr"; + // } else if (contentDir == "content-rtl"){ + // return "pregraph-rtl"; + // } + // return ""; + } + function getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type) { + + //X, , + var anchor = getTextByPathList(node, ["p:txBody", "a:bodyPr", "attrs", "anchor"]); + //console.log("getVerticalAlign anchor:", anchor, "slideLayoutSpNode: ", slideLayoutSpNode) + if (anchor === undefined) { + //console.log("getVerticalAlign type:", type," node:", node, "slideLayoutSpNode:", slideLayoutSpNode, "slideMasterSpNode:", slideMasterSpNode) + anchor = getTextByPathList(slideLayoutSpNode, ["p:txBody", "a:bodyPr", "attrs", "anchor"]); + if (anchor === undefined) { + anchor = getTextByPathList(slideMasterSpNode, ["p:txBody", "a:bodyPr", "attrs", "anchor"]); + if (anchor === undefined) { + //"If this attribute is omitted, then a value of t, or top is implied." + anchor = "t";//getTextByPathList(slideMasterSpNode, ["p:txBody", "a:bodyPr", "attrs", "anchor"]); + } + } + } + //console.log("getVerticalAlign:", node, slideLayoutSpNode, slideMasterSpNode, type, anchor) + return (anchor === "ctr")?"v-mid" : ((anchor === "b") ? "v-down" : "v-up"); + } + + function getContentDir(node, type, warpObj) { + return "content"; + var defRtl = getTextByPathList(node, ["p:txBody", "a:lstStyle", "a:defPPr", "attrs", "rtl"]); + if (defRtl !== undefined) { + if (defRtl == "1"){ + return "content-rtl"; + } else if (defRtl == "0") { + return "content"; + } + } + //var lvl1Rtl = getTextByPathList(node, ["p:txBody", "a:lstStyle", "lvl1pPr", "attrs", "rtl"]); + // if (lvl1Rtl !== undefined) { + // if (lvl1Rtl == "1") { + // return "content-rtl"; + // } else if (lvl1Rtl == "0") { + // return "content"; + // } + // } + var rtlCol = getTextByPathList(node, ["p:txBody", "a:bodyPr", "attrs", "rtlCol"]); + if (rtlCol !== undefined) { + if (rtlCol == "1") { + return "content-rtl"; + } else if (rtlCol == "0") { + return "content"; + } + } + //console.log("getContentDir node:", node, "rtlCol:", rtlCol) + + if (type === undefined) { + return "content"; + } + var slideMasterTextStyles = warpObj["slideMasterTextStyles"]; + var dirLoc = ""; + + switch (type) { + case "title": + case "ctrTitle": + dirLoc = "p:titleStyle"; + break; + case "body": + case "dt": + case "ftr": + case "sldNum": + case "textBox": + dirLoc = "p:bodyStyle"; + break; + case "shape": + dirLoc = "p:otherStyle"; + } + if (slideMasterTextStyles !== undefined && dirLoc !== "") { + var dirVal = getTextByPathList(slideMasterTextStyles[dirLoc], ["a:lvl1pPr", "attrs", "rtl"]); + if (dirVal == "1") { + return "content-rtl"; + } + } + // else { + // if (type == "textBox") { + // var dirVal = getTextByPathList(warpObj, ["defaultTextStyle", "a:lvl1pPr", "attrs", "rtl"]); + // if (dirVal == "1") { + // return "content-rtl"; + // } + // } + // } + return "content"; + //console.log("getContentDir() type:", type, "slideMasterTextStyles:", slideMasterTextStyles,"dirNode:",dirVal) + } + + function getFontType(node, type, warpObj, pFontStyle) { + var typeface = getTextByPathList(node, ["a:rPr", "a:latin", "attrs", "typeface"]); + + if (typeface === undefined) { + var fontIdx = ""; + var fontGrup = ""; + if (pFontStyle !== undefined) { + fontIdx = getTextByPathList(pFontStyle, ["attrs", "idx"]); + } + var fontSchemeNode = getTextByPathList(warpObj["themeContent"], ["a:theme", "a:themeElements", "a:fontScheme"]); + if (fontIdx == "") { + if (type == "title" || type == "subTitle" || type == "ctrTitle") { + fontIdx = "major"; + } else { + fontIdx = "minor"; + } + } + fontGrup = "a:" + fontIdx + "Font"; + typeface = getTextByPathList(fontSchemeNode, [fontGrup, "a:latin", "attrs", "typeface"]); + } + + return (typeface === undefined) ? "inherit" : typeface; + } + + function getFontColorPr(node, pNode, lstStyle, pFontStyle, lvl, idx, type, warpObj) { + //text border using: text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; + //{getFontColor(..) return color} -> getFontColorPr(..) return array[color,textBordr/shadow] + //https://stackoverflow.com/questions/2570972/css-font-border + //https://www.w3schools.com/cssref/css3_pr_text-shadow.asp + //themeContent + //console.log("getFontColorPr>> type:", type, ", node: ", node) + var rPrNode = getTextByPathList(node, ["a:rPr"]); + var filTyp, color, textBordr, colorType = "", highlightColor = ""; + //console.log("getFontColorPr type:", type, ", node: ", node, "pNode:", pNode, "pFontStyle:", pFontStyle) + if (rPrNode !== undefined) { + filTyp = getFillType(rPrNode); + if (filTyp == "SOLID_FILL") { + var solidFillNode = rPrNode["a:solidFill"];// getTextByPathList(node, ["a:rPr", "a:solidFill"]); + color = getSolidFill(solidFillNode, undefined, undefined, warpObj); + var highlightNode = rPrNode["a:highlight"]; + if (highlightNode !== undefined) { + highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj); + } + colorType = "solid"; + } else if (filTyp == "PATTERN_FILL") { + var pattFill = rPrNode["a:pattFill"];// getTextByPathList(node, ["a:rPr", "a:pattFill"]); + color = getPatternFill(pattFill, warpObj); + colorType = "pattern"; + } else if (filTyp == "PIC_FILL") { + color = getBgPicFill(rPrNode, "slideBg", warpObj, undefined, undefined); + //color = getPicFill("slideBg", rPrNode["a:blipFill"], warpObj); + colorType = "pic"; + } else if (filTyp == "GRADIENT_FILL") { + var shpFill = rPrNode["a:gradFill"]; + color = getGradientFill(shpFill, warpObj); + colorType = "gradient"; + } + } + if (color === undefined && getTextByPathList(lstStyle, ["a:lvl" + lvl + "pPr", "a:defRPr"]) !== undefined) { + //lstStyle + var lstStyledefRPr = getTextByPathList(lstStyle, ["a:lvl" + lvl + "pPr", "a:defRPr"]); + filTyp = getFillType(lstStyledefRPr); + if (filTyp == "SOLID_FILL") { + var solidFillNode = lstStyledefRPr["a:solidFill"];// getTextByPathList(node, ["a:rPr", "a:solidFill"]); + color = getSolidFill(solidFillNode, undefined, undefined, warpObj); + var highlightNode = lstStyledefRPr["a:highlight"]; + if (highlightNode !== undefined) { + highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj); + } + colorType = "solid"; + } else if (filTyp == "PATTERN_FILL") { + var pattFill = lstStyledefRPr["a:pattFill"];// getTextByPathList(node, ["a:rPr", "a:pattFill"]); + color = getPatternFill(pattFill, warpObj); + colorType = "pattern"; + } else if (filTyp == "PIC_FILL") { + color = getBgPicFill(lstStyledefRPr, "slideBg", warpObj, undefined, undefined); + //color = getPicFill("slideBg", rPrNode["a:blipFill"], warpObj); + colorType = "pic"; + } else if (filTyp == "GRADIENT_FILL") { + var shpFill = lstStyledefRPr["a:gradFill"]; + color = getGradientFill(shpFill, warpObj); + colorType = "gradient"; + } + + } + if (color === undefined) { + var sPstyle = getTextByPathList(pNode, ["p:style", "a:fontRef"]); + if (sPstyle !== undefined) { + color = getSolidFill(sPstyle, undefined, undefined, warpObj); + if (color !== undefined) { + colorType = "solid"; + } + var highlightNode = sPstyle["a:highlight"]; //is "a:highlight" node in 'a:fontRef' ? + if (highlightNode !== undefined) { + highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj); + } + } + if (color === undefined) { + if (pFontStyle !== undefined) { + color = getSolidFill(pFontStyle, undefined, undefined, warpObj); + if (color !== undefined) { + colorType = "solid"; + } + } + } + } + //console.log("getFontColorPr node", node, "colorType: ", colorType,"color: ",color) + + if (color === undefined) { + + var layoutMasterNode = getLayoutAndMasterNode(pNode, idx, type, warpObj); + var pPrNodeLaout = layoutMasterNode.nodeLaout; + var pPrNodeMaster = layoutMasterNode.nodeMaster; + + if (pPrNodeLaout !== undefined) { + var defRpRLaout = getTextByPathList(pPrNodeLaout, ["a:defRPr", "a:solidFill"]); + if (defRpRLaout !== undefined) { + color = getSolidFill(defRpRLaout, undefined, undefined, warpObj); + var highlightNode = getTextByPathList(pPrNodeLaout, ["a:defRPr", "a:highlight"]); + if (highlightNode !== undefined) { + highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj); + } + colorType = "solid"; + } + } + if (color === undefined) { + + if (pPrNodeMaster !== undefined) { + var defRprMaster = getTextByPathList(pPrNodeMaster, ["a:defRPr", "a:solidFill"]); + if (defRprMaster !== undefined) { + color = getSolidFill(defRprMaster, undefined, undefined, warpObj); + var highlightNode = getTextByPathList(pPrNodeMaster, ["a:defRPr", "a:highlight"]); + if (highlightNode !== undefined) { + highlightColor = getSolidFill(highlightNode, undefined, undefined, warpObj); + } + colorType = "solid"; + } + } + } + } + var txtEffects = []; + var txtEffObj = {} + //textBordr + var txtBrdrNode = getTextByPathList(node, ["a:rPr", "a:ln"]); + var textBordr = ""; + if (txtBrdrNode !== undefined && txtBrdrNode["a:noFill"] === undefined) { + var txBrd = getBorder(node, pNode, false, "text", warpObj); + var txBrdAry = txBrd.split(" "); + //var brdSize = (parseInt(txBrdAry[0].substring(0, txBrdAry[0].indexOf("pt")))) + "px"; + var brdSize = (parseInt(txBrdAry[0].substring(0, txBrdAry[0].indexOf("px")))) + "px"; + var brdClr = txBrdAry[2]; + //var brdTyp = txBrdAry[1]; //not in use + //console.log("getFontColorPr txBrdAry:", txBrdAry) + if (colorType == "solid") { + textBordr = "-" + brdSize + " 0 " + brdClr + ", 0 " + brdSize + " " + brdClr + ", " + brdSize + " 0 " + brdClr + ", 0 -" + brdSize + " " + brdClr; + // if (oShadowStr != "") { + // textBordr += "," + oShadowStr; + // } else { + // textBordr += ";"; + // } + txtEffects.push(textBordr); + } else { + //textBordr = brdSize + " " + brdClr; + txtEffObj.border = brdSize + " " + brdClr; + } + } + // else { + // //if no border but exist/not exist shadow + // if (colorType == "solid") { + // textBordr = oShadowStr; + // } else { + // //TODO + // } + // } + var txtGlowNode = getTextByPathList(node, ["a:rPr", "a:effectLst", "a:glow"]); + var oGlowStr = ""; + if (txtGlowNode !== undefined) { + var glowClr = getSolidFill(txtGlowNode, undefined, undefined, warpObj); + var rad = (txtGlowNode["attrs"]["rad"]) ? (txtGlowNode["attrs"]["rad"] * slideFactor) : 0; + oGlowStr = "0 0 " + rad + "px #" + glowClr + + ", 0 0 " + rad + "px #" + glowClr + + ", 0 0 " + rad + "px #" + glowClr + + ", 0 0 " + rad + "px #" + glowClr + + ", 0 0 " + rad + "px #" + glowClr + + ", 0 0 " + rad + "px #" + glowClr + + ", 0 0 " + rad + "px #" + glowClr; + if (colorType == "solid") { + txtEffects.push(oGlowStr); + } else { + // txtEffObj.glow = { + // radiuse: rad, + // color: glowClr + // } + txtEffects.push( + "drop-shadow(0 0 " + rad / 3 + "px #" + glowClr + ") " + + "drop-shadow(0 0 " + rad * 2 / 3 + "px #" + glowClr + ") " + + "drop-shadow(0 0 " + rad + "px #" + glowClr + ")" + ); + } + } + var txtShadow = getTextByPathList(node, ["a:rPr", "a:effectLst", "a:outerShdw"]); + var oShadowStr = ""; + if (txtShadow !== undefined) { + //https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/drop-shadow() + //https://stackoverflow.com/questions/60468487/css-text-with-linear-gradient-shadow-and-text-outline + //https://css-tricks.com/creating-playful-effects-with-css-text-shadows/ + //https://designshack.net/articles/css/12-fun-css-text-shadows-you-can-copy-and-paste/ + + var shadowClr = getSolidFill(txtShadow, undefined, undefined, warpObj); + var outerShdwAttrs = txtShadow["attrs"]; + // algn: "bl" + // dir: "2640000" + // dist: "38100" + // rotWithShape: "0/1" - Specifies whether the shadow rotates with the shape if the shape is rotated. + //blurRad (Blur Radius) - Specifies the blur radius of the shadow. + //kx (Horizontal Skew) - Specifies the horizontal skew angle. + //ky (Vertical Skew) - Specifies the vertical skew angle. + //sx (Horizontal Scaling Factor) - Specifies the horizontal scaling slideFactor; negative scaling causes a flip. + //sy (Vertical Scaling Factor) - Specifies the vertical scaling slideFactor; negative scaling causes a flip. + var algn = outerShdwAttrs["algn"]; + var dir = (outerShdwAttrs["dir"]) ? (parseInt(outerShdwAttrs["dir"]) / 60000) : 0; + var dist = parseInt(outerShdwAttrs["dist"]) * slideFactor;//(px) //* (3 / 4); //(pt) + var rotWithShape = outerShdwAttrs["rotWithShape"]; + var blurRad = (outerShdwAttrs["blurRad"]) ? (parseInt(outerShdwAttrs["blurRad"]) * slideFactor + "px") : ""; + var sx = (outerShdwAttrs["sx"]) ? (parseInt(outerShdwAttrs["sx"]) / 100000) : 1; + var sy = (outerShdwAttrs["sy"]) ? (parseInt(outerShdwAttrs["sy"]) / 100000) : 1; + var vx = dist * Math.sin(dir * Math.PI / 180); + var hx = dist * Math.cos(dir * Math.PI / 180); + + //console.log("getFontColorPr outerShdwAttrs:", outerShdwAttrs, ", shadowClr:", shadowClr, ", algn: ", algn, ",dir: ", dir, ", dist: ", dist, ",rotWithShape: ", rotWithShape, ", color: ", color) + + if (!isNaN(vx) && !isNaN(hx)) { + oShadowStr = hx + "px " + vx + "px " + blurRad + " #" + shadowClr;// + ";"; + if (colorType == "solid") { + txtEffects.push(oShadowStr); + } else { + + // txtEffObj.oShadow = { + // hx: hx, + // vx: vx, + // radius: blurRad, + // color: shadowClr + // } + + //txtEffObj.oShadow = hx + "px " + vx + "px " + blurRad + " #" + shadowClr; + + txtEffects.push("drop-shadow(" + hx + "px " + vx + "px " + blurRad + " #" + shadowClr + ")"); + } + } + //console.log("getFontColorPr vx:", vx, ", hx: ", hx, ", sx: ", sx, ", sy: ", sy, ",oShadowStr: ", oShadowStr) + } + //console.log("getFontColorPr>>> color:", color) + // if (color === undefined || color === "FFF") { + // color = "#000"; + // } else { + // color = "" + color; + // } + var text_effcts = "", txt_effects; + if (colorType == "solid") { + if (txtEffects.length > 0) { + text_effcts = txtEffects.join(","); + } + txt_effects = text_effcts + ";" + } else { + if (txtEffects.length > 0) { + text_effcts = txtEffects.join(" "); + } + txtEffObj.effcts = text_effcts; + txt_effects = txtEffObj + } + //console.log("getFontColorPr txt_effects:", txt_effects) + + //return [color, textBordr, colorType]; + return [color, txt_effects, colorType, highlightColor]; + } + function getFontSize(node, textBodyNode, pFontStyle, lvl, type, warpObj) { + // if(type == "sldNum") + //console.log("getFontSize node:", node, "lstStyle", lstStyle, "lvl:", lvl, 'type:', type, "warpObj:", warpObj) + var lstStyle = (textBodyNode !== undefined)? textBodyNode["a:lstStyle"] : undefined; + var lvlpPr = "a:lvl" + lvl + "pPr"; + var fontSize = undefined; + var sz, kern; + if (node["a:rPr"] !== undefined) { + fontSize = parseInt(node["a:rPr"]["attrs"]["sz"]) / 100; + } + if (isNaN(fontSize) || fontSize === undefined && node["a:fld"] !== undefined) { + sz = getTextByPathList(node["a:fld"], ["a:rPr", "attrs", "sz"]); + fontSize = parseInt(sz) / 100; + } + if ((isNaN(fontSize) || fontSize === undefined) && node["a:t"] === undefined) { + sz = getTextByPathList(node["a:endParaRPr"], [ "attrs", "sz"]); + fontSize = parseInt(sz) / 100; + } + if ((isNaN(fontSize) || fontSize === undefined) && lstStyle !== undefined) { + sz = getTextByPathList(lstStyle, [lvlpPr, "a:defRPr", "attrs", "sz"]); + fontSize = parseInt(sz) / 100; + } + //a:spAutoFit + var isAutoFit = false; + var isKerning = false; + if (textBodyNode !== undefined){ + var spAutoFitNode = getTextByPathList(textBodyNode, ["a:bodyPr", "a:spAutoFit"]); + // if (spAutoFitNode === undefined) { + // spAutoFitNode = getTextByPathList(textBodyNode, ["a:bodyPr", "a:normAutofit"]); + // } + if (spAutoFitNode !== undefined){ + isAutoFit = true; + isKerning = true; + } + } + if (isNaN(fontSize) || fontSize === undefined) { + // if (type == "shape" || type == "textBox") { + // type = "body"; + // lvlpPr = "a:lvl1pPr"; + // } + sz = getTextByPathList(warpObj["slideLayoutTables"], ["typeTable", type, "p:txBody", "a:lstStyle", lvlpPr, "a:defRPr", "attrs", "sz"]); + fontSize = parseInt(sz) / 100; + kern = getTextByPathList(warpObj["slideLayoutTables"], ["typeTable", type, "p:txBody", "a:lstStyle", lvlpPr, "a:defRPr", "attrs", "kern"]); + if (isKerning && kern !== undefined && !isNaN(fontSize) && (fontSize - parseInt(kern) / 100) > 0){ + fontSize = fontSize - parseInt(kern) / 100; + } + } + + if (isNaN(fontSize) || fontSize === undefined) { + // if (type == "shape" || type == "textBox") { + // type = "body"; + // lvlpPr = "a:lvl1pPr"; + // } + sz = getTextByPathList(warpObj["slideMasterTables"], ["typeTable", type, "p:txBody", "a:lstStyle", lvlpPr, "a:defRPr", "attrs", "sz"]); + kern = getTextByPathList(warpObj["slideMasterTables"], ["typeTable", type, "p:txBody", "a:lstStyle", lvlpPr, "a:defRPr", "attrs", "kern"]); + if (sz === undefined) { + if (type == "title" || type == "subTitle" || type == "ctrTitle") { + sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:titleStyle", lvlpPr, "a:defRPr", "attrs", "sz"]); + kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:titleStyle", lvlpPr, "a:defRPr", "attrs", "kern"]); + } else if (type == "body" || type == "obj" || type == "dt" || type == "sldNum" || type === "textBox") { + sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:bodyStyle", lvlpPr, "a:defRPr", "attrs", "sz"]); + kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:bodyStyle", lvlpPr, "a:defRPr", "attrs", "kern"]); + } + else if (type == "shape") { + //textBox and shape text does not indent + sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "sz"]); + kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "kern"]); + isKerning = false; + } + + if (sz === undefined) { + sz = getTextByPathList(warpObj["defaultTextStyle"], [lvlpPr, "a:defRPr", "attrs", "sz"]); + kern = (kern === undefined)? getTextByPathList(warpObj["defaultTextStyle"], [lvlpPr, "a:defRPr", "attrs", "kern"]) : undefined; + isKerning = false; + } + // else if (type === undefined || type == "shape") { + // sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "sz"]); + // kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "kern"]); + // } + // else if (type == "textBox") { + // sz = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "sz"]); + // kern = getTextByPathList(warpObj["slideMasterTextStyles"], ["p:otherStyle", lvlpPr, "a:defRPr", "attrs", "kern"]); + // } + } + fontSize = parseInt(sz) / 100; + if (isKerning && kern !== undefined && !isNaN(fontSize) && ((fontSize - parseInt(kern) / 100) > parseInt(kern) / 100 )) { + fontSize = fontSize - parseInt(kern) / 100; + //fontSize = parseInt(kern) / 100; + } + } + + var baseline = getTextByPathList(node, ["a:rPr", "attrs", "baseline"]); + if (baseline !== undefined && !isNaN(fontSize)) { + var baselineVl = parseInt(baseline) / 100000; + //fontSize -= 10; + // fontSize = fontSize * baselineVl; + fontSize -= baselineVl; + } + + if (!isNaN(fontSize)){ + var normAutofit = getTextByPathList(textBodyNode, ["a:bodyPr", "a:normAutofit", "attrs", "fontScale"]); + if (normAutofit !== undefined && normAutofit != 0){ + //console.log("fontSize", fontSize, "normAutofit: ", normAutofit, normAutofit/100000) + fontSize = Math.round(fontSize * (normAutofit / 100000)) + } + } + + return isNaN(fontSize) ? ((type == "br") ? "initial" : "inherit") : (fontSize * fontSizeFactor + "px");// + "pt"); + } + + function getFontBold(node, type, slideMasterTextStyles) { + return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["b"] === "1") ? "bold" : "inherit"; + } + + function getFontItalic(node, type, slideMasterTextStyles) { + return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["i"] === "1") ? "italic" : "inherit"; + } + + function getFontDecoration(node, type, slideMasterTextStyles) { + ///////////////////////////////Amir/////////////////////////////// + if (node["a:rPr"] !== undefined) { + var underLine = node["a:rPr"]["attrs"]["u"] !== undefined ? node["a:rPr"]["attrs"]["u"] : "none"; + var strikethrough = node["a:rPr"]["attrs"]["strike"] !== undefined ? node["a:rPr"]["attrs"]["strike"] : 'noStrike'; + //console.log("strikethrough: "+strikethrough); + + if (underLine != "none" && strikethrough == "noStrike") { + return "underline"; + } else if (underLine == "none" && strikethrough != "noStrike") { + return "line-through"; + } else if (underLine != "none" && strikethrough != "noStrike") { + return "underline line-through"; + } else { + return "inherit"; + } + } else { + return "inherit"; + } + ///////////////////////////////////////////////////////////////// + //return (node["a:rPr"] !== undefined && node["a:rPr"]["attrs"]["u"] === "sng") ? "underline" : "inherit"; + } + ////////////////////////////////////Amir///////////////////////////////////// + function getTextHorizontalAlign(node, pNode, type, warpObj) { + //console.log("getTextHorizontalAlign: type: ", type, ", node: ", node) + var getAlgn = getTextByPathList(node, ["a:pPr", "attrs", "algn"]); + if (getAlgn === undefined) { + getAlgn = getTextByPathList(pNode, ["a:pPr", "attrs", "algn"]); + } + if (getAlgn === undefined) { + if (type == "title" || type == "ctrTitle" || type == "subTitle") { + var lvlIdx = 1; + var lvlNode = getTextByPathList(pNode, ["a:pPr", "attrs", "lvl"]); + if (lvlNode !== undefined) { + lvlIdx = parseInt(lvlNode) + 1; + } + var lvlStr = "a:lvl" + lvlIdx + "pPr"; + getAlgn = getTextByPathList(warpObj, ["slideLayoutTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]); + if (getAlgn === undefined) { + getAlgn = getTextByPathList(warpObj, ["slideMasterTables", "typeTable", type, "p:txBody", "a:lstStyle", lvlStr, "attrs", "algn"]); + if (getAlgn === undefined) { + getAlgn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:titleStyle", lvlStr, "attrs", "algn"]); + if (getAlgn === undefined && type === "subTitle") { + getAlgn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", lvlStr, "attrs", "algn"]); + } + } + } + } else if (type == "body") { + getAlgn = getTextByPathList(warpObj, ["slideMasterTextStyles", "p:bodyStyle", "a:lvl1pPr", "attrs", "algn"]); + } else { + getAlgn = getTextByPathList(warpObj, ["slideMasterTables", "typeTable", type, "p:txBody", "a:lstStyle", "a:lvl1pPr", "attrs", "algn"]); + } + + } + + var align = "inherit"; + if (getAlgn !== undefined) { + switch (getAlgn) { + case "l": + align = "left"; + break; + case "r": + align = "right"; + break; + case "ctr": + align = "center"; + break; + case "just": + align = "justify"; + break; + case "dist": + align = "justify"; + break; + default: + align = "inherit"; + } + } + return align; + } + ///////////////////////////////////////////////////////////////////// + function getTextVerticalAlign(node, type, slideMasterTextStyles) { + var baseline = getTextByPathList(node, ["a:rPr", "attrs", "baseline"]); + return baseline === undefined ? "baseline" : (parseInt(baseline) / 1000) + "%"; + } + + function getTableBorders(node, warpObj) { + var borderStyle = ""; + if (node["a:bottom"] !== undefined) { + var obj = { + "p:spPr": { + "a:ln": node["a:bottom"]["a:ln"] + } + } + var borders = getBorder(obj, undefined, false, "shape", warpObj); + borderStyle += borders.replace("border", "border-bottom"); + } + if (node["a:top"] !== undefined) { + var obj = { + "p:spPr": { + "a:ln": node["a:top"]["a:ln"] + } + } + var borders = getBorder(obj, undefined, false, "shape", warpObj); + borderStyle += borders.replace("border", "border-top"); + } + if (node["a:right"] !== undefined) { + var obj = { + "p:spPr": { + "a:ln": node["a:right"]["a:ln"] + } + } + var borders = getBorder(obj, undefined, false, "shape", warpObj); + borderStyle += borders.replace("border", "border-right"); + } + if (node["a:left"] !== undefined) { + var obj = { + "p:spPr": { + "a:ln": node["a:left"]["a:ln"] + } + } + var borders = getBorder(obj, undefined, false, "shape", warpObj); + borderStyle += borders.replace("border", "border-left"); + } + + return borderStyle; + } + ////////////////////////////////////////////////////////////////// + function getBorder(node, pNode, isSvgMode, bType, warpObj) { + //console.log("getBorder", node, pNode, isSvgMode, bType) + var cssText, lineNode, subNodeTxt; + + if (bType == "shape") { + cssText = "border: "; + lineNode = node["p:spPr"]["a:ln"]; + //subNodeTxt = "p:spPr"; + //node["p:style"]["a:lnRef"] = + } else if (bType == "text") { + cssText = ""; + lineNode = node["a:rPr"]["a:ln"]; + //subNodeTxt = "a:rPr"; + } + + //var is_noFill = getTextByPathList(node, ["p:spPr", "a:noFill"]); + var is_noFill = getTextByPathList(lineNode, ["a:noFill"]); + if (is_noFill !== undefined) { + return "hidden"; + } + + //console.log("lineNode: ", lineNode) + if (lineNode == undefined) { + var lnRefNode = getTextByPathList(node, ["p:style", "a:lnRef"]) + if (lnRefNode !== undefined){ + var lnIdx = getTextByPathList(lnRefNode, ["attrs", "idx"]); + //console.log("lnIdx:", lnIdx, "lnStyleLst:", warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:lnStyleLst"]["a:ln"][Number(lnIdx) -1]) + lineNode = warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:lnStyleLst"]["a:ln"][Number(lnIdx) - 1]; + } + } + if (lineNode == undefined) { + //is table + cssText = ""; + lineNode = node + } + + var borderColor; + if (lineNode !== undefined) { + // Border width: 1pt = 12700, default = 0.75pt + var borderWidth = parseInt(getTextByPathList(lineNode, ["attrs", "w"])) / 12700; + if (isNaN(borderWidth) || borderWidth < 1) { + cssText += (4/3) + "px ";//"1pt "; + } else { + cssText += borderWidth + "px ";// + "pt "; + } + // Border type + var borderType = getTextByPathList(lineNode, ["a:prstDash", "attrs", "val"]); + if (borderType === undefined) { + borderType = getTextByPathList(lineNode, ["attrs", "cmpd"]); + } + var strokeDasharray = "0"; + switch (borderType) { + case "solid": + cssText += "solid"; + strokeDasharray = "0"; + break; + case "dash": + cssText += "dashed"; + strokeDasharray = "5"; + break; + case "dashDot": + cssText += "dashed"; + strokeDasharray = "5, 5, 1, 5"; + break; + case "dot": + cssText += "dotted"; + strokeDasharray = "1, 5"; + break; + case "lgDash": + cssText += "dashed"; + strokeDasharray = "10, 5"; + break; + case "dbl": + cssText += "double"; + strokeDasharray = "0"; + break; + case "lgDashDotDot": + cssText += "dashed"; + strokeDasharray = "10, 5, 1, 5, 1, 5"; + break; + case "sysDash": + cssText += "dashed"; + strokeDasharray = "5, 2"; + break; + case "sysDashDot": + cssText += "dashed"; + strokeDasharray = "5, 2, 1, 5"; + break; + case "sysDashDotDot": + cssText += "dashed"; + strokeDasharray = "5, 2, 1, 5, 1, 5"; + break; + case "sysDot": + cssText += "dotted"; + strokeDasharray = "2, 5"; + break; + case undefined: + //console.log(borderType); + default: + cssText += "solid"; + strokeDasharray = "0"; + } + // Border color + var fillTyp = getFillType(lineNode); + //console.log("getBorder:node : fillTyp", fillTyp) + if (fillTyp == "NO_FILL") { + borderColor = isSvgMode ? "none" : "";//"background-color: initial;"; + } else if (fillTyp == "SOLID_FILL") { + borderColor = getSolidFill(lineNode["a:solidFill"], undefined, undefined, warpObj); + } else if (fillTyp == "GRADIENT_FILL") { + borderColor = getGradientFill(lineNode["a:gradFill"], warpObj); + //console.log("shpFill",shpFill,grndColor.color) + } else if (fillTyp == "PATTERN_FILL") { + borderColor = getPatternFill(lineNode["a:pattFill"], warpObj); + } + + } + + //console.log("getBorder:node : borderColor", borderColor) + // 2. drawingML namespace + if (borderColor === undefined) { + //var schemeClrNode = getTextByPathList(node, ["p:style", "a:lnRef", "a:schemeClr"]); + // if (schemeClrNode !== undefined) { + // var schemeClr = "a:" + getTextByPathList(schemeClrNode, ["attrs", "val"]); + // var borderColor = getSchemeColorFromTheme(schemeClr, undefined, undefined); + // } + var lnRefNode = getTextByPathList(node, ["p:style", "a:lnRef"]); + //console.log("getBorder: lnRef : ", lnRefNode) + if (lnRefNode !== undefined) { + borderColor = getSolidFill(lnRefNode, undefined, undefined, warpObj); + } + + // if (borderColor !== undefined) { + // var shade = getTextByPathList(schemeClrNode, ["a:shade", "attrs", "val"]); + // if (shade !== undefined) { + // shade = parseInt(shade) / 10000; + // var color = tinycolor("#" + borderColor); + // borderColor = color.darken(shade).toHex8();//.replace("#", ""); + // } + // } + + } + + //console.log("getBorder: borderColor : ", borderColor) + if (borderColor === undefined) { + if (isSvgMode) { + borderColor = "none"; + } else { + borderColor = "hidden"; + } + } else { + borderColor = "#" + borderColor; //wrong if not solid fill - TODO + + } + cssText += " " + borderColor + " ";//wrong if not solid fill - TODO + + if (isSvgMode) { + return { "color": borderColor, "width": borderWidth, "type": borderType, "strokeDasharray": strokeDasharray }; + } else { + return cssText + ";"; + } + // } else { + // if (isSvgMode) { + // return { "color": 'none', "width": '0', "type": 'none', "strokeDasharray": '0' }; + // } else { + // return "hidden"; + // } + // } + } + function getBackground(warpObj, slideSize, index) { + //var rslt = ""; + var slideContent = warpObj["slideContent"]; + var slideLayoutContent = warpObj["slideLayoutContent"]; + var slideMasterContent = warpObj["slideMasterContent"]; + + var nodesSldLayout = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:cSld", "p:spTree"]); + var nodesSldMaster = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:cSld", "p:spTree"]); + // console.log("slideContent : ", slideContent) + // console.log("slideLayoutContent : ", slideLayoutContent) + // console.log("slideMasterContent : ", slideMasterContent) + //console.log("warpObj : ", warpObj) + var showMasterSp = getTextByPathList(slideLayoutContent, ["p:sldLayout", "attrs", "showMasterSp"]); + //console.log("slideLayoutContent : ", slideLayoutContent, ", showMasterSp: ", showMasterSp) + var bgColor = getSlideBackgroundFill(warpObj, index); + var result = "
" + var node_ph_type_ary = []; + if (nodesSldLayout !== undefined) { + for (var nodeKey in nodesSldLayout) { + if (nodesSldLayout[nodeKey].constructor === Array) { + for (var i = 0; i < nodesSldLayout[nodeKey].length; i++) { + var ph_type = getTextByPathList(nodesSldLayout[nodeKey][i], ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]); + // if (ph_type !== undefined && ph_type != "pic") { + // node_ph_type_ary.push(ph_type); + // } + if (ph_type != "pic") { + result += processNodesInSlide(nodeKey, nodesSldLayout[nodeKey][i], nodesSldLayout, warpObj, "slideLayoutBg"); //slideLayoutBg , slideMasterBg + } + } + } else { + var ph_type = getTextByPathList(nodesSldLayout[nodeKey], ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]); + // if (ph_type !== undefined && ph_type != "pic") { + // node_ph_type_ary.push(ph_type); + // } + if (ph_type != "pic") { + result += processNodesInSlide(nodeKey, nodesSldLayout[nodeKey], nodesSldLayout, warpObj, "slideLayoutBg"); //slideLayoutBg, slideMasterBg + } + } + } + } + if (nodesSldMaster !== undefined && (showMasterSp == "1" || showMasterSp === undefined)) { + for (var nodeKey in nodesSldMaster) { + if (nodesSldMaster[nodeKey].constructor === Array) { + for (var i = 0; i < nodesSldMaster[nodeKey].length; i++) { + var ph_type = getTextByPathList(nodesSldMaster[nodeKey][i], ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]); + //if (node_ph_type_ary.indexOf(ph_type) > -1) { + result += processNodesInSlide(nodeKey, nodesSldMaster[nodeKey][i], nodesSldMaster, warpObj, "slideMasterBg"); //slideLayoutBg , slideMasterBg + //} + } + } else { + var ph_type = getTextByPathList(nodesSldMaster[nodeKey], ["p:nvSpPr", "p:nvPr", "p:ph", "attrs", "type"]); + //if (node_ph_type_ary.indexOf(ph_type) > -1) { + result += processNodesInSlide(nodeKey, nodesSldMaster[nodeKey], nodesSldMaster, warpObj, "slideMasterBg"); //slideLayoutBg, slideMasterBg + //} + } + } + } + return result; + + } + function getSlideBackgroundFill(warpObj, index) { + var slideContent = warpObj["slideContent"]; + var slideLayoutContent = warpObj["slideLayoutContent"]; + var slideMasterContent = warpObj["slideMasterContent"]; + + //console.log("slideContent: ", slideContent) + //console.log("slideLayoutContent: ", slideLayoutContent) + //console.log("slideMasterContent: ", slideMasterContent) + //getFillType(node) + var bgPr = getTextByPathList(slideContent, ["p:sld", "p:cSld", "p:bg", "p:bgPr"]); + var bgRef = getTextByPathList(slideContent, ["p:sld", "p:cSld", "p:bg", "p:bgRef"]); + //console.log("slideContent >> bgPr: ", bgPr, ", bgRef: ", bgRef) + var bgcolor; + if (bgPr !== undefined) { + //bgcolor = "background-color: blue;"; + var bgFillTyp = getFillType(bgPr); + + if (bgFillTyp == "SOLID_FILL") { + var sldFill = bgPr["a:solidFill"]; + var clrMapOvr; + var sldClrMapOvr = getTextByPathList(slideContent, ["p:sld", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]); + if (sldClrMapOvr !== undefined) { + clrMapOvr = sldClrMapOvr; + } else { + var sldClrMapOvr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]); + if (sldClrMapOvr !== undefined) { + clrMapOvr = sldClrMapOvr; + } else { + clrMapOvr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:clrMap", "attrs"]); + } + + } + var sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj); + //var sldTint = getColorOpacity(sldFill); + //console.log("bgColor: ", bgColor) + //bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");"; + bgcolor = "background: #" + sldBgClr + ";"; + + } else if (bgFillTyp == "GRADIENT_FILL") { + bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj); + } else if (bgFillTyp == "PIC_FILL") { + //console.log("PIC_FILL - ", bgFillTyp, bgPr, warpObj); + bgcolor = getBgPicFill(bgPr, "slideBg", warpObj, undefined, index); + + } + //console.log(slideContent,slideMasterContent,color_ary,tint_ary,rot,bgcolor) + } else if (bgRef !== undefined) { + //console.log("slideContent",bgRef) + var clrMapOvr; + var sldClrMapOvr = getTextByPathList(slideContent, ["p:sld", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]); + if (sldClrMapOvr !== undefined) { + clrMapOvr = sldClrMapOvr; + } else { + var sldClrMapOvr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]); + if (sldClrMapOvr !== undefined) { + clrMapOvr = sldClrMapOvr; + } else { + clrMapOvr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:clrMap", "attrs"]); + } + + } + var phClr = getSolidFill(bgRef, clrMapOvr, undefined, warpObj); + + // if (bgRef["a:srgbClr"] !== undefined) { + // phClr = getTextByPathList(bgRef, ["a:srgbClr", "attrs", "val"]); //#... + // } else if (bgRef["a:schemeClr"] !== undefined) { //a:schemeClr + // var schemeClr = getTextByPathList(bgRef, ["a:schemeClr", "attrs", "val"]); + // phClr = getSchemeColorFromTheme("a:" + schemeClr, slideMasterContent, undefined); //#... + // } + var idx = Number(bgRef["attrs"]["idx"]); + + + if (idx == 0 || idx == 1000) { + //no background + } else if (idx > 0 && idx < 1000) { + //fillStyleLst in themeContent + //themeContent["a:fmtScheme"]["a:fillStyleLst"] + //bgcolor = "background: red;"; + } else if (idx > 1000) { + //bgFillStyleLst in themeContent + //themeContent["a:fmtScheme"]["a:bgFillStyleLst"] + var trueIdx = idx - 1000; + // themeContent["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"]; + var bgFillLst = warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"]; + var sortblAry = []; + Object.keys(bgFillLst).forEach(function (key) { + var bgFillLstTyp = bgFillLst[key]; + if (key != "attrs") { + if (bgFillLstTyp.constructor === Array) { + for (var i = 0; i < bgFillLstTyp.length; i++) { + var obj = {}; + obj[key] = bgFillLstTyp[i]; + obj["idex"] = bgFillLstTyp[i]["attrs"]["order"]; + obj["attrs"] = { + "order": bgFillLstTyp[i]["attrs"]["order"] + } + sortblAry.push(obj) + } + } else { + var obj = {}; + obj[key] = bgFillLstTyp; + obj["idex"] = bgFillLstTyp["attrs"]["order"]; + obj["attrs"] = { + "order": bgFillLstTyp["attrs"]["order"] + } + sortblAry.push(obj) + } + } + }); + var sortByOrder = sortblAry.slice(0); + sortByOrder.sort(function (a, b) { + return a.idex - b.idex; + }); + var bgFillLstIdx = sortByOrder[trueIdx - 1]; + var bgFillTyp = getFillType(bgFillLstIdx); + if (bgFillTyp == "SOLID_FILL") { + var sldFill = bgFillLstIdx["a:solidFill"]; + var sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj); + //var sldTint = getColorOpacity(sldFill); + //bgcolor = "background: rgba(" + hexToRgbNew(phClr) + "," + sldTint + ");"; + bgcolor = "background: #" + sldBgClr + ";"; + //console.log("slideMasterContent - sldFill",sldFill) + } else if (bgFillTyp == "GRADIENT_FILL") { + bgcolor = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj); + } else { + console.log(bgFillTyp) + } + } + + } + else { + bgPr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:cSld", "p:bg", "p:bgPr"]); + bgRef = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:cSld", "p:bg", "p:bgRef"]); + //console.log("slideLayoutContent >> bgPr: ", bgPr, ", bgRef: ", bgRef) + var clrMapOvr; + var sldClrMapOvr = getTextByPathList(slideLayoutContent, ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]); + if (sldClrMapOvr !== undefined) { + clrMapOvr = sldClrMapOvr; + } else { + clrMapOvr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:clrMap", "attrs"]); + } + if (bgPr !== undefined) { + var bgFillTyp = getFillType(bgPr); + if (bgFillTyp == "SOLID_FILL") { + var sldFill = bgPr["a:solidFill"]; + + var sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj); + //var sldTint = getColorOpacity(sldFill); + // bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");"; + bgcolor = "background: #" + sldBgClr + ";"; + } else if (bgFillTyp == "GRADIENT_FILL") { + bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj); + } else if (bgFillTyp == "PIC_FILL") { + bgcolor = getBgPicFill(bgPr, "slideLayoutBg", warpObj, undefined, index); + + } + //console.log("slideLayoutContent",bgcolor) + } else if (bgRef !== undefined) { + console.log("slideLayoutContent: bgRef", bgRef) + //bgcolor = "background: white;"; + var phClr = getSolidFill(bgRef, clrMapOvr, undefined, warpObj); + var idx = Number(bgRef["attrs"]["idx"]); + //console.log("phClr=", phClr, "idx=", idx) + + if (idx == 0 || idx == 1000) { + //no background + } else if (idx > 0 && idx < 1000) { + //fillStyleLst in themeContent + //themeContent["a:fmtScheme"]["a:fillStyleLst"] + //bgcolor = "background: red;"; + } else if (idx > 1000) { + //bgFillStyleLst in themeContent + //themeContent["a:fmtScheme"]["a:bgFillStyleLst"] + var trueIdx = idx - 1000; + var bgFillLst = warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"]; + var sortblAry = []; + Object.keys(bgFillLst).forEach(function (key) { + //console.log("cubicBezTo[" + key + "]:"); + var bgFillLstTyp = bgFillLst[key]; + if (key != "attrs") { + if (bgFillLstTyp.constructor === Array) { + for (var i = 0; i < bgFillLstTyp.length; i++) { + var obj = {}; + obj[key] = bgFillLstTyp[i]; + obj["idex"] = bgFillLstTyp[i]["attrs"]["order"]; + obj["attrs"] = { + "order": bgFillLstTyp[i]["attrs"]["order"] + } + sortblAry.push(obj) + } + } else { + var obj = {}; + obj[key] = bgFillLstTyp; + obj["idex"] = bgFillLstTyp["attrs"]["order"]; + obj["attrs"] = { + "order": bgFillLstTyp["attrs"]["order"] + } + sortblAry.push(obj) + } + } + }); + var sortByOrder = sortblAry.slice(0); + sortByOrder.sort(function (a, b) { + return a.idex - b.idex; + }); + var bgFillLstIdx = sortByOrder[trueIdx - 1]; + var bgFillTyp = getFillType(bgFillLstIdx); + if (bgFillTyp == "SOLID_FILL") { + var sldFill = bgFillLstIdx["a:solidFill"]; + //console.log("sldFill: ", sldFill) + //var sldTint = getColorOpacity(sldFill); + //bgcolor = "background: rgba(" + hexToRgbNew(phClr) + "," + sldTint + ");"; + var sldBgClr = getSolidFill(sldFill, clrMapOvr, phClr, warpObj); + //console.log("bgcolor: ", bgcolor) + bgcolor = "background: #" + sldBgClr + ";"; + } else if (bgFillTyp == "GRADIENT_FILL") { + //console.log("GRADIENT_FILL: ", bgFillLstIdx, phClr) + bgcolor = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj); + } else if (bgFillTyp == "PIC_FILL") { + //theme rels + //console.log("PIC_FILL - ", bgFillTyp, bgFillLstIdx, bgFillLst, warpObj); + bgcolor = getBgPicFill(bgFillLstIdx, "themeBg", warpObj, phClr, index); + } else { + console.log(bgFillTyp) + } + } + } else { + bgPr = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:cSld", "p:bg", "p:bgPr"]); + bgRef = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:cSld", "p:bg", "p:bgRef"]); + + var clrMap = getTextByPathList(slideMasterContent, ["p:sldMaster", "p:clrMap", "attrs"]); + //console.log("slideMasterContent >> bgPr: ", bgPr, ", bgRef: ", bgRef) + if (bgPr !== undefined) { + var bgFillTyp = getFillType(bgPr); + if (bgFillTyp == "SOLID_FILL") { + var sldFill = bgPr["a:solidFill"]; + var sldBgClr = getSolidFill(sldFill, clrMap, undefined, warpObj); + // var sldTint = getColorOpacity(sldFill); + // bgcolor = "background: rgba(" + hexToRgbNew(bgColor) + "," + sldTint + ");"; + bgcolor = "background: #" + sldBgClr + ";"; + } else if (bgFillTyp == "GRADIENT_FILL") { + bgcolor = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj); + } else if (bgFillTyp == "PIC_FILL") { + bgcolor = getBgPicFill(bgPr, "slideMasterBg", warpObj, undefined, index); + } + } else if (bgRef !== undefined) { + //var obj={ + // "a:solidFill": bgRef + //} + var phClr = getSolidFill(bgRef, clrMap, undefined, warpObj); + // var phClr; + // if (bgRef["a:srgbClr"] !== undefined) { + // phClr = getTextByPathList(bgRef, ["a:srgbClr", "attrs", "val"]); //#... + // } else if (bgRef["a:schemeClr"] !== undefined) { //a:schemeClr + // var schemeClr = getTextByPathList(bgRef, ["a:schemeClr", "attrs", "val"]); + + // phClr = getSchemeColorFromTheme("a:" + schemeClr, slideMasterContent, undefined); //#... + // } + var idx = Number(bgRef["attrs"]["idx"]); + //console.log("phClr=", phClr, "idx=", idx) + + if (idx == 0 || idx == 1000) { + //no background + } else if (idx > 0 && idx < 1000) { + //fillStyleLst in themeContent + //themeContent["a:fmtScheme"]["a:fillStyleLst"] + //bgcolor = "background: red;"; + } else if (idx > 1000) { + //bgFillStyleLst in themeContent + //themeContent["a:fmtScheme"]["a:bgFillStyleLst"] + var trueIdx = idx - 1000; + var bgFillLst = warpObj["themeContent"]["a:theme"]["a:themeElements"]["a:fmtScheme"]["a:bgFillStyleLst"]; + var sortblAry = []; + Object.keys(bgFillLst).forEach(function (key) { + //console.log("cubicBezTo[" + key + "]:"); + var bgFillLstTyp = bgFillLst[key]; + if (key != "attrs") { + if (bgFillLstTyp.constructor === Array) { + for (var i = 0; i < bgFillLstTyp.length; i++) { + var obj = {}; + obj[key] = bgFillLstTyp[i]; + obj["idex"] = bgFillLstTyp[i]["attrs"]["order"]; + obj["attrs"] = { + "order": bgFillLstTyp[i]["attrs"]["order"] + } + sortblAry.push(obj) + } + } else { + var obj = {}; + obj[key] = bgFillLstTyp; + obj["idex"] = bgFillLstTyp["attrs"]["order"]; + obj["attrs"] = { + "order": bgFillLstTyp["attrs"]["order"] + } + sortblAry.push(obj) + } + } + }); + var sortByOrder = sortblAry.slice(0); + sortByOrder.sort(function (a, b) { + return a.idex - b.idex; + }); + var bgFillLstIdx = sortByOrder[trueIdx - 1]; + var bgFillTyp = getFillType(bgFillLstIdx); + //console.log("bgFillLstIdx: ", bgFillLstIdx, ", bgFillTyp: ", bgFillTyp, ", phClr: ", phClr); + if (bgFillTyp == "SOLID_FILL") { + var sldFill = bgFillLstIdx["a:solidFill"]; + //console.log("sldFill: ", sldFill) + //var sldTint = getColorOpacity(sldFill); + //bgcolor = "background: rgba(" + hexToRgbNew(phClr) + "," + sldTint + ");"; + var sldBgClr = getSolidFill(sldFill, clrMap, phClr, warpObj); + //console.log("bgcolor: ", bgcolor) + bgcolor = "background: #" + sldBgClr + ";"; + } else if (bgFillTyp == "GRADIENT_FILL") { + //console.log("GRADIENT_FILL: ", bgFillLstIdx, phClr) + bgcolor = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj); + } else if (bgFillTyp == "PIC_FILL") { + //theme rels + // console.log("PIC_FILL - ", bgFillTyp, bgFillLstIdx, bgFillLst, warpObj); + bgcolor = getBgPicFill(bgFillLstIdx, "themeBg", warpObj, phClr, index); + } else { + console.log(bgFillTyp) + } + } + } + } + } + + //console.log("bgcolor: ", bgcolor) + return bgcolor; + } + function getBgGradientFill(bgPr, phClr, slideMasterContent, warpObj) { + var bgcolor = ""; + if (bgPr !== undefined) { + var grdFill = bgPr["a:gradFill"]; + var gsLst = grdFill["a:gsLst"]["a:gs"]; + //var startColorNode, endColorNode; + var color_ary = []; + var pos_ary = []; + //var tint_ary = []; + for (var i = 0; i < gsLst.length; i++) { + var lo_tint; + var lo_color = ""; + var lo_color = getSolidFill(gsLst[i], slideMasterContent["p:sldMaster"]["p:clrMap"]["attrs"], phClr, warpObj); + var pos = getTextByPathList(gsLst[i], ["attrs", "pos"]) + //console.log("pos: ", pos) + if (pos !== undefined) { + pos_ary[i] = pos / 1000 + "%"; + } else { + pos_ary[i] = ""; + } + //console.log("lo_color", lo_color) + color_ary[i] = "#" + lo_color; + //tint_ary[i] = (lo_tint !== undefined) ? parseInt(lo_tint) / 100000 : 1; + } + //get rot + var lin = grdFill["a:lin"]; + var rot = 90; + if (lin !== undefined) { + rot = angleToDegrees(lin["attrs"]["ang"]);// + 270; + //console.log("rot: ", rot) + rot = rot + 90; + } + bgcolor = "background: linear-gradient(" + rot + "deg,"; + for (var i = 0; i < gsLst.length; i++) { + if (i == gsLst.length - 1) { + //if (phClr === undefined) { + //bgcolor += "rgba(" + hexToRgbNew(color_ary[i]) + "," + tint_ary[i] + ")" + ");"; + bgcolor += color_ary[i] + " " + pos_ary[i] + ");"; + //} else { + //bgcolor += "rgba(" + hexToRgbNew(phClr) + "," + tint_ary[i] + ")" + ");"; + // bgcolor += "" + phClr + ";";; + //} + } else { + //if (phClr === undefined) { + //bgcolor += "rgba(" + hexToRgbNew(color_ary[i]) + "," + tint_ary[i] + ")" + ", "; + bgcolor += color_ary[i] + " " + pos_ary[i] + ", ";; + //} else { + //bgcolor += "rgba(" + hexToRgbNew(phClr) + "," + tint_ary[i] + ")" + ", "; + // bgcolor += phClr + ", "; + //} + } + } + } else { + if (phClr !== undefined) { + //bgcolor = "rgba(" + hexToRgbNew(phClr) + ",0);"; + //bgcolor = phClr + ");"; + bgcolor = "background: #" + phClr + ";"; + } + } + return bgcolor; + } + function getBgPicFill(bgPr, sorce, warpObj, phClr, index) { + //console.log("getBgPicFill bgPr", bgPr) + var bgcolor; + var picFillBase64 = getPicFill(sorce, bgPr["a:blipFill"], warpObj); + var ordr = bgPr["attrs"]["order"]; + var aBlipNode = bgPr["a:blipFill"]["a:blip"]; + //a:duotone + var duotone = getTextByPathList(aBlipNode, ["a:duotone"]); + if (duotone !== undefined) { + //console.log("pic duotone: ", duotone) + var clr_ary = []; + // duotone.forEach(function (clr) { + // console.log("pic duotone clr: ", clr) + // }) + Object.keys(duotone).forEach(function (clr_type) { + //console.log("pic duotone clr: clr_type: ", clr_type, duotone[clr_type]) + if (clr_type != "attrs") { + var obj = {}; + obj[clr_type] = duotone[clr_type]; + clr_ary.push(getSolidFill(obj, undefined, phClr, warpObj)); + } + // Object.keys(duotone[clr_type]).forEach(function (clr) { + // if (clr != "order") { + // var obj = {}; + // obj[clr_type] = duotone[clr_type][clr]; + // clr_ary.push(getSolidFill(obj, undefined, phClr, warpObj)); + // } + // }) + }) + //console.log("pic duotone clr_ary: ", clr_ary); + //filter: url(file.svg#filter-element-id) + //https://codepen.io/bhenbe/pen/QEZOvd + //https://www.w3schools.com/cssref/css3_pr_filter.asp + + // var color1 = clr_ary[0]; + // var color2 = clr_ary[1]; + // var cssName = ""; + + // var styleText_before_after = "content: '';" + + // "display: block;" + + // "width: 100%;" + + // "height: 100%;" + + // // "z-index: 1;" + + // "position: absolute;" + + // "top: 0;" + + // "left: 0;"; + + // var cssName = "slide-background-" + index + "::before," + " .slide-background-" + index + "::after"; + // styleTable[styleText_before_after] = { + // "name": cssName, + // "text": styleText_before_after + // }; + + + // var styleText_after = "background-color: #" + clr_ary[1] + ";" + + // "mix-blend-mode: darken;"; + + // cssName = "slide-background-" + index + "::after"; + // styleTable[styleText_after] = { + // "name": cssName, + // "text": styleText_after + // }; + + // var styleText_before = "background-color: #" + clr_ary[0] + ";" + + // "mix-blend-mode: lighten;"; + + // cssName = "slide-background-" + index + "::before"; + // styleTable[styleText_before] = { + // "name": cssName, + // "text": styleText_before + // }; + + } + //a:alphaModFix + var aphaModFixNode = getTextByPathList(aBlipNode, ["a:alphaModFix", "attrs"]) + var imgOpacity = ""; + if (aphaModFixNode !== undefined && aphaModFixNode["amt"] !== undefined && aphaModFixNode["amt"] != "") { + var amt = parseInt(aphaModFixNode["amt"]) / 100000; + //var opacity = amt; + imgOpacity = "opacity:" + amt + ";"; + + } + //a:tile + + var tileNode = getTextByPathList(bgPr, ["a:blipFill", "a:tile", "attrs"]) + var prop_style = ""; + if (tileNode !== undefined && tileNode["sx"] !== undefined) { + var sx = (parseInt(tileNode["sx"]) / 100000); + var sy = (parseInt(tileNode["sy"]) / 100000); + var tx = (parseInt(tileNode["tx"]) / 100000); + var ty = (parseInt(tileNode["ty"]) / 100000); + var algn = tileNode["algn"]; //tl(top left),t(top), tr(top right), l(left), ctr(center), r(right), bl(bottom left), b(bottm) , br(bottom right) + var flip = tileNode["flip"]; //none,x,y ,xy + + prop_style += "background-repeat: round;"; //repeat|repeat-x|repeat-y|no-repeat|space|round|initial|inherit; + //prop_style += "background-size: 300px 100px;"; size (w,h,sx, sy) -TODO + //prop_style += "background-position: 50% 40%;"; //offset (tx, ty) -TODO + } + //a:srcRect + //a:stretch => a:fillRect =>attrs (l:-17000, r:-17000) + var stretch = getTextByPathList(bgPr, ["a:blipFill", "a:stretch"]); + if (stretch !== undefined) { + var fillRect = getTextByPathList(stretch, ["a:fillRect", "attrs"]); + //console.log("getBgPicFill=>bgPr: ", bgPr) + // var top = fillRect["t"], right = fillRect["r"], bottom = fillRect["b"], left = fillRect["l"]; + prop_style += "background-repeat: no-repeat;"; + prop_style += "background-position: center;"; + if (fillRect !== undefined) { + //prop_style += "background-size: contain, cover;"; + prop_style += "background-size: 100% 100%;;"; + } + } + bgcolor = "background: url(" + picFillBase64 + "); z-index: " + ordr + ";" + prop_style + imgOpacity; + + return bgcolor; + } + // function hexToRgbNew(hex) { + // var arrBuff = new ArrayBuffer(4); + // var vw = new DataView(arrBuff); + // vw.setUint32(0, parseInt(hex, 16), false); + // var arrByte = new Uint8Array(arrBuff); + // return arrByte[1] + "," + arrByte[2] + "," + arrByte[3]; + // } + function getShapeFill(node, pNode, isSvgMode, warpObj, source) { + + // 1. presentationML + // p:spPr/ [a:noFill, solidFill, gradFill, blipFill, pattFill, grpFill] + // From slide + //Fill Type: + //console.log("getShapeFill ShapeFill: ", node, ", isSvgMode; ", isSvgMode) + var fillType = getFillType(getTextByPathList(node, ["p:spPr"])); + //var noFill = getTextByPathList(node, ["p:spPr", "a:noFill"]); + var fillColor; + if (fillType == "NO_FILL") { + return isSvgMode ? "none" : "";//"background-color: initial;"; + } else if (fillType == "SOLID_FILL") { + var shpFill = node["p:spPr"]["a:solidFill"]; + fillColor = getSolidFill(shpFill, undefined, undefined, warpObj); + } else if (fillType == "GRADIENT_FILL") { + var shpFill = node["p:spPr"]["a:gradFill"]; + fillColor = getGradientFill(shpFill, warpObj); + //console.log("shpFill",shpFill,grndColor.color) + } else if (fillType == "PATTERN_FILL") { + var shpFill = node["p:spPr"]["a:pattFill"]; + fillColor = getPatternFill(shpFill, warpObj); + } else if (fillType == "PIC_FILL") { + var shpFill = node["p:spPr"]["a:blipFill"]; + fillColor = getPicFill(source, shpFill, warpObj); + } + //console.log("getShapeFill ShapeFill: ", node, ", isSvgMode; ", isSvgMode, ", fillType: ", fillType, ", fillColor: ", fillColor, ", source: ", source) + + + // 2. drawingML namespace + if (fillColor === undefined) { + var clrName = getTextByPathList(node, ["p:style", "a:fillRef"]); + var idx = parseInt(getTextByPathList(node, ["p:style", "a:fillRef", "attrs", "idx"])); + if (idx == 0 || idx == 1000) { + //no fill + return isSvgMode ? "none" : ""; + } else if (idx > 0 && idx < 1000) { + // fill + } else if (idx > 1000) { + // + } + fillColor = getSolidFill(clrName, undefined, undefined, warpObj); + } + // 3. is group fill + if (fillColor === undefined) { + var grpFill = getTextByPathList(node, ["p:spPr", "a:grpFill"]); + if (grpFill !== undefined) { + //fillColor = getSolidFill(clrName, undefined, undefined, undefined, warpObj); + //get parent fill style - TODO + //console.log("ShapeFill: grpFill: ", grpFill, ", pNode: ", pNode) + var grpShpFill = pNode["p:grpSpPr"]; + var spShpNode = { "p:spPr": grpShpFill } + return getShapeFill(spShpNode, node, isSvgMode, warpObj, source); + } else if (fillType == "NO_FILL") { + return isSvgMode ? "none" : ""; + } + } + //console.log("ShapeFill: fillColor: ", fillColor, ", fillType; ", fillType) + + if (fillColor !== undefined) { + if (fillType == "GRADIENT_FILL") { + if (isSvgMode) { + // console.log("GRADIENT_FILL color", fillColor.color[0]) + return fillColor; + } else { + var colorAry = fillColor.color; + var rot = fillColor.rot; + + var bgcolor = "background: linear-gradient(" + rot + "deg,"; + for (var i = 0; i < colorAry.length; i++) { + if (i == colorAry.length - 1) { + bgcolor += "#" + colorAry[i] + ");"; + } else { + bgcolor += "#" + colorAry[i] + ", "; + } + + } + return bgcolor; + } + } else if (fillType == "PIC_FILL") { + if (isSvgMode) { + return fillColor; + } else { + + return "background-image:url(" + fillColor + ");"; + } + } else if (fillType == "PATTERN_FILL") { + /////////////////////////////////////////////////////////////Need to check -----------TODO + // if (isSvgMode) { + // var color = tinycolor(fillColor); + // fillColor = color.toRgbString(); + + // return fillColor; + // } else { + var bgPtrn = "", bgSize = "", bgPos = ""; + bgPtrn = fillColor[0]; + if (fillColor[1] !== null && fillColor[1] !== undefined && fillColor[1] != "") { + bgSize = " background-size:" + fillColor[1] + ";"; + } + if (fillColor[2] !== null && fillColor[2] !== undefined && fillColor[2] != "") { + bgPos = " background-position:" + fillColor[2] + ";"; + } + return "background: " + bgPtrn + ";" + bgSize + bgPos; + //} + } else { + if (isSvgMode) { + var color = tinycolor(fillColor); + fillColor = color.toRgbString(); + + return fillColor; + } else { + //console.log(node,"fillColor: ",fillColor,"fillType: ",fillType,"isSvgMode: ",isSvgMode) + return "background-color: #" + fillColor + ";"; + } + } + } else { + if (isSvgMode) { + return "none"; + } else { + return "background-color: inherit;"; + } + + } + + } + ///////////////////////Amir////////////////////////////// + function getFillType(node) { + //Need to test///////////////////////////////////////////// + //SOLID_FILL + //PIC_FILL + //GRADIENT_FILL + //PATTERN_FILL + //NO_FILL + var fillType = ""; + if (node["a:noFill"] !== undefined) { + fillType = "NO_FILL"; + } + if (node["a:solidFill"] !== undefined) { + fillType = "SOLID_FILL"; + } + if (node["a:gradFill"] !== undefined) { + fillType = "GRADIENT_FILL"; + } + if (node["a:pattFill"] !== undefined) { + fillType = "PATTERN_FILL"; + } + if (node["a:blipFill"] !== undefined) { + fillType = "PIC_FILL"; + } + if (node["a:grpFill"] !== undefined) { + fillType = "GROUP_FILL"; + } + + + return fillType; + } + function getGradientFill(node, warpObj) { + //console.log("getGradientFill: node", node) + var gsLst = node["a:gsLst"]["a:gs"]; + //get start color + var color_ary = []; + var tint_ary = []; + for (var i = 0; i < gsLst.length; i++) { + var lo_tint; + var lo_color = getSolidFill(gsLst[i], undefined, undefined, warpObj); + //console.log("lo_color",lo_color) + color_ary[i] = lo_color; + } + //get rot + var lin = node["a:lin"]; + var rot = 0; + if (lin !== undefined) { + rot = angleToDegrees(lin["attrs"]["ang"]) + 90; + } + return { + "color": color_ary, + "rot": rot + } + } + function getPicFill(type, node, warpObj) { + //Need to test///////////////////////////////////////////// + //rId + //TODO - Image Properties - Tile, Stretch, or Display Portion of Image + //(http://officeopenxml.com/drwPic-tile.php) + var img; + var rId = node["a:blip"]["attrs"]["r:embed"]; + var imgPath; + //console.log("getPicFill(...) rId: ", rId, ", warpObj: ", warpObj, ", type: ", type) + if (type == "slideBg" || type == "slide") { + imgPath = getTextByPathList(warpObj, ["slideResObj", rId, "target"]); + } else if (type == "slideLayoutBg") { + imgPath = getTextByPathList(warpObj, ["layoutResObj", rId, "target"]); + } else if (type == "slideMasterBg") { + imgPath = getTextByPathList(warpObj, ["masterResObj", rId, "target"]); + } else if (type == "themeBg") { + imgPath = getTextByPathList(warpObj, ["themeResObj", rId, "target"]); + } else if (type == "diagramBg") { + imgPath = getTextByPathList(warpObj, ["diagramResObj", rId, "target"]); + } + if (imgPath === undefined) { + return undefined; + } + img = getTextByPathList(warpObj, ["loaded-images", imgPath]); //, type, rId + if (img === undefined) { + imgPath = escapeHtml(imgPath); + + + var imgExt = imgPath.split(".").pop(); + if (imgExt == "xml") { + return undefined; + } + var imgArrayBuffer = warpObj["zip"].file(imgPath).asArrayBuffer(); + var imgMimeType = getMimeType(imgExt); + img = "data:" + imgMimeType + ";base64," + base64ArrayBuffer(imgArrayBuffer); + //warpObj["loaded-images"][imgPath] = img; //"defaultTextStyle": defaultTextStyle, + setTextByPathList(warpObj, ["loaded-images", imgPath], img); //, type, rId + } + return img; + } + function getPatternFill(node, warpObj) { + //https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Images/Using_CSS_gradients + //https://cssgradient.io/blog/css-gradient-text/ + //https://css-tricks.com/background-patterns-simplified-by-conic-gradients/ + //https://stackoverflow.com/questions/6705250/how-to-get-a-pattern-into-a-written-text-via-css + //https://stackoverflow.com/questions/14072142/striped-text-in-css + //https://css-tricks.com/stripes-css/ + //https://yuanchuan.dev/gradient-shapes/ + var fgColor = "", bgColor = "", prst = ""; + var bgClr = node["a:bgClr"]; + var fgClr = node["a:fgClr"]; + prst = node["attrs"]["prst"]; + fgColor = getSolidFill(fgClr, undefined, undefined, warpObj); + bgColor = getSolidFill(bgClr, undefined, undefined, warpObj); + //var angl_ary = getAnglefromParst(prst); + //var ptrClr = "repeating-linear-gradient(" + angl + "deg, #" + bgColor + ",#" + fgColor + " 2px);" + //linear-gradient(0deg, black 10 %, transparent 10 %, transparent 90 %, black 90 %, black), + //linear-gradient(90deg, black 10 %, transparent 10 %, transparent 90 %, black 90 %, black); + var linear_gradient = getLinerGrandient(prst, bgColor, fgColor); + //console.log("getPatternFill: node:", node, ", prst: ", prst, ", fgColor: ", fgColor, ", bgColor:", bgColor, ', linear_gradient: ', linear_gradient) + return linear_gradient; + } + + function getLinerGrandient(prst, bgColor, fgColor) { + // dashDnDiag (Dashed Downward Diagonal)-V + // dashHorz (Dashed Horizontal)-V + // dashUpDiag(Dashed Upward DIagonal)-V + // dashVert(Dashed Vertical)-V + // diagBrick(Diagonal Brick)-V + // divot(Divot)-VX + // dkDnDiag(Dark Downward Diagonal)-V + // dkHorz(Dark Horizontal)-V + // dkUpDiag(Dark Upward Diagonal)-V + // dkVert(Dark Vertical)-V + // dotDmnd(Dotted Diamond)-VX + // dotGrid(Dotted Grid)-V + // horzBrick(Horizontal Brick)-V + // lgCheck(Large Checker Board)-V + // lgConfetti(Large Confetti)-V + // lgGrid(Large Grid)-V + // ltDnDiag(Light Downward Diagonal)-V + // ltHorz(Light Horizontal)-V + // ltUpDiag(Light Upward Diagonal)-V + // ltVert(Light Vertical)-V + // narHorz(Narrow Horizontal)-V + // narVert(Narrow Vertical)-V + // openDmnd(Open Diamond)-V + // pct10(10 %)-V + // pct20(20 %)-V + // pct25(25 %)-V + // pct30(30 %)-V + // pct40(40 %)-V + // pct5(5 %)-V + // pct50(50 %)-V + // pct60(60 %)-V + // pct70(70 %)-V + // pct75(75 %)-V + // pct80(80 %)-V + // pct90(90 %)-V + // smCheck(Small Checker Board) -V + // smConfetti(Small Confetti)-V + // smGrid(Small Grid) -V + // solidDmnd(Solid Diamond)-V + // sphere(Sphere)-V + // trellis(Trellis)-VX + // wave(Wave)-V + // wdDnDiag(Wide Downward Diagonal)-V + // wdUpDiag(Wide Upward Diagonal)-V + // weave(Weave)-V + // zigZag(Zig Zag)-V + // shingle(Shingle)-V + // plaid(Plaid)-V + // cross (Cross) + // diagCross(Diagonal Cross) + // dnDiag(Downward Diagonal) + // horz(Horizontal) + // upDiag(Upward Diagonal) + // vert(Vertical) + switch (prst) { + case "smGrid": + return ["linear-gradient(to right, #" + fgColor + " -1px, transparent 1px ), " + + "linear-gradient(to bottom, #" + fgColor + " -1px, transparent 1px) #" + bgColor + ";", "4px 4px"]; + break + case "dotGrid": + return ["linear-gradient(to right, #" + fgColor + " -1px, transparent 1px ), " + + "linear-gradient(to bottom, #" + fgColor + " -1px, transparent 1px) #" + bgColor + ";", "8px 8px"]; + break + case "lgGrid": + return ["linear-gradient(to right, #" + fgColor + " -1px, transparent 1.5px ), " + + "linear-gradient(to bottom, #" + fgColor + " -1px, transparent 1.5px) #" + bgColor + ";", "8px 8px"]; + break + case "wdUpDiag": + //return ["repeating-linear-gradient(-45deg, #" + bgColor + ", #" + bgColor + " 1px,#" + fgColor + " 5px);"]; + return ["repeating-linear-gradient(-45deg, transparent 1px , transparent 4px, #" + fgColor + " 7px)" + "#" + bgColor + ";"]; + // return ["linear-gradient(45deg, transparent 0%, transparent calc(50% - 1px), #" + fgColor + " 50%, transparent calc(50% + 1px), transparent 100%) " + + // "#" + bgColor + ";", "6px 6px"]; + break + case "dkUpDiag": + return ["repeating-linear-gradient(-45deg, transparent 1px , #" + bgColor + " 5px)" + "#" + fgColor + ";"]; + break + case "ltUpDiag": + return ["repeating-linear-gradient(-45deg, transparent 1px , transparent 2px, #" + fgColor + " 4px)" + "#" + bgColor + ";"]; + break + case "wdDnDiag": + return ["repeating-linear-gradient(45deg, transparent 1px , transparent 4px, #" + fgColor + " 7px)" + "#" + bgColor + ";"]; + break + case "dkDnDiag": + return ["repeating-linear-gradient(45deg, transparent 1px , #" + bgColor + " 5px)" + "#" + fgColor + ";"]; + break + case "ltDnDiag": + return ["repeating-linear-gradient(45deg, transparent 1px , transparent 2px, #" + fgColor + " 4px)" + "#" + bgColor + ";"]; + break + case "dkHorz": + return ["repeating-linear-gradient(0deg, transparent 1px , transparent 2px, #" + bgColor + " 7px)" + "#" + fgColor + ";"]; + break + case "ltHorz": + return ["repeating-linear-gradient(0deg, transparent 1px , transparent 5px, #" + fgColor + " 7px)" + "#" + bgColor + ";"]; + break + case "narHorz": + return ["repeating-linear-gradient(0deg, transparent 1px , transparent 2px, #" + fgColor + " 4px)" + "#" + bgColor + ";"]; + break + case "dkVert": + return ["repeating-linear-gradient(90deg, transparent 1px , transparent 2px, #" + bgColor + " 7px)" + "#" + fgColor + ";"]; + break + case "ltVert": + return ["repeating-linear-gradient(90deg, transparent 1px , transparent 5px, #" + fgColor + " 7px)" + "#" + bgColor + ";"]; + break + case "narVert": + return ["repeating-linear-gradient(90deg, transparent 1px , transparent 2px, #" + fgColor + " 4px)" + "#" + bgColor + ";"]; + break + case "lgCheck": + case "smCheck": + var size = ""; + var pos = ""; + if (prst == "lgCheck") { + size = "8px 8px"; + pos = "0 0, 4px 4px, 4px 4px, 8px 8px"; + } else { + size = "4px 4px"; + pos = "0 0, 2px 2px, 2px 2px, 4px 4px"; + } + return ["linear-gradient(45deg, #" + fgColor + " 25%, transparent 0, transparent 75%, #" + fgColor + " 0), " + + "linear-gradient(45deg, #" + fgColor + " 25%, transparent 0, transparent 75%, #" + fgColor + " 0) " + + "#" + bgColor + ";", size, pos]; + break + // case "smCheck": + // return ["linear-gradient(45deg, transparent 0%, transparent calc(50% - 0.5px), #" + fgColor + " 50%, transparent calc(50% + 0.5px), transparent 100%), " + + // "linear-gradient(-45deg, transparent 0%, transparent calc(50% - 0.5px) , #" + fgColor + " 50%, transparent calc(50% + 0.5px), transparent 100%) " + + // "#" + bgColor + ";", "4px 4px"]; + // break + + case "dashUpDiag": + return ["repeating-linear-gradient(152deg, #" + fgColor + ", #" + fgColor + " 5% , transparent 0, transparent 70%)" + + "#" + bgColor + ";", "4px 4px"]; + break + case "dashDnDiag": + return ["repeating-linear-gradient(45deg, #" + fgColor + ", #" + fgColor + " 5% , transparent 0, transparent 70%)" + + "#" + bgColor + ";", "4px 4px"]; + break + case "diagBrick": + return ["linear-gradient(45deg, transparent 15%, #" + fgColor + " 30%, transparent 30%), " + + "linear-gradient(-45deg, transparent 15%, #" + fgColor + " 30%, transparent 30%), " + + "linear-gradient(-45deg, transparent 65%, #" + fgColor + " 80%, transparent 0) " + + "#" + bgColor + ";", "4px 4px"]; + break + case "horzBrick": + return ["linear-gradient(335deg, #" + bgColor + " 1.6px, transparent 1.6px), " + + "linear-gradient(155deg, #" + bgColor + " 1.6px, transparent 1.6px), " + + "linear-gradient(335deg, #" + bgColor + " 1.6px, transparent 1.6px), " + + "linear-gradient(155deg, #" + bgColor + " 1.6px, transparent 1.6px) " + + "#" + fgColor + ";", "4px 4px", "0 0.15px, 0.3px 2.5px, 2px 2.15px, 2.35px 0.4px"]; + break + + case "dashVert": + return ["linear-gradient(0deg, #" + bgColor + " 30%, transparent 30%)," + + "linear-gradient(90deg,transparent, transparent 40%, #" + fgColor + " 40%, #" + fgColor + " 60% , transparent 60%)" + + "#" + bgColor + ";", "4px 4px"]; + break + case "dashHorz": + return ["linear-gradient(90deg, #" + bgColor + " 30%, transparent 30%)," + + "linear-gradient(0deg,transparent, transparent 40%, #" + fgColor + " 40%, #" + fgColor + " 60% , transparent 60%)" + + "#" + bgColor + ";", "4px 4px"]; + break + case "solidDmnd": + return ["linear-gradient(135deg, #" + fgColor + " 25%, transparent 25%), " + + "linear-gradient(225deg, #" + fgColor + " 25%, transparent 25%), " + + "linear-gradient(315deg, #" + fgColor + " 25%, transparent 25%), " + + "linear-gradient(45deg, #" + fgColor + " 25%, transparent 25%) " + + "#" + bgColor + ";", "8px 8px"]; + break + case "openDmnd": + return ["linear-gradient(45deg, transparent 0%, transparent calc(50% - 0.5px), #" + fgColor + " 50%, transparent calc(50% + 0.5px), transparent 100%), " + + "linear-gradient(-45deg, transparent 0%, transparent calc(50% - 0.5px) , #" + fgColor + " 50%, transparent calc(50% + 0.5px), transparent 100%) " + + "#" + bgColor + ";", "8px 8px"]; + break + + case "dotDmnd": + return ["radial-gradient(#" + fgColor + " 15%, transparent 0), " + + "radial-gradient(#" + fgColor + " 15%, transparent 0) " + + "#" + bgColor + ";", "4px 4px", "0 0, 2px 2px"]; + break + case "zigZag": + case "wave": + var size = ""; + if (prst == "zigZag") size = "0"; + else size = "1px"; + return ["linear-gradient(135deg, #" + fgColor + " 25%, transparent 25%) 50px " + size + ", " + + "linear-gradient(225deg, #" + fgColor + " 25%, transparent 25%) 50px " + size + ", " + + "linear-gradient(315deg, #" + fgColor + " 25%, transparent 25%), " + + "linear-gradient(45deg, #" + fgColor + " 25%, transparent 25%) " + + "#" + bgColor + ";", "4px 4px"]; + break + case "lgConfetti": + case "smConfetti": + var size = ""; + if (prst == "lgConfetti") size = "4px 4px"; + else size = "2px 2px"; + return ["linear-gradient(135deg, #" + fgColor + " 25%, transparent 25%) 50px 1px, " + + "linear-gradient(225deg, #" + fgColor + " 25%, transparent 25%), " + + "linear-gradient(315deg, #" + fgColor + " 25%, transparent 25%) 50px 1px , " + + "linear-gradient(45deg, #" + fgColor + " 25%, transparent 25%) " + + "#" + bgColor + ";", size]; + break + // case "weave": + // return ["linear-gradient(45deg, #" + bgColor + " 5%, transparent 25%) 50px 0, " + + // "linear-gradient(135deg, #" + bgColor + " 25%, transparent 25%) 50px 0, " + + // "linear-gradient(45deg, #" + bgColor + " 25%, transparent 25%) " + + // "#" + fgColor + ";", "4px 4px"]; + // //background: linear-gradient(45deg, #dca 12%, transparent 0, transparent 88%, #dca 0), + // //linear-gradient(135deg, transparent 37 %, #a85 0, #a85 63 %, transparent 0), + // //linear-gradient(45deg, transparent 37 %, #dca 0, #dca 63 %, transparent 0) #753; + // // background-size: 25px 25px; + // break; + + case "plaid": + return ["linear-gradient(0deg, transparent, transparent 25%, #" + fgColor + "33 25%, #" + fgColor + "33 50%)," + + "linear-gradient(90deg, transparent, transparent 25%, #" + fgColor + "66 25%, #" + fgColor + "66 50%) " + + "#" + bgColor + ";", "4px 4px"]; + /** + background-color: #6677dd; + background-image: + repeating-linear-gradient(0deg, transparent, transparent 35px, rgba(255, 255, 255, 0.2) 35px, rgba(255, 255, 255, 0.2) 70px), + repeating-linear-gradient(90deg, transparent, transparent 35px, rgba(255,255,255,0.4) 35px, rgba(255,255,255,0.4) 70px); + */ + break; + case "sphere": + return ["radial-gradient(#" + fgColor + " 50%, transparent 50%)," + + "#" + bgColor + ";", "4px 4px"]; + break + case "weave": + case "shingle": + return ["linear-gradient(45deg, #" + bgColor + " 1.31px , #" + fgColor + " 1.4px, #" + fgColor + " 1.5px, transparent 1.5px, transparent 4.2px, #" + fgColor + " 4.2px, #" + fgColor + " 4.3px, transparent 4.31px), " + + "linear-gradient(-45deg, #" + bgColor + " 1.31px , #" + fgColor + " 1.4px, #" + fgColor + " 1.5px, transparent 1.5px, transparent 4.2px, #" + fgColor + " 4.2px, #" + fgColor + " 4.3px, transparent 4.31px) 0 4px, " + + "#" + bgColor + ";", "4px 8px"]; + break + //background: + //linear-gradient(45deg, #708090 1.31px, #d9ecff 1.4px, #d9ecff 1.5px, transparent 1.5px, transparent 4.2px, #d9ecff 4.2px, #d9ecff 4.3px, transparent 4.31px), + //linear-gradient(-45deg, #708090 1.31px, #d9ecff 1.4px, #d9ecff 1.5px, transparent 1.5px, transparent 4.2px, #d9ecff 4.2px, #d9ecff 4.3px, transparent 4.31px)0 4px; + //background-color:#708090; + //background-size: 4px 8px; + case "pct5": + case "pct10": + case "pct20": + case "pct25": + case "pct30": + case "pct40": + case "pct50": + case "pct60": + case "pct70": + case "pct75": + case "pct80": + case "pct90": + //case "dotDmnd": + case "trellis": + case "divot": + var px_pr_ary; + switch (prst) { + case "pct5": + px_pr_ary = ["0.3px", "10%", "2px 2px"]; + break + case "divot": + px_pr_ary = ["0.3px", "40%", "4px 4px"]; + break + case "pct10": + px_pr_ary = ["0.3px", "20%", "2px 2px"]; + break + case "pct20": + //case "dotDmnd": + px_pr_ary = ["0.2px", "40%", "2px 2px"]; + break + case "pct25": + px_pr_ary = ["0.2px", "50%", "2px 2px"]; + break + case "pct30": + px_pr_ary = ["0.5px", "50%", "2px 2px"]; + break + case "pct40": + px_pr_ary = ["0.5px", "70%", "2px 2px"]; + break + case "pct50": + px_pr_ary = ["0.09px", "90%", "2px 2px"]; + break + case "pct60": + px_pr_ary = ["0.3px", "90%", "2px 2px"]; + break + case "pct70": + case "trellis": + px_pr_ary = ["0.5px", "95%", "2px 2px"]; + break + case "pct75": + px_pr_ary = ["0.65px", "100%", "2px 2px"]; + break + case "pct80": + px_pr_ary = ["0.85px", "100%", "2px 2px"]; + break + case "pct90": + px_pr_ary = ["1px", "100%", "2px 2px"]; + break + } + return ["radial-gradient(#" + fgColor + " " + px_pr_ary[0] + ", transparent " + px_pr_ary[1] + ")," + + "#" + bgColor + ";", px_pr_ary[2]]; + break + default: + return [0, 0]; + } + } + + function getSolidFill(node, clrMap, phClr, warpObj) { + + if (node === undefined) { + return undefined; + } + + //console.log("getSolidFill node: ", node) + var color = ""; + var clrNode; + if (node["a:srgbClr"] !== undefined) { + clrNode = node["a:srgbClr"]; + color = getTextByPathList(clrNode, ["attrs", "val"]); //#... + } else if (node["a:schemeClr"] !== undefined) { //a:schemeClr + clrNode = node["a:schemeClr"]; + var schemeClr = getTextByPathList(clrNode, ["attrs", "val"]); + color = getSchemeColorFromTheme("a:" + schemeClr, clrMap, phClr, warpObj); + //console.log("schemeClr: ", schemeClr, "color: ", color) + } else if (node["a:scrgbClr"] !== undefined) { + clrNode = node["a:scrgbClr"]; + // //Need to test///////////////////////////////////////////// + var defBultColorVals = clrNode["attrs"]; + var red = (defBultColorVals["r"].indexOf("%") != -1) ? defBultColorVals["r"].split("%").shift() : defBultColorVals["r"]; + var green = (defBultColorVals["g"].indexOf("%") != -1) ? defBultColorVals["g"].split("%").shift() : defBultColorVals["g"]; + var blue = (defBultColorVals["b"].indexOf("%") != -1) ? defBultColorVals["b"].split("%").shift() : defBultColorVals["b"]; + //var scrgbClr = red + "," + green + "," + blue; + color = toHex(255 * (Number(red) / 100)) + toHex(255 * (Number(green) / 100)) + toHex(255 * (Number(blue) / 100)); + //console.log("scrgbClr: " + scrgbClr); + + } else if (node["a:prstClr"] !== undefined) { + clrNode = node["a:prstClr"]; + // //Need to test///////////////////////////////////////////// + var prstClr = getTextByPathList(clrNode, ["attrs", "val"]); //node["a:prstClr"]["attrs"]["val"]; + color = getColorName2Hex(prstClr); + //console.log("blip prstClr: ", prstClr, " => hexClr: ", color); + } else if (node["a:hslClr"] !== undefined) { + clrNode = node["a:hslClr"]; + // //Need to test///////////////////////////////////////////// + var defBultColorVals = clrNode["attrs"]; + var hue = Number(defBultColorVals["hue"]) / 100000; + var sat = Number((defBultColorVals["sat"].indexOf("%") != -1) ? defBultColorVals["sat"].split("%").shift() : defBultColorVals["sat"]) / 100; + var lum = Number((defBultColorVals["lum"].indexOf("%") != -1) ? defBultColorVals["lum"].split("%").shift() : defBultColorVals["lum"]) / 100; + //var hslClr = defBultColorVals["hue"] + "," + defBultColorVals["sat"] + "," + defBultColorVals["lum"]; + var hsl2rgb = hslToRgb(hue, sat, lum); + color = toHex(hsl2rgb.r) + toHex(hsl2rgb.g) + toHex(hsl2rgb.b); + //defBultColor = cnvrtHslColor2Hex(hslClr); //TODO + // console.log("hslClr: " + hslClr); + } else if (node["a:sysClr"] !== undefined) { + clrNode = node["a:sysClr"]; + // //Need to test///////////////////////////////////////////// + var sysClr = getTextByPathList(clrNode, ["attrs", "lastClr"]); + if (sysClr !== undefined) { + color = sysClr; + } + } + //console.log("color: [%cstart]", "color: #" + color, tinycolor(color).toHslString(), color) + + //fix color -------------------------------------------------------- TODO + // + //1. "alpha": + //Specifies the opacity as expressed by a percentage value. + // [Example: The following represents a green solid fill which is 50 % opaque + // < a: solidFill > + // + // + // + // + var isAlpha = false; + var alpha = parseInt(getTextByPathList(clrNode, ["a:alpha", "attrs", "val"])) / 100000; + //console.log("alpha: ", alpha) + if (!isNaN(alpha)) { + // var al_color = new colz.Color(color); + // al_color.setAlpha(alpha); + // var ne_color = al_color.rgba.toString(); + // color = (rgba2hex(ne_color)) + var al_color = tinycolor(color); + al_color.setAlpha(alpha); + color = al_color.toHex8() + isAlpha = true; + //console.log("al_color: ", al_color, ", color: ", color) + } + //2. "alphaMod": + // Specifies the opacity as expressed by a percentage relative to the input color. + // [Example: The following represents a green solid fill which is 50 % opaque + // < a: solidFill > + // + // + // + // + //3. "alphaOff": + // Specifies the opacity as expressed by a percentage offset increase or decrease to the + // input color.Increases never increase the opacity beyond 100 %, decreases never decrease + // the opacity below 0 %. + // [Example: The following represents a green solid fill which is 90 % opaque + // < a: solidFill > + // + // + // + // + + //4. "blue": + //Specifies the value of the blue component.The assigned value is specified as a + //percentage with 0 % indicating minimal blue and 100 % indicating maximum blue. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (00, FF, FF) + // + // + // + // + // + //5. "blueMod" + // Specifies the blue component as expressed by a percentage relative to the input color + // component.Increases never increase the blue component beyond 100 %, decreases + // never decrease the blue component below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, 00, FF) + // to value RRGGBB = (00, 00, 80) + // < a: solidFill > + // + // + // + // + //6. "blueOff" + // Specifies the blue component as expressed by a percentage offset increase or decrease + // to the input color component.Increases never increase the blue component + // beyond 100 %, decreases never decrease the blue component below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, 00, FF) + // to value RRGGBB = (00, 00, CC) + // < a: solidFill > + // + // + // + // + + //7. "comp" - This element specifies that the color rendered should be the complement of its input color with the complement + // being defined as such.Two colors are called complementary if, when mixed they produce a shade of grey.For + // instance, the complement of red which is RGB(255, 0, 0) is cyan.() + + //8. "gamma" - This element specifies that the output color rendered by the generating application should be the sRGB gamma + // shift of the input color. + + //9. "gray" - This element specifies a grayscale of its input color, taking into relative intensities of the red, green, and blue + // primaries. + + //10. "green": + // Specifies the value of the green component. The assigned value is specified as a + // percentage with 0 % indicating minimal green and 100 % indicating maximum green. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, 00, FF) + // to value RRGGBB = (00, FF, FF) + // < a: solidFill > + // + // + // + // + //11. "greenMod": + // Specifies the green component as expressed by a percentage relative to the input color + // component.Increases never increase the green component beyond 100 %, decreases + // never decrease the green component below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (00, 80, 00) + // < a: solidFill > + // + // + // + // + //12. "greenOff": + // Specifies the green component as expressed by a percentage offset increase or decrease + // to the input color component.Increases never increase the green component + // beyond 100 %, decreases never decrease the green component below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (00, CC, 00) + // < a: solidFill > + // + // + // + // + + //13. "hue" (This element specifies a color using the HSL color model): + // This element specifies the input color with the specified hue, but with its saturation and luminance unchanged. + // < a: solidFill > + // + // + // + // + // + // + // + + //14. "hueMod" (This element specifies a color using the HSL color model): + // Specifies the hue as expressed by a percentage relative to the input color. + // [Example: The following manipulates the fill color from having RGB value RRGGBB = (00, FF, 00) to value RRGGBB = (FF, FF, 00) + // < a: solidFill > + // + // + // + // + + var hueMod = parseInt(getTextByPathList(clrNode, ["a:hueMod", "attrs", "val"])) / 100000; + //console.log("hueMod: ", hueMod) + if (!isNaN(hueMod)) { + color = applyHueMod(color, hueMod, isAlpha); + } + //15. "hueOff"(This element specifies a color using the HSL color model): + // Specifies the actual angular value of the shift.The result of the shift shall be between 0 + // and 360 degrees.Shifts resulting in angular values less than 0 are treated as 0. Shifts + // resulting in angular values greater than 360 are treated as 360. + // [Example: + // The following increases the hue angular value by 10 degrees. + // < a: solidFill > + // + // + // + //var hueOff = parseInt(getTextByPathList(clrNode, ["a:hueOff", "attrs", "val"])) / 100000; + // if (!isNaN(hueOff)) { + // //console.log("hueOff: ", hueOff, " (TODO)") + // //color = applyHueOff(color, hueOff, isAlpha); + // } + + //16. "inv" (inverse) + //This element specifies the inverse of its input color. + //The inverse of red (1, 0, 0) is cyan (0, 1, 1 ). + // The following represents cyan, the inverse of red: + // + // + // + // + // + + //17. "invGamma" - This element specifies that the output color rendered by the generating application should be the inverse sRGB + // gamma shift of the input color. + + //18. "lum": + // This element specifies the input color with the specified luminance, but with its hue and saturation unchanged. + // Typically luminance values fall in the range[0 %, 100 %]. + // The following two solid fills are equivalent: + // + // + // + // + // + // + // + // + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (00, 66, 00) + // < a: solidFill > + // + // + // + // + // end example] + //19. "lumMod": + // Specifies the luminance as expressed by a percentage relative to the input color. + // Increases never increase the luminance beyond 100 %, decreases never decrease the + // luminance below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (00, 75, 00) + // < a: solidFill > + // + // + // + // + // end example] + var lumMod = parseInt(getTextByPathList(clrNode, ["a:lumMod", "attrs", "val"])) / 100000; + //console.log("lumMod: ", lumMod) + if (!isNaN(lumMod)) { + color = applyLumMod(color, lumMod, isAlpha); + } + //var lumMod_color = applyLumMod(color, 0.5); + //console.log("lumMod_color: ", lumMod_color) + //20. "lumOff" + // Specifies the luminance as expressed by a percentage offset increase or decrease to the + // input color.Increases never increase the luminance beyond 100 %, decreases never + // decrease the luminance below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (00, 99, 00) + // < a: solidFill > + // + // + // + // + var lumOff = parseInt(getTextByPathList(clrNode, ["a:lumOff", "attrs", "val"])) / 100000; + //console.log("lumOff: ", lumOff) + if (!isNaN(lumOff)) { + color = applyLumOff(color, lumOff, isAlpha); + } + + + //21. "red": + // Specifies the value of the red component.The assigned value is specified as a percentage + // with 0 % indicating minimal red and 100 % indicating maximum red. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (FF, FF, 00) + // < a: solidFill > + // + // + // + // + //22. "redMod": + // Specifies the red component as expressed by a percentage relative to the input color + // component.Increases never increase the red component beyond 100 %, decreases never + // decrease the red component below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (FF, 00, 00) + // to value RRGGBB = (80, 00, 00) + // < a: solidFill > + // + // + // + // + //23. "redOff": + // Specifies the red component as expressed by a percentage offset increase or decrease to + // the input color component.Increases never increase the red component beyond 100 %, + // decreases never decrease the red component below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (FF, 00, 00) + // to value RRGGBB = (CC, 00, 00) + // < a: solidFill > + // + // + // + // + + //23. "sat": + // This element specifies the input color with the specified saturation, but with its hue and luminance unchanged. + // Typically saturation values fall in the range[0 %, 100 %]. + // [Example: + // The following two solid fills are equivalent: + // + // + // + // + // + // + // + // + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (40, C0, 40) + // < a: solidFill > + // + // + // + // + // end example] + + //24. "satMod": + // Specifies the saturation as expressed by a percentage relative to the input color. + // Increases never increase the saturation beyond 100 %, decreases never decrease the + // saturation below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (66, 99, 66) + // < a: solidFill > + // + // + // + // + var satMod = parseInt(getTextByPathList(clrNode, ["a:satMod", "attrs", "val"])) / 100000; + if (!isNaN(satMod)) { + color = applySatMod(color, satMod, isAlpha); + } + //25. "satOff": + // Specifies the saturation as expressed by a percentage offset increase or decrease to the + // input color.Increases never increase the saturation beyond 100 %, decreases never + // decrease the saturation below 0 %. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (19, E5, 19) + // < a: solidFill > + // + // + // + // + // var satOff = parseInt(getTextByPathList(clrNode, ["a:satOff", "attrs", "val"])) / 100000; + // if (!isNaN(satOff)) { + // console.log("satOff: ", satOff, " (TODO)") + // } + + //26. "shade": + // This element specifies a darker version of its input color.A 10 % shade is 10 % of the input color combined with 90 % black. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (00, BC, 00) + // < a: solidFill > + // + // + // + // + // end example] + var shade = parseInt(getTextByPathList(clrNode, ["a:shade", "attrs", "val"])) / 100000; + if (!isNaN(shade)) { + color = applyShade(color, shade, isAlpha); + } + //27. "tint": + // This element specifies a lighter version of its input color.A 10 % tint is 10 % of the input color combined with + // 90 % white. + // [Example: The following manipulates the fill from having RGB value RRGGBB = (00, FF, 00) + // to value RRGGBB = (BC, FF, BC) + // < a: solidFill > + // + // + // + // + var tint = parseInt(getTextByPathList(clrNode, ["a:tint", "attrs", "val"])) / 100000; + if (!isNaN(tint)) { + color = applyTint(color, tint, isAlpha); + } + //console.log("color [%cfinal]: ", "color: #" + color, tinycolor(color).toHslString(), color) + + return color; + } + function toHex(n) { + var hex = n.toString(16); + while (hex.length < 2) { hex = "0" + hex; } + return hex; + } + function hslToRgb(hue, sat, light) { + var t1, t2, r, g, b; + hue = hue / 60; + if (light <= 0.5) { + t2 = light * (sat + 1); + } else { + t2 = light + sat - (light * sat); + } + t1 = light * 2 - t2; + r = hueToRgb(t1, t2, hue + 2) * 255; + g = hueToRgb(t1, t2, hue) * 255; + b = hueToRgb(t1, t2, hue - 2) * 255; + return { r: r, g: g, b: b }; + } + function hueToRgb(t1, t2, hue) { + if (hue < 0) hue += 6; + if (hue >= 6) hue -= 6; + if (hue < 1) return (t2 - t1) * hue + t1; + else if (hue < 3) return t2; + else if (hue < 4) return (t2 - t1) * (4 - hue) + t1; + else return t1; + } + function getColorName2Hex(name) { + var hex; + var colorName = ['white', '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', 'DarkGrey', 'DarkGreen', 'DarkKhaki', 'DarkMagenta', 'DarkOliveGreen', 'DarkOrange', 'DarkOrchid', 'DarkRed', 'DarkSalmon', 'DarkSeaGreen', 'DarkSlateBlue', 'DarkSlateGray', 'DarkSlateGrey', 'DarkTurquoise', 'DarkViolet', 'DeepPink', 'DeepSkyBlue', 'DimGray', 'DimGrey', 'DodgerBlue', 'FireBrick', 'FloralWhite', 'ForestGreen', 'Fuchsia', 'Gainsboro', 'GhostWhite', 'Gold', 'GoldenRod', 'Gray', 'Grey', 'Green', 'GreenYellow', 'HoneyDew', 'HotPink', 'IndianRed', 'Indigo', 'Ivory', 'Khaki', 'Lavender', 'LavenderBlush', 'LawnGreen', 'LemonChiffon', 'LightBlue', 'LightCoral', 'LightCyan', 'LightGoldenRodYellow', 'LightGray', 'LightGrey', 'LightGreen', 'LightPink', 'LightSalmon', 'LightSeaGreen', 'LightSkyBlue', 'LightSlateGray', 'LightSlateGrey', 'LightSteelBlue', 'LightYellow', 'Lime', 'LimeGreen', 'Linen', 'Magenta', 'Maroon', 'MediumAquaMarine', 'MediumBlue', 'MediumOrchid', 'MediumPurple', 'MediumSeaGreen', 'MediumSlateBlue', 'MediumSpringGreen', 'MediumTurquoise', 'MediumVioletRed', 'MidnightBlue', 'MintCream', 'MistyRose', 'Moccasin', 'NavajoWhite', 'Navy', 'OldLace', 'Olive', 'OliveDrab', 'Orange', 'OrangeRed', 'Orchid', 'PaleGoldenRod', 'PaleGreen', 'PaleTurquoise', 'PaleVioletRed', 'PapayaWhip', 'PeachPuff', 'Peru', 'Pink', 'Plum', 'PowderBlue', 'Purple', 'RebeccaPurple', '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']; + var colorHex = ['ffffff', 'f0f8ff', 'faebd7', '00ffff', '7fffd4', 'f0ffff', 'f5f5dc', 'ffe4c4', '000000', 'ffebcd', '0000ff', '8a2be2', 'a52a2a', 'deb887', '5f9ea0', '7fff00', 'd2691e', 'ff7f50', '6495ed', 'fff8dc', 'dc143c', '00ffff', '00008b', '008b8b', 'b8860b', 'a9a9a9', 'a9a9a9', '006400', 'bdb76b', '8b008b', '556b2f', 'ff8c00', '9932cc', '8b0000', 'e9967a', '8fbc8f', '483d8b', '2f4f4f', '2f4f4f', '00ced1', '9400d3', 'ff1493', '00bfff', '696969', '696969', '1e90ff', 'b22222', 'fffaf0', '228b22', 'ff00ff', 'dcdcdc', 'f8f8ff', 'ffd700', 'daa520', '808080', '808080', '008000', 'adff2f', 'f0fff0', 'ff69b4', 'cd5c5c', '4b0082', 'fffff0', 'f0e68c', 'e6e6fa', 'fff0f5', '7cfc00', 'fffacd', 'add8e6', 'f08080', 'e0ffff', 'fafad2', 'd3d3d3', 'd3d3d3', '90ee90', 'ffb6c1', 'ffa07a', '20b2aa', '87cefa', '778899', '778899', 'b0c4de', 'ffffe0', '00ff00', '32cd32', 'faf0e6', 'ff00ff', '800000', '66cdaa', '0000cd', 'ba55d3', '9370db', '3cb371', '7b68ee', '00fa9a', '48d1cc', 'c71585', '191970', 'f5fffa', 'ffe4e1', 'ffe4b5', 'ffdead', '000080', 'fdf5e6', '808000', '6b8e23', 'ffa500', 'ff4500', 'da70d6', 'eee8aa', '98fb98', 'afeeee', 'db7093', 'ffefd5', 'ffdab9', 'cd853f', 'ffc0cb', 'dda0dd', 'b0e0e6', '800080', '663399', 'ff0000', 'bc8f8f', '4169e1', '8b4513', 'fa8072', 'f4a460', '2e8b57', 'fff5ee', 'a0522d', 'c0c0c0', '87ceeb', '6a5acd', '708090', '708090', 'fffafa', '00ff7f', '4682b4', 'd2b48c', '008080', 'd8bfd8', 'ff6347', '40e0d0', 'ee82ee', 'f5deb3', 'ffffff', 'f5f5f5', 'ffff00', '9acd32']; + var findIndx = colorName.indexOf(name); + if (findIndx != -1) { + hex = colorHex[findIndx]; + } + return hex; + } + function getSchemeColorFromTheme(schemeClr, clrMap, phClr, warpObj) { + // in slide master + // e.g. tx2="dk2" bg2="lt2" tx1="dk1" bg1="lt1" slideLayoutClrOvride + //console.log("getSchemeColorFromTheme: schemeClr: ", schemeClr, ",clrMap: ", clrMap) + var slideLayoutClrOvride; + if (clrMap !== undefined) { + slideLayoutClrOvride = clrMap;//getTextByPathList(clrMap, ["p:sldMaster", "p:clrMap", "attrs"]) + } else { + var sldClrMapOvr = getTextByPathList(warpObj["slideContent"], ["p:sld", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]); + if (sldClrMapOvr !== undefined) { + slideLayoutClrOvride = sldClrMapOvr; + } else { + var sldClrMapOvr = getTextByPathList(warpObj["slideLayoutContent"], ["p:sldLayout", "p:clrMapOvr", "a:overrideClrMapping", "attrs"]); + if (sldClrMapOvr !== undefined) { + slideLayoutClrOvride = sldClrMapOvr; + } else { + slideLayoutClrOvride = getTextByPathList(warpObj["slideMasterContent"], ["p:sldMaster", "p:clrMap", "attrs"]); + } + + } + } + //console.log("getSchemeColorFromTheme slideLayoutClrOvride: ", slideLayoutClrOvride); + var schmClrName = schemeClr.substr(2); + if (schmClrName == "phClr" && phClr !== undefined) { + color = phClr; + } else { + if (slideLayoutClrOvride !== undefined) { + switch (schmClrName) { + case "tx1": + case "tx2": + case "bg1": + case "bg2": + schemeClr = "a:" + slideLayoutClrOvride[schmClrName]; + break; + } + } else { + switch (schmClrName) { + case "tx1": + schemeClr = "a:dk1"; + break; + case "tx2": + schemeClr = "a:dk2"; + break; + case "bg1": + schemeClr = "a:lt1"; + break; + case "bg2": + schemeClr = "a:lt2"; + break; + } + } + //console.log("getSchemeColorFromTheme: schemeClr: ", schemeClr); + var refNode = getTextByPathList(warpObj["themeContent"], ["a:theme", "a:themeElements", "a:clrScheme", schemeClr]); + var color = getTextByPathList(refNode, ["a:srgbClr", "attrs", "val"]); + //console.log("themeContent: color", color); + if (color === undefined && refNode !== undefined) { + color = getTextByPathList(refNode, ["a:sysClr", "attrs", "lastClr"]); + } + } + //console.log(color) + return color; + } + + function extractChartData(serNode) { + + var dataMat = new Array(); + + if (serNode === undefined) { + return dataMat; + } + + if (serNode["c:xVal"] !== undefined) { + var dataRow = new Array(); + eachElement(serNode["c:xVal"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) { + dataRow.push(parseFloat(innerNode["c:v"])); + return ""; + }); + dataMat.push(dataRow); + dataRow = new Array(); + eachElement(serNode["c:yVal"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) { + dataRow.push(parseFloat(innerNode["c:v"])); + return ""; + }); + dataMat.push(dataRow); + } else { + eachElement(serNode, function (innerNode, index) { + var dataRow = new Array(); + var colName = getTextByPathList(innerNode, ["c:tx", "c:strRef", "c:strCache", "c:pt", "c:v"]) || index; + + // Category (string or number) + var rowNames = {}; + if (getTextByPathList(innerNode, ["c:cat", "c:strRef", "c:strCache", "c:pt"]) !== undefined) { + eachElement(innerNode["c:cat"]["c:strRef"]["c:strCache"]["c:pt"], function (innerNode, index) { + rowNames[innerNode["attrs"]["idx"]] = innerNode["c:v"]; + return ""; + }); + } else if (getTextByPathList(innerNode, ["c:cat", "c:numRef", "c:numCache", "c:pt"]) !== undefined) { + eachElement(innerNode["c:cat"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) { + rowNames[innerNode["attrs"]["idx"]] = innerNode["c:v"]; + return ""; + }); + } + + // Value + if (getTextByPathList(innerNode, ["c:val", "c:numRef", "c:numCache", "c:pt"]) !== undefined) { + eachElement(innerNode["c:val"]["c:numRef"]["c:numCache"]["c:pt"], function (innerNode, index) { + dataRow.push({ x: innerNode["attrs"]["idx"], y: parseFloat(innerNode["c:v"]) }); + return ""; + }); + } + + dataMat.push({ key: colName, values: dataRow, xlabels: rowNames }); + return ""; + }); + } + + return dataMat; + } + + // ===== Node functions ===== + /** + * getTextByPathStr + * @param {Object} node + * @param {string} pathStr + */ + function getTextByPathStr(node, pathStr) { + return getTextByPathList(node, pathStr.trim().split(/\s+/)); + } + + /** + * getTextByPathList + * @param {Object} node + * @param {string Array} path + */ + function getTextByPathList(node, path) { + + if (path.constructor !== Array) { + throw Error("Error of path type! path is not array."); + } + + if (node === undefined) { + return undefined; + } + + var l = path.length; + for (var i = 0; i < l; i++) { + node = node[path[i]]; + if (node === undefined) { + return undefined; + } + } + + return node; + } + /** + * setTextByPathList + * @param {Object} node + * @param {string Array} path + * @param {string} value + */ + function setTextByPathList(node, path, value) { + + if (path.constructor !== Array) { + throw Error("Error of path type! path is not array."); + } + + if (node === undefined) { + return undefined; + } + + Object.prototype.set = function (parts, value) { + //var parts = prop.split('.'); + var obj = this; + var lent = parts.length; + for (var i = 0; i < lent; i++) { + var p = parts[i]; + if (obj[p] === undefined) { + if (i == lent - 1) { + obj[p] = value; + } else { + obj[p] = {}; + } + } + obj = obj[p]; + } + return obj; + } + + node.set(path, value) + } + + /** + * eachElement + * @param {Object} node + * @param {function} doFunction + */ + function eachElement(node, doFunction) { + if (node === undefined) { + return; + } + var result = ""; + if (node.constructor === Array) { + var l = node.length; + for (var i = 0; i < l; i++) { + result += doFunction(node[i], i); + } + } else { + result += doFunction(node, 0); + } + return result; + } + + // ===== Color functions ===== + /** + * applyShade + * @param {string} rgbStr + * @param {number} shadeValue + */ + function applyShade(rgbStr, shadeValue, isAlpha) { + var color = tinycolor(rgbStr).toHsl(); + //console.log("applyShade color: ", color, ", shadeValue: ", shadeValue) + if (shadeValue >= 1) { + shadeValue = 1; + } + var cacl_l = Math.min(color.l * shadeValue, 1);//;color.l * shadeValue + (1 - shadeValue); + // if (isAlpha) + // return color.lighten(tintValue).toHex8(); + // return color.lighten(tintValue).toHex(); + if (isAlpha) + return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex8(); + return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex(); + } + + /** + * applyTint + * @param {string} rgbStr + * @param {number} tintValue + */ + function applyTint(rgbStr, tintValue, isAlpha) { + var color = tinycolor(rgbStr).toHsl(); + //console.log("applyTint color: ", color, ", tintValue: ", tintValue) + if (tintValue >= 1) { + tintValue = 1; + } + var cacl_l = color.l * tintValue + (1 - tintValue); + // if (isAlpha) + // return color.lighten(tintValue).toHex8(); + // return color.lighten(tintValue).toHex(); + if (isAlpha) + return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex8(); + return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex(); + } + + /** + * applyLumOff + * @param {string} rgbStr + * @param {number} offset + */ + function applyLumOff(rgbStr, offset, isAlpha) { + var color = tinycolor(rgbStr).toHsl(); + //console.log("applyLumOff color.l: ", color.l, ", offset: ", offset, ", color.l + offset : ", color.l + offset) + var lum = offset + color.l; + if (lum >= 1) { + if (isAlpha) + return tinycolor({ h: color.h, s: color.s, l: 1, a: color.a }).toHex8(); + return tinycolor({ h: color.h, s: color.s, l: 1, a: color.a }).toHex(); + } + if (isAlpha) + return tinycolor({ h: color.h, s: color.s, l: lum, a: color.a }).toHex8(); + return tinycolor({ h: color.h, s: color.s, l: lum, a: color.a }).toHex(); + } + + /** + * applyLumMod + * @param {string} rgbStr + * @param {number} multiplier + */ + function applyLumMod(rgbStr, multiplier, isAlpha) { + var color = tinycolor(rgbStr).toHsl(); + //console.log("applyLumMod color.l: ", color.l, ", multiplier: ", multiplier, ", color.l * multiplier : ", color.l * multiplier) + var cacl_l = color.l * multiplier; + if (cacl_l >= 1) { + cacl_l = 1; + } + if (isAlpha) + return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex8(); + return tinycolor({ h: color.h, s: color.s, l: cacl_l, a: color.a }).toHex(); + } + + + // /** + // * applyHueMod + // * @param {string} rgbStr + // * @param {number} multiplier + // */ + function applyHueMod(rgbStr, multiplier, isAlpha) { + var color = tinycolor(rgbStr).toHsl(); + //console.log("applyLumMod color.h: ", color.h, ", multiplier: ", multiplier, ", color.h * multiplier : ", color.h * multiplier) + + var cacl_h = color.h * multiplier; + if (cacl_h >= 360) { + cacl_h = cacl_h - 360; + } + if (isAlpha) + return tinycolor({ h: cocacl_h, s: color.s, l: color.l, a: color.a }).toHex8(); + return tinycolor({ h: cacl_h, s: color.s, l: color.l, a: color.a }).toHex(); + } + + + // /** + // * applyHueOff + // * @param {string} rgbStr + // * @param {number} offset + // */ + // function applyHueOff(rgbStr, offset, isAlpha) { + // var color = tinycolor(rgbStr).toHsl(); + // //console.log("applyLumMod color.h: ", color.h, ", offset: ", offset, ", color.h * offset : ", color.h * offset) + + // var cacl_h = color.h * offset; + // if (cacl_h >= 360) { + // cacl_h = cacl_h - 360; + // } + // if (isAlpha) + // return tinycolor({ h: cocacl_h, s: color.s, l: color.l, a: color.a }).toHex8(); + // return tinycolor({ h: cacl_h, s: color.s, l: color.l, a: color.a }).toHex(); + // } + // /** + // * applySatMod + // * @param {string} rgbStr + // * @param {number} multiplier + // */ + function applySatMod(rgbStr, multiplier, isAlpha) { + var color = tinycolor(rgbStr).toHsl(); + //console.log("applySatMod color.s: ", color.s, ", multiplier: ", multiplier, ", color.s * multiplier : ", color.s * multiplier) + var cacl_s = color.s * multiplier; + if (cacl_s >= 1) { + cacl_s = 1; + } + //return; + // if (isAlpha) + // return tinycolor(rgbStr).saturate(multiplier * 100).toHex8(); + // return tinycolor(rgbStr).saturate(multiplier * 100).toHex(); + if (isAlpha) + return tinycolor({ h: color.h, s: cacl_s, l: color.l, a: color.a }).toHex8(); + return tinycolor({ h: color.h, s: cacl_s, l: color.l, a: color.a }).toHex(); + } + + /** + * rgba2hex + * @param {string} rgbaStr + */ + function rgba2hex(rgbaStr) { + var a, + rgb = rgbaStr.replace(/\s/g, '').match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i), + alpha = (rgb && rgb[4] || "").trim(), + hex = rgb ? + (rgb[1] | 1 << 8).toString(16).slice(1) + + (rgb[2] | 1 << 8).toString(16).slice(1) + + (rgb[3] | 1 << 8).toString(16).slice(1) : rgbaStr; + + if (alpha !== "") { + a = alpha; + } else { + a = 01; + } + // multiply before convert to HEX + a = ((a * 255) | 1 << 8).toString(16).slice(1) + hex = hex + a; + + return hex; + } + + ///////////////////////Amir//////////////// + function angleToDegrees(angle) { + if (angle == "" || angle == null) { + return 0; + } + return Math.round(angle / 60000); + } + // function degreesToRadians(degrees) { + // //Math.PI + // if (degrees == "" || degrees == null || degrees == undefined) { + // return 0; + // } + // return degrees * (Math.PI / 180); + // } + function getMimeType(imgFileExt) { + var mimeType = ""; + //console.log(imgFileExt) + switch (imgFileExt.toLowerCase()) { + case "jpg": + case "jpeg": + mimeType = "image/jpeg"; + break; + case "png": + mimeType = "image/png"; + break; + case "gif": + mimeType = "image/gif"; + break; + case "emf": // Not native support + mimeType = "image/x-emf"; + break; + case "wmf": // Not native support + mimeType = "image/x-wmf"; + break; + case "svg": + mimeType = "image/svg+xml"; + break; + case "mp4": + mimeType = "video/mp4"; + break; + case "webm": + mimeType = "video/webm"; + break; + case "ogg": + mimeType = "video/ogg"; + break; + case "avi": + mimeType = "video/avi"; + break; + case "mpg": + mimeType = "video/mpg"; + break; + case "wmv": + mimeType = "video/wmv"; + break; + case "mp3": + mimeType = "audio/mpeg"; + break; + case "wav": + mimeType = "audio/wav"; + break; + case "emf": + mimeType = "image/emf"; + break; + case "wmf": + mimeType = "image/wmf"; + case "tif": + case "tiff": + mimeType = "image/tiff"; + break; + } + return mimeType; + } + function getSvgGradient(w, h, angl, color_arry, shpId) { + var stopsArray = getMiddleStops(color_arry - 2); + + var svgAngle = '', + svgHeight = h, + svgWidth = w, + svg = '', + xy_ary = SVGangle(angl, svgHeight, svgWidth), + x1 = xy_ary[0], + y1 = xy_ary[1], + x2 = xy_ary[2], + y2 = xy_ary[3]; + + var sal = stopsArray.length, + sr = sal < 20 ? 100 : 1000; + svgAngle = ' gradientUnits="userSpaceOnUse" x1="' + x1 + '%" y1="' + y1 + '%" x2="' + x2 + '%" y2="' + y2 + '%"'; + svgAngle = '\n'; + svg += svgAngle; + + for (var i = 0; i < sal; i++) { + var tinClr = tinycolor("#" + color_arry[i]); + var alpha = tinClr.getAlpha(); + //console.log("color: ", color_arry[i], ", rgba: ", tinClr.toHexString(), ", alpha: ", alpha) + svg += ''; + } else { + var ptrn = ''; + } + var duotoneNode = getTextByPathList(blipNode, ["a:duotone"]) + var fillterNode = ""; + var filterUrl = ""; + if (duotoneNode !== undefined) { + //console.log("pic duotoneNode: ", duotoneNode) + var clr_ary = []; + Object.keys(duotoneNode).forEach(function (clr_type) { + //Object.keys(duotoneNode[clr_type]).forEach(function (clr) { + //console.log("blip pic duotone clr: ", duotoneNode[clr_type][clr], clr) + if (clr_type != "attrs") { + var obj = {}; + obj[clr_type] = duotoneNode[clr_type]; + //console.log("blip pic duotone obj: ", obj) + var hexClr = getSolidFill(obj, undefined, undefined, warpObj) + //clr_ary.push(); + + var color = tinycolor("#" + hexClr); + clr_ary.push(color.toRgb()); // { r: 255, g: 0, b: 0, a: 1 } + } + // }) + }) + + if (clr_ary.length == 2) { + + fillterNode = ' ' + + '' + + '' + + '' + + //clr_ary.forEach(function(clr){ + '' + + '' + + '' + + //}); + '' + + ' '; + } + + filterUrl = 'filter="url(#svg_image_duotone)"'; + + ptrn += fillterNode; + } + + fill = escapeHtml(fill); + if (sx !== undefined && sx != 0) { + ptrn += ''; + } else { + ptrn += ''; + } + ptrn += ''; + + //console.log("getSvgImagePattern(...) pic_dim:", pic_dim, ", fillColor: ", fill, ", blipNode: ", blipNode, ",sx: ", sx, ", sy: ", sy, ", clr_ary: ", clr_ary, ", ptrn: ", ptrn) + + return ptrn; + } + + function getBase64ImageDimensions(imgSrc) { + var image = new Image(); + var w, h; + image.onload = function () { + w = image.width; + h = image.height; + }; + image.src = imgSrc; + + do { + if (image.width !== undefined) { + return [image.width, image.height]; + } + } while (image.width === undefined); + + //return [w, h]; + } + + function processMsgQueue(queue) { + for (var i = 0; i < queue.length; i++) { + processSingleMsg(queue[i].data); + } + } + + function processSingleMsg(d) { + + var chartID = d.chartID; + var chartType = d.chartType; + var chartData = d.chartData; + + var data = []; + + var chart = null; + switch (chartType) { + case "lineChart": + data = chartData; + chart = nv.models.lineChart() + .useInteractiveGuideline(true); + chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; }); + break; + case "barChart": + data = chartData; + chart = nv.models.multiBarChart(); + chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; }); + break; + case "pieChart": + case "pie3DChart": + if (chartData.length > 0) { + data = chartData[0].values; + } + chart = nv.models.pieChart(); + break; + case "areaChart": + data = chartData; + chart = nv.models.stackedAreaChart() + .clipEdge(true) + .useInteractiveGuideline(true); + chart.xAxis.tickFormat(function (d) { return chartData[0].xlabels[d] || d; }); + break; + case "scatterChart": + + for (var i = 0; i < chartData.length; i++) { + var arr = []; + for (var j = 0; j < chartData[i].length; j++) { + arr.push({ x: j, y: chartData[i][j] }); + } + data.push({ key: 'data' + (i + 1), values: arr }); + } + + //data = chartData; + chart = nv.models.scatterChart() + .showDistX(true) + .showDistY(true) + .color(d3.scale.category10().range()); + chart.xAxis.axisLabel('X').tickFormat(d3.format('.02f')); + chart.yAxis.axisLabel('Y').tickFormat(d3.format('.02f')); + break; + default: + } + + if (chart !== null) { + + d3.select("#" + chartID) + .append("svg") + .datum(data) + .transition().duration(500) + .call(chart); + + nv.utils.windowResize(chart.update); + isDone = true; + } + + } + + function setNumericBullets(elem) { + var prgrphs_arry = elem; + for (var i = 0; i < prgrphs_arry.length; i++) { + var buSpan = $(prgrphs_arry[i]).find('.numeric-bullet-style'); + if (buSpan.length > 0) { + //console.log("DIV-"+i+":"); + var prevBultTyp = ""; + var prevBultLvl = ""; + var buletIndex = 0; + var tmpArry = new Array(); + var tmpArryIndx = 0; + var buletTypSrry = new Array(); + for (var j = 0; j < buSpan.length; j++) { + var bult_typ = $(buSpan[j]).data("bulltname"); + var bult_lvl = $(buSpan[j]).data("bulltlvl"); + //console.log(j+" - "+bult_typ+" lvl: "+bult_lvl ); + if (buletIndex == 0) { + prevBultTyp = bult_typ; + prevBultLvl = bult_lvl; + tmpArry[tmpArryIndx] = buletIndex; + buletTypSrry[tmpArryIndx] = bult_typ; + buletIndex++; + } else { + if (bult_typ == prevBultTyp && bult_lvl == prevBultLvl) { + prevBultTyp = bult_typ; + prevBultLvl = bult_lvl; + buletIndex++; + tmpArry[tmpArryIndx] = buletIndex; + buletTypSrry[tmpArryIndx] = bult_typ; + } else if (bult_typ != prevBultTyp && bult_lvl == prevBultLvl) { + prevBultTyp = bult_typ; + prevBultLvl = bult_lvl; + tmpArryIndx++; + tmpArry[tmpArryIndx] = buletIndex; + buletTypSrry[tmpArryIndx] = bult_typ; + buletIndex = 1; + } else if (bult_typ != prevBultTyp && Number(bult_lvl) > Number(prevBultLvl)) { + prevBultTyp = bult_typ; + prevBultLvl = bult_lvl; + tmpArryIndx++; + tmpArry[tmpArryIndx] = buletIndex; + buletTypSrry[tmpArryIndx] = bult_typ; + buletIndex = 1; + } else if (bult_typ != prevBultTyp && Number(bult_lvl) < Number(prevBultLvl)) { + prevBultTyp = bult_typ; + prevBultLvl = bult_lvl; + tmpArryIndx--; + buletIndex = tmpArry[tmpArryIndx] + 1; + } + } + //console.log(buletTypSrry[tmpArryIndx]+" - "+buletIndex); + var numIdx = getNumTypeNum(buletTypSrry[tmpArryIndx], buletIndex); + $(buSpan[j]).html(numIdx); + } + } + } + } + function getNumTypeNum(numTyp, num) { + var rtrnNum = ""; + switch (numTyp) { + case "arabicPeriod": + rtrnNum = num + ". "; + break; + case "arabicParenR": + rtrnNum = num + ") "; + break; + case "alphaLcParenR": + rtrnNum = alphaNumeric(num, "lowerCase") + ") "; + break; + case "alphaLcPeriod": + rtrnNum = alphaNumeric(num, "lowerCase") + ". "; + break; + + case "alphaUcParenR": + rtrnNum = alphaNumeric(num, "upperCase") + ") "; + break; + case "alphaUcPeriod": + rtrnNum = alphaNumeric(num, "upperCase") + ". "; + break; + + case "romanUcPeriod": + rtrnNum = romanize(num) + ". "; + break; + case "romanLcParenR": + rtrnNum = romanize(num) + ") "; + break; + case "hebrew2Minus": + rtrnNum = hebrew2Minus.format(num) + "-"; + break; + default: + rtrnNum = num; + } + return rtrnNum; + } + function romanize(num) { + if (!+num) + return false; + var digits = String(+num).split(""), + key = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", + "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", + "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"], + roman = "", + i = 3; + while (i--) + roman = (key[+digits.pop() + (i * 10)] || "") + roman; + return Array(+digits.join("") + 1).join("M") + roman; + } + var hebrew2Minus = archaicNumbers([ + [1000, ''], + [400, 'ת'], + [300, 'ש'], + [200, 'ר'], + [100, 'ק'], + [90, 'צ'], + [80, 'פ'], + [70, 'ע'], + [60, 'ס'], + [50, 'נ'], + [40, 'מ'], + [30, 'ל'], + [20, 'כ'], + [10, 'י'], + [9, 'ט'], + [8, 'ח'], + [7, 'ז'], + [6, 'ו'], + [5, 'ה'], + [4, 'ד'], + [3, 'ג'], + [2, 'ב'], + [1, 'א'], + [/יה/, 'ט״ו'], + [/יו/, 'ט״ז'], + [/([א-ת])([א-ת])$/, '$1״$2'], + [/^([א-ת])$/, "$1׳"] + ]); + function archaicNumbers(arr) { + var arrParse = arr.slice().sort(function (a, b) { return b[1].length - a[1].length }); + return { + format: function (n) { + var ret = ''; + jQuery.each(arr, function () { + var num = this[0]; + if (parseInt(num) > 0) { + for (; n >= num; n -= num) ret += this[1]; + } else { + ret = ret.replace(num, this[1]); + } + }); + return ret; + } + } + } + function alphaNumeric(num, upperLower) { + num = Number(num) - 1; + var aNum = ""; + if (upperLower == "upperCase") { + aNum = (((num / 26 >= 1) ? String.fromCharCode(num / 26 + 64) : '') + String.fromCharCode(num % 26 + 65)).toUpperCase(); + } else if (upperLower == "lowerCase") { + aNum = (((num / 26 >= 1) ? String.fromCharCode(num / 26 + 64) : '') + String.fromCharCode(num % 26 + 65)).toLowerCase(); + } + return aNum; + } + function base64ArrayBuffer(arrayBuffer) { + var base64 = ''; + var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var bytes = new Uint8Array(arrayBuffer); + var byteLength = bytes.byteLength; + var byteRemainder = byteLength % 3; + var mainLength = byteLength - byteRemainder; + + var a, b, c, d; + var chunk; + + for (var i = 0; i < mainLength; i = i + 3) { + chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; + a = (chunk & 16515072) >> 18; + b = (chunk & 258048) >> 12; + c = (chunk & 4032) >> 6; + d = chunk & 63; + base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]; + } + + if (byteRemainder == 1) { + chunk = bytes[mainLength]; + a = (chunk & 252) >> 2; + b = (chunk & 3) << 4; + base64 += encodings[a] + encodings[b] + '=='; + } else if (byteRemainder == 2) { + chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]; + a = (chunk & 64512) >> 10; + b = (chunk & 1008) >> 4; + c = (chunk & 15) << 2; + base64 += encodings[a] + encodings[b] + encodings[c] + '='; + } + + return base64; + } + + function IsVideoLink(vdoFile) { + /* + var ext = extractFileExtension(vdoFile); + if (ext.length == 3){ + return false; + }else{ + return true; + } + */ + var urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/; + return urlregex.test(vdoFile); + } + + function extractFileExtension(filename) { + return filename.substr((~-filename.lastIndexOf(".") >>> 0) + 2); + } + + function escapeHtml(text) { + var map = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + return text.replace(/[&<>"']/g, function (m) { return map[m]; }); + } + /////////////////////////////////////tXml/////////////////////////// + /* + This is my custom tXml.js file + */ + function tXml(t, r) { "use strict"; function e() { for (var r = []; t[l];)if (t.charCodeAt(l) == s) { if (t.charCodeAt(l + 1) === h) return l = t.indexOf(u, l), l + 1 && (l += 1), r; if (t.charCodeAt(l + 1) === v) { if (t.charCodeAt(l + 2) == m) { for (; -1 !== l && (t.charCodeAt(l) !== d || t.charCodeAt(l - 1) != m || t.charCodeAt(l - 2) != m || -1 == l);)l = t.indexOf(u, l + 1); -1 === l && (l = t.length) } else for (l += 2; t.charCodeAt(l) !== d && t[l];)l++; l++; continue } var e = a(); r.push(e) } else { var i = n(); i.trim().length > 0 && r.push(i), l++ } return r } function n() { var r = l; return l = t.indexOf(c, l) - 1, -2 === l && (l = t.length), t.slice(r, l + 1) } function i() { for (var r = l; -1 === A.indexOf(t[l]) && t[l];)l++; return t.slice(r, l) } function a() { var r = {}; l++, r.tagName = i(); for (var n = !1; t.charCodeAt(l) !== d && t[l];) { var a = t.charCodeAt(l); if (a > 64 && 91 > a || a > 96 && 123 > a) { for (var f = i(), c = t.charCodeAt(l); c && c !== p && c !== g && !(c > 64 && 91 > c || c > 96 && 123 > c) && c !== d;)l++, c = t.charCodeAt(l); if (n || (r.attributes = {}, n = !0), c === p || c === g) { var s = o(); if (-1 === l) return r } else s = null, l--; r.attributes[f] = s } l++ } if (t.charCodeAt(l - 1) !== h) if ("script" == r.tagName) { var u = l + 1; l = t.indexOf("", l), r.children = [t.slice(u, l - 1)], l += 8 } else if ("style" == r.tagName) { var u = l + 1; l = t.indexOf("", l), r.children = [t.slice(u, l - 1)], l += 7 } else -1 == C.indexOf(r.tagName) && (l++, r.children = e(f)); else l++; return r } function o() { var r = t[l], e = ++l; return l = t.indexOf(r, e), t.slice(e, l) } function f() { var e = new RegExp("\\s" + r.attrName + "\\s*=['\"]" + r.attrValue + "['\"]").exec(t); return e ? e.index : -1 } r = r || {}; var l = r.pos || 0, c = "<", s = "<".charCodeAt(0), u = ">", d = ">".charCodeAt(0), m = "-".charCodeAt(0), h = "/".charCodeAt(0), v = "!".charCodeAt(0), p = "'".charCodeAt(0), g = '"'.charCodeAt(0), A = "\n >/= ", C = ["img", "br", "input", "meta", "link"], y = null; if (void 0 !== r.attrValue) { r.attrName = r.attrName || "id"; for (var y = []; -1 !== (l = f());)l = t.lastIndexOf("<", l), -1 !== l && y.push(a()), t = t.substr(l), l = 0 } else y = r.parseNode ? a() : e(); return r.filter && (y = tXml.filter(y, r.filter)), r.simplify && (y = tXml.simplify(y)), y.pos = l, y } var _order = 1; tXml.simplify = function (t) { var r = {}; if (void 0 === t) return {}; if (1 === t.length && "string" == typeof t[0]) return t[0]; t.forEach(function (t) { if ("object" == typeof t) { r[t.tagName] || (r[t.tagName] = []); var e = tXml.simplify(t.children || []); r[t.tagName].push(e), t.attributes && (e.attrs = t.attributes), void 0 === e.attrs ? e.attrs = { order: _order } : e.attrs.order = _order, _order++ } }); for (var e in r) 1 == r[e].length && (r[e] = r[e][0]); return r }, tXml.filter = function (t, r) { var e = []; return t.forEach(function (t) { if ("object" == typeof t && r(t) && e.push(t), t.children) { var n = tXml.filter(t.children, r); e = e.concat(n) } }), e }, tXml.stringify = function (t) { function r(t) { if (t) for (var r = 0; r < t.length; r++)"string" == typeof t[r] ? n += t[r].trim() : e(t[r]) } function e(t) { n += "<" + t.tagName; for (var e in t.attributes) n += null === t.attributes[e] ? " " + e : -1 === t.attributes[e].indexOf('"') ? " " + e + '="' + t.attributes[e].trim() + '"' : " " + e + "='" + t.attributes[e].trim() + "'"; n += ">", r(t.children), n += "" } var n = ""; return r(t), n }, tXml.toContentString = function (t) { if (Array.isArray(t)) { var r = ""; return t.forEach(function (t) { r += " " + tXml.toContentString(t), r = r.trim() }), r } return "object" == typeof t ? tXml.toContentString(t.children) : " " + t }, tXml.getElementById = function (t, r, e) { var n = tXml(t, { attrValue: r, simplify: e }); return e ? n : n[0] }, tXml.getElementsByClassName = function (t, r, e) { return tXml(t, { attrName: "class", attrValue: "[a-zA-Z0-9-s ]*" + r + "[a-zA-Z0-9-s ]*", simplify: e }) }, tXml.parseStream = function (t, r) { if ("function" == typeof r && (cb = r, r = 0), "string" == typeof r && (r = r.length + 2), "string" == typeof t) { var e = require("fs"); t = e.createReadStream(t, { start: r }), r = 0 } var n = r, i = "", a = 0; return t.on("data", function (r) { a++, i += r; for (var e = 0; ;) { n = i.indexOf("<", n) + 1; var o = tXml(i, { pos: n, parseNode: !0 }); if (n = o.pos, n > i.length - 1 || e > n) return void (e && (i = i.slice(e), n = 0, e = 0)); t.emit("xml", o), e = n } i = i.slice(n), n = 0 }), t.on("end", function () { console.log("end") }), t }, "object" == typeof module && (module.exports = tXml); + }; + + /*! + JSZipUtils - A collection of cross-browser utilities to go along with JSZip. + + (c) 2014 Stuart Knightley, David Duponchel + Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown. + */ + !function (a) { "object" == typeof exports ? module.exports = a() : "function" == typeof define && define.amd ? define(a) : "undefined" != typeof window ? window.JSZipUtils = a() : "undefined" != typeof global ? global.JSZipUtils = a() : "undefined" != typeof self && (self.JSZipUtils = a()) }(function () { return function a(b, c, d) { function e(g, h) { if (!c[g]) { if (!b[g]) { var i = "function" == typeof require && require; if (!h && i) return i(g, !0); if (f) return f(g, !0); throw new Error("Cannot find module '" + g + "'") } var j = c[g] = { exports: {} }; b[g][0].call(j.exports, function (a) { var c = b[g][1][a]; return e(c ? c : a) }, j, j.exports, a, b, c, d) } return c[g].exports } for (var f = "function" == typeof require && require, g = 0; g < d.length; g++)e(d[g]); return e }({ 1: [function (a, b) { "use strict"; function c() { try { return new window.XMLHttpRequest } catch (a) { } } function d() { try { return new window.ActiveXObject("Microsoft.XMLHTTP") } catch (a) { } } var e = {}; e._getBinaryFromXHR = function (a) { return a.response || a.responseText }; var f = window.ActiveXObject ? function () { return c() || d() } : c; e.getBinaryContent = function (a, b) { try { var c = f(); c.open("GET", a, !0), "responseType" in c && (c.responseType = "arraybuffer"), c.overrideMimeType && c.overrideMimeType("text/plain; charset=x-user-defined"), c.onreadystatechange = function () { var d, f; if (4 === c.readyState) if (200 === c.status || 0 === c.status) { d = null, f = null; try { d = e._getBinaryFromXHR(c) } catch (g) { f = new Error(g) } b(f, d) } else b(new Error("Ajax error for " + a + " : " + this.status + " " + this.statusText), null) }, c.send() } catch (d) { b(new Error(d), null) } }, b.exports = e }, {}] }, {}, [1])(1) }); + + // TinyColor v1.4.2 + // https://github.com/bgrins/TinyColor + // 2020-09-25, Brian Grinstead, MIT License + !function (a) { function b(a, d) { if (a = a ? a : "", d = d || {}, a instanceof b) return a; if (!(this instanceof b)) return new b(a, d); var e = c(a); this._originalInput = a, this._r = e.r, this._g = e.g, this._b = e.b, this._a = e.a, this._roundA = P(100 * this._a) / 100, this._format = d.format || e.format, this._gradientType = d.gradientType, this._r < 1 && (this._r = P(this._r)), this._g < 1 && (this._g = P(this._g)), this._b < 1 && (this._b = P(this._b)), this._ok = e.ok, this._tc_id = O++ } function c(a) { var b = { r: 0, g: 0, b: 0 }, c = 1, e = null, g = null, i = null, j = !1, k = !1; return "string" == typeof a && (a = K(a)), "object" == typeof a && (J(a.r) && J(a.g) && J(a.b) ? (b = d(a.r, a.g, a.b), j = !0, k = "%" === String(a.r).substr(-1) ? "prgb" : "rgb") : J(a.h) && J(a.s) && J(a.v) ? (e = G(a.s), g = G(a.v), b = h(a.h, e, g), j = !0, k = "hsv") : J(a.h) && J(a.s) && J(a.l) && (e = G(a.s), i = G(a.l), b = f(a.h, e, i), j = !0, k = "hsl"), a.hasOwnProperty("a") && (c = a.a)), c = z(c), { ok: j, format: a.format || k, r: Q(255, R(b.r, 0)), g: Q(255, R(b.g, 0)), b: Q(255, R(b.b, 0)), a: c } } function d(a, b, c) { return { r: 255 * A(a, 255), g: 255 * A(b, 255), b: 255 * A(c, 255) } } function e(a, b, c) { a = A(a, 255), b = A(b, 255), c = A(c, 255); var d, e, f = R(a, b, c), g = Q(a, b, c), h = (f + g) / 2; if (f == g) d = e = 0; else { var i = f - g; switch (e = h > .5 ? i / (2 - f - g) : i / (f + g), f) { case a: d = (b - c) / i + (c > b ? 6 : 0); break; case b: d = (c - a) / i + 2; break; case c: d = (a - b) / i + 4 }d /= 6 } return { h: d, s: e, l: h } } function f(a, b, c) { function d(a, b, c) { return 0 > c && (c += 1), c > 1 && (c -= 1), 1 / 6 > c ? a + 6 * (b - a) * c : .5 > c ? b : 2 / 3 > c ? a + (b - a) * (2 / 3 - c) * 6 : a } var e, f, g; if (a = A(a, 360), b = A(b, 100), c = A(c, 100), 0 === b) e = f = g = c; else { var h = .5 > c ? c * (1 + b) : c + b - c * b, i = 2 * c - h; e = d(i, h, a + 1 / 3), f = d(i, h, a), g = d(i, h, a - 1 / 3) } return { r: 255 * e, g: 255 * f, b: 255 * g } } function g(a, b, c) { a = A(a, 255), b = A(b, 255), c = A(c, 255); var d, e, f = R(a, b, c), g = Q(a, b, c), h = f, i = f - g; if (e = 0 === f ? 0 : i / f, f == g) d = 0; else { switch (f) { case a: d = (b - c) / i + (c > b ? 6 : 0); break; case b: d = (c - a) / i + 2; break; case c: d = (a - b) / i + 4 }d /= 6 } return { h: d, s: e, v: h } } function h(b, c, d) { b = 6 * A(b, 360), c = A(c, 100), d = A(d, 100); var e = a.floor(b), f = b - e, g = d * (1 - c), h = d * (1 - f * c), i = d * (1 - (1 - f) * c), j = e % 6, k = [d, h, g, g, i, d][j], l = [i, d, d, h, g, g][j], m = [g, g, i, d, d, h][j]; return { r: 255 * k, g: 255 * l, b: 255 * m } } function i(a, b, c, d) { var e = [F(P(a).toString(16)), F(P(b).toString(16)), F(P(c).toString(16))]; return d && e[0].charAt(0) == e[0].charAt(1) && e[1].charAt(0) == e[1].charAt(1) && e[2].charAt(0) == e[2].charAt(1) ? e[0].charAt(0) + e[1].charAt(0) + e[2].charAt(0) : e.join("") } function j(a, b, c, d, e) { var f = [F(P(a).toString(16)), F(P(b).toString(16)), F(P(c).toString(16)), F(H(d))]; return e && f[0].charAt(0) == f[0].charAt(1) && f[1].charAt(0) == f[1].charAt(1) && f[2].charAt(0) == f[2].charAt(1) && f[3].charAt(0) == f[3].charAt(1) ? f[0].charAt(0) + f[1].charAt(0) + f[2].charAt(0) + f[3].charAt(0) : f.join("") } function k(a, b, c, d) { var e = [F(H(d)), F(P(a).toString(16)), F(P(b).toString(16)), F(P(c).toString(16))]; return e.join("") } function l(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toHsl(); return d.s -= c / 100, d.s = B(d.s), b(d) } function m(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toHsl(); return d.s += c / 100, d.s = B(d.s), b(d) } function n(a) { return b(a).desaturate(100) } function o(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toHsl(); return d.l += c / 100, d.l = B(d.l), b(d) } function p(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toRgb(); return d.r = R(0, Q(255, d.r - P(255 * -(c / 100)))), d.g = R(0, Q(255, d.g - P(255 * -(c / 100)))), d.b = R(0, Q(255, d.b - P(255 * -(c / 100)))), b(d) } function q(a, c) { c = 0 === c ? 0 : c || 10; var d = b(a).toHsl(); return d.l -= c / 100, d.l = B(d.l), b(d) } function r(a, c) { var d = b(a).toHsl(), e = (d.h + c) % 360; return d.h = 0 > e ? 360 + e : e, b(d) } function s(a) { var c = b(a).toHsl(); return c.h = (c.h + 180) % 360, b(c) } function t(a) { var c = b(a).toHsl(), d = c.h; return [b(a), b({ h: (d + 120) % 360, s: c.s, l: c.l }), b({ h: (d + 240) % 360, s: c.s, l: c.l })] } function u(a) { var c = b(a).toHsl(), d = c.h; return [b(a), b({ h: (d + 90) % 360, s: c.s, l: c.l }), b({ h: (d + 180) % 360, s: c.s, l: c.l }), b({ h: (d + 270) % 360, s: c.s, l: c.l })] } function v(a) { var c = b(a).toHsl(), d = c.h; return [b(a), b({ h: (d + 72) % 360, s: c.s, l: c.l }), b({ h: (d + 216) % 360, s: c.s, l: c.l })] } function w(a, c, d) { c = c || 6, d = d || 30; var e = b(a).toHsl(), f = 360 / d, g = [b(a)]; for (e.h = (e.h - (f * c >> 1) + 720) % 360; --c;)e.h = (e.h + f) % 360, g.push(b(e)); return g } function x(a, c) { c = c || 6; for (var d = b(a).toHsv(), e = d.h, f = d.s, g = d.v, h = [], i = 1 / c; c--;)h.push(b({ h: e, s: f, v: g })), g = (g + i) % 1; return h } function y(a) { var b = {}; for (var c in a) a.hasOwnProperty(c) && (b[a[c]] = c); return b } function z(a) { return a = parseFloat(a), (isNaN(a) || 0 > a || a > 1) && (a = 1), a } function A(b, c) { D(b) && (b = "100%"); var d = E(b); return b = Q(c, R(0, parseFloat(b))), d && (b = parseInt(b * c, 10) / 100), a.abs(b - c) < 1e-6 ? 1 : b % c / parseFloat(c) } function B(a) { return Q(1, R(0, a)) } function C(a) { return parseInt(a, 16) } function D(a) { return "string" == typeof a && -1 != a.indexOf(".") && 1 === parseFloat(a) } function E(a) { return "string" == typeof a && -1 != a.indexOf("%") } function F(a) { return 1 == a.length ? "0" + a : "" + a } function G(a) { return 1 >= a && (a = 100 * a + "%"), a } function H(b) { return a.round(255 * parseFloat(b)).toString(16) } function I(a) { return C(a) / 255 } function J(a) { return !!V.CSS_UNIT.exec(a) } function K(a) { a = a.replace(M, "").replace(N, "").toLowerCase(); var b = !1; if (T[a]) a = T[a], b = !0; else if ("transparent" == a) return { r: 0, g: 0, b: 0, a: 0, format: "name" }; var c; return (c = V.rgb.exec(a)) ? { r: c[1], g: c[2], b: c[3] } : (c = V.rgba.exec(a)) ? { r: c[1], g: c[2], b: c[3], a: c[4] } : (c = V.hsl.exec(a)) ? { h: c[1], s: c[2], l: c[3] } : (c = V.hsla.exec(a)) ? { h: c[1], s: c[2], l: c[3], a: c[4] } : (c = V.hsv.exec(a)) ? { h: c[1], s: c[2], v: c[3] } : (c = V.hsva.exec(a)) ? { h: c[1], s: c[2], v: c[3], a: c[4] } : (c = V.hex8.exec(a)) ? { r: C(c[1]), g: C(c[2]), b: C(c[3]), a: I(c[4]), format: b ? "name" : "hex8" } : (c = V.hex6.exec(a)) ? { r: C(c[1]), g: C(c[2]), b: C(c[3]), format: b ? "name" : "hex" } : (c = V.hex4.exec(a)) ? { r: C(c[1] + "" + c[1]), g: C(c[2] + "" + c[2]), b: C(c[3] + "" + c[3]), a: I(c[4] + "" + c[4]), format: b ? "name" : "hex8" } : (c = V.hex3.exec(a)) ? { r: C(c[1] + "" + c[1]), g: C(c[2] + "" + c[2]), b: C(c[3] + "" + c[3]), format: b ? "name" : "hex" } : !1 } function L(a) { var b, c; return a = a || { level: "AA", size: "small" }, b = (a.level || "AA").toUpperCase(), c = (a.size || "small").toLowerCase(), "AA" !== b && "AAA" !== b && (b = "AA"), "small" !== c && "large" !== c && (c = "small"), { level: b, size: c } } var M = /^\s+/, N = /\s+$/, O = 0, P = a.round, Q = a.min, R = a.max, S = a.random; b.prototype = { isDark: function () { return this.getBrightness() < 128 }, isLight: function () { return !this.isDark() }, isValid: function () { return this._ok }, getOriginalInput: function () { return this._originalInput }, getFormat: function () { return this._format }, getAlpha: function () { return this._a }, getBrightness: function () { var a = this.toRgb(); return (299 * a.r + 587 * a.g + 114 * a.b) / 1e3 }, getLuminance: function () { var b, c, d, e, f, g, h = this.toRgb(); return b = h.r / 255, c = h.g / 255, d = h.b / 255, e = .03928 >= b ? b / 12.92 : a.pow((b + .055) / 1.055, 2.4), f = .03928 >= c ? c / 12.92 : a.pow((c + .055) / 1.055, 2.4), g = .03928 >= d ? d / 12.92 : a.pow((d + .055) / 1.055, 2.4), .2126 * e + .7152 * f + .0722 * g }, setAlpha: function (a) { return this._a = z(a), this._roundA = P(100 * this._a) / 100, this }, toHsv: function () { var a = g(this._r, this._g, this._b); return { h: 360 * a.h, s: a.s, v: a.v, a: this._a } }, toHsvString: function () { var a = g(this._r, this._g, this._b), b = P(360 * a.h), c = P(100 * a.s), d = P(100 * a.v); return 1 == this._a ? "hsv(" + b + ", " + c + "%, " + d + "%)" : "hsva(" + b + ", " + c + "%, " + d + "%, " + this._roundA + ")" }, toHsl: function () { var a = e(this._r, this._g, this._b); return { h: 360 * a.h, s: a.s, l: a.l, a: this._a } }, toHslString: function () { var a = e(this._r, this._g, this._b), b = P(360 * a.h), c = P(100 * a.s), d = P(100 * a.l); return 1 == this._a ? "hsl(" + b + ", " + c + "%, " + d + "%)" : "hsla(" + b + ", " + c + "%, " + d + "%, " + this._roundA + ")" }, toHex: function (a) { return i(this._r, this._g, this._b, a) }, toHexString: function (a) { return "#" + this.toHex(a) }, toHex8: function (a) { return j(this._r, this._g, this._b, this._a, a) }, toHex8String: function (a) { return "#" + this.toHex8(a) }, toRgb: function () { return { r: P(this._r), g: P(this._g), b: P(this._b), a: this._a } }, toRgbString: function () { return 1 == this._a ? "rgb(" + P(this._r) + ", " + P(this._g) + ", " + P(this._b) + ")" : "rgba(" + P(this._r) + ", " + P(this._g) + ", " + P(this._b) + ", " + this._roundA + ")" }, toPercentageRgb: function () { return { r: P(100 * A(this._r, 255)) + "%", g: P(100 * A(this._g, 255)) + "%", b: P(100 * A(this._b, 255)) + "%", a: this._a } }, toPercentageRgbString: function () { return 1 == this._a ? "rgb(" + P(100 * A(this._r, 255)) + "%, " + P(100 * A(this._g, 255)) + "%, " + P(100 * A(this._b, 255)) + "%)" : "rgba(" + P(100 * A(this._r, 255)) + "%, " + P(100 * A(this._g, 255)) + "%, " + P(100 * A(this._b, 255)) + "%, " + this._roundA + ")" }, toName: function () { return 0 === this._a ? "transparent" : this._a < 1 ? !1 : U[i(this._r, this._g, this._b, !0)] || !1 }, toFilter: function (a) { var c = "#" + k(this._r, this._g, this._b, this._a), d = c, e = this._gradientType ? "GradientType = 1, " : ""; if (a) { var f = b(a); d = "#" + k(f._r, f._g, f._b, f._a) } return "progid:DXImageTransform.Microsoft.gradient(" + e + "startColorstr=" + c + ",endColorstr=" + d + ")" }, toString: function (a) { var b = !!a; a = a || this._format; var c = !1, d = this._a < 1 && this._a >= 0, e = !b && d && ("hex" === a || "hex6" === a || "hex3" === a || "hex4" === a || "hex8" === a || "name" === a); return e ? "name" === a && 0 === this._a ? this.toName() : this.toRgbString() : ("rgb" === a && (c = this.toRgbString()), "prgb" === a && (c = this.toPercentageRgbString()), ("hex" === a || "hex6" === a) && (c = this.toHexString()), "hex3" === a && (c = this.toHexString(!0)), "hex4" === a && (c = this.toHex8String(!0)), "hex8" === a && (c = this.toHex8String()), "name" === a && (c = this.toName()), "hsl" === a && (c = this.toHslString()), "hsv" === a && (c = this.toHsvString()), c || this.toHexString()) }, clone: function () { return b(this.toString()) }, _applyModification: function (a, b) { var c = a.apply(null, [this].concat([].slice.call(b))); return this._r = c._r, this._g = c._g, this._b = c._b, this.setAlpha(c._a), this }, lighten: function () { return this._applyModification(o, arguments) }, brighten: function () { return this._applyModification(p, arguments) }, darken: function () { return this._applyModification(q, arguments) }, desaturate: function () { return this._applyModification(l, arguments) }, saturate: function () { return this._applyModification(m, arguments) }, greyscale: function () { return this._applyModification(n, arguments) }, spin: function () { return this._applyModification(r, arguments) }, _applyCombination: function (a, b) { return a.apply(null, [this].concat([].slice.call(b))) }, analogous: function () { return this._applyCombination(w, arguments) }, complement: function () { return this._applyCombination(s, arguments) }, monochromatic: function () { return this._applyCombination(x, arguments) }, splitcomplement: function () { return this._applyCombination(v, arguments) }, triad: function () { return this._applyCombination(t, arguments) }, tetrad: function () { return this._applyCombination(u, arguments) } }, b.fromRatio = function (a, c) { if ("object" == typeof a) { var d = {}; for (var e in a) a.hasOwnProperty(e) && ("a" === e ? d[e] = a[e] : d[e] = G(a[e])); a = d } return b(a, c) }, b.equals = function (a, c) { return a && c ? b(a).toRgbString() == b(c).toRgbString() : !1 }, b.random = function () { return b.fromRatio({ r: S(), g: S(), b: S() }) }, b.mix = function (a, c, d) { d = 0 === d ? 0 : d || 50; var e = b(a).toRgb(), f = b(c).toRgb(), g = d / 100, h = { r: (f.r - e.r) * g + e.r, g: (f.g - e.g) * g + e.g, b: (f.b - e.b) * g + e.b, a: (f.a - e.a) * g + e.a }; return b(h) }, b.readability = function (c, d) { var e = b(c), f = b(d); return (a.max(e.getLuminance(), f.getLuminance()) + .05) / (a.min(e.getLuminance(), f.getLuminance()) + .05) }, b.isReadable = function (a, c, d) { var e, f, g = b.readability(a, c); switch (f = !1, e = L(d), e.level + e.size) { case "AAsmall": case "AAAlarge": f = g >= 4.5; break; case "AAlarge": f = g >= 3; break; case "AAAsmall": f = g >= 7 }return f }, b.mostReadable = function (a, c, d) { var e, f, g, h, i = null, j = 0; d = d || {}, f = d.includeFallbackColors, g = d.level, h = d.size; for (var k = 0; k < c.length; k++)e = b.readability(a, c[k]), e > j && (j = e, i = b(c[k])); return b.isReadable(a, i, { level: g, size: h }) || !f ? i : (d.includeFallbackColors = !1, b.mostReadable(a, ["#fff", "#000"], d)) }; var T = b.names = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "0ff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000", blanchedalmond: "ffebcd", blue: "00f", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", burntsienna: "ea7e5d", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "0ff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "f0f", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "789", lightslategrey: "789", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "0f0", limegreen: "32cd32", linen: "faf0e6", magenta: "f0f", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370db", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "db7093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", rebeccapurple: "663399", red: "f00", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "fff", whitesmoke: "f5f5f5", yellow: "ff0", yellowgreen: "9acd32" }, U = b.hexNames = y(T), V = function () { var a = "[-\\+]?\\d+%?", b = "[-\\+]?\\d*\\.\\d+%?", c = "(?:" + b + ")|(?:" + a + ")", d = "[\\s|\\(]+(" + c + ")[,|\\s]+(" + c + ")[,|\\s]+(" + c + ")\\s*\\)?", e = "[\\s|\\(]+(" + c + ")[,|\\s]+(" + c + ")[,|\\s]+(" + c + ")[,|\\s]+(" + c + ")\\s*\\)?"; return { CSS_UNIT: new RegExp(c), rgb: new RegExp("rgb" + d), rgba: new RegExp("rgba" + e), hsl: new RegExp("hsl" + d), hsla: new RegExp("hsla" + e), hsv: new RegExp("hsv" + d), hsva: new RegExp("hsva" + e), hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ } }(); "undefined" != typeof module && module.exports ? module.exports = b : "function" == typeof define && define.amd ? define(function () { return b }) : window.tinycolor = b }(Math); +}(jQuery)); diff --git a/web/src/api/datamanagement/index.ts b/web/src/api/datamanagement/index.ts index bc5e9ab..e718d7b 100644 --- a/web/src/api/datamanagement/index.ts +++ b/web/src/api/datamanagement/index.ts @@ -117,4 +117,29 @@ export function uploadToBackup(params:any) { method: 'post', params:params, }); +} +//新增试验数据管理文件夹 +export function addTsFile(params:any) { + return request({ + url: '/experimentalData/ts-files/addTsFile', + method: 'post', + data:params, + }); +} + +//根据父项编码查询数据字典项数据 +export function list(params:any){ + return request ({ + url:'/system/dictionaryItems/list', + method:'post', + params:params + }) +} +//查询实验数据管理文件夹 +export function listTsFiles(params:any){ + return request ({ + url:'/experimentalData/ts-files/listTsFiles', + method:'get', + params:params + }) } \ No newline at end of file diff --git a/web/src/assets/fileimg/mp3.png b/web/src/assets/fileimg/mp3.png new file mode 100644 index 0000000000000000000000000000000000000000..bca994971a0c0443c7952e3b4ec967d5ed96d414 GIT binary patch literal 574 zcmV-E0>S->P)Px$_(?=TR5(wil)q~fQ4q&Jvq=;M(Jp~_pryY+xIKcXpoKOnh^Va=cW;A@CRT!{ zL5!thxl8;9v`As^2?iwYI}wuDS{Mn@LKGB3ay#|q*p!RF0cn!@FO|s@+CGpk)gZb zm5u6}0-d`2lvG`wEolYe1n|s{>>IfT2~7y<1oK zkqqz|_|^+>5f~mw$gO((0=@v>HwCmtF9A;xs(vVbJgP?}VaC~~YhYiEg~szxcvOgF zJZ*}=^R9u7rhEWmXPdWy?oX5#&Nkw4PU^<|>+D^?;daKJ4fM!JD6bpMah^ON!gM~A z3+qPD8r_L<2VuMwblohE>RGLE(@lxMr+g&4|5&rdu}04TWniR(<*-pF literal 0 HcmV?d00001 diff --git a/web/src/assets/fileimg/mp4.png b/web/src/assets/fileimg/mp4.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3c61058b55d1c6158c3495fc42d892747ce024 GIT binary patch literal 316 zcmV-C0mJ@@P)Px#_DMuRR5(x7)Ui$iK@fo9f3ENmu*UL8XsJxBsHo|Df=iAC?L~XS9ip|N!rEPl{RpmK)rK<*mwPO4fDw9GN`$W%`V7y(graH&URxd4vq)iBjQ zxLtMXb@}V2zM{1Lyzt&l@qIRhV4^(&SD*4>nPB8;`{|Wu3NsG>Kl}iVQh*g|&e(AP O0000Px$*GWV{R5(wql}{){K^(`wvu}7}_dso%8<&@tQu{WGjpDFTO5%tU7jcuM( zZsg$41vea&BE`!86{}rE_CTmbqFl*n)NZ@`-q;>~^?FS+^O?{5=KbaoB*jEwrPY@8 zUI4;W!cYJ(72t2EVDPmZA5GP&QwWH{7*hc7C(CdWgAa@iiGUvzH)PIT z#(r8czR#g)aA;29@aItI!6eWL@8pCKxY6DLlRypL$?+I)skRP{t1GegMti4OV4~qd zSvi^xcH@9ahDB|y$gB1u-DX4N$dA2&#QgIdMh)+Gc5%D8g_p}qo8p@94HE14pUtc*@}X6tJT=vWw7N`!1zir8vBb{PH}x*TwML@1^bys f!X#P!ufKpVmoVKDi94F900000NkvXXu0mjfJq!Ag literal 0 HcmV?d00001 diff --git a/web/src/assets/fileimg/ppt.png b/web/src/assets/fileimg/ppt.png new file mode 100644 index 0000000000000000000000000000000000000000..577b69c27e194769176280e19580c13685f5e3c1 GIT binary patch literal 312 zcmV-80muG{P)Px#@<~KNR5(x7)jw;(Ko|z_=Sc~)!>uKuV<{cFx(d!>{w(dcQ0P~wQ$K@~(cMlR z1UC`E-DHx&b(7?kq(mHSQ4tlM-21@2M*z^C^#)---IrdJp&Ca6etT9RLZ>uz zQb@{#+O?$)EH@essvuPx#?MXyIR5(wqlsgUqQ51&1sa1ABOCw0i8wlJ3Yn3DUn7}iz0CE*Q;L_1p zpD(4s^`!$`nq4ngjY!F>@b$lX5D{zki{yjqh z>@wGgxkGWOp6xbbKjIpV5P85QbEz-;(wxc+Hc(h`_zRb{O%<1ay!`+G002ovPDHLk FV1jfge;@z= literal 0 HcmV?d00001 diff --git a/web/src/assets/fileimg/wenjianjia.png b/web/src/assets/fileimg/wenjianjia.png new file mode 100644 index 0000000000000000000000000000000000000000..ae953c24f96084bae2370377d170f029904aa1a4 GIT binary patch literal 298 zcmV+_0oDGAP)Px#M7st> z;kyeA49`z8F#5iOy6~9Fe+Cv7@(hFN`u&@M(fTfufjr6#46NcvhW=$>_A!UfC-Q wY%H?GB{&?ae*eD5==8*pHU%t2E<@7{0K!>v6$boD-~a#s07*qoM6N<$f+G}p{r~^~ literal 0 HcmV?d00001 diff --git a/web/src/assets/fileimg/word.png b/web/src/assets/fileimg/word.png new file mode 100644 index 0000000000000000000000000000000000000000..62e86ec66d032ce042fec2ff7144b36b7347e5dd GIT binary patch literal 446 zcmV;v0YUzWP)Px$cu7P-R5(v#WME)m5Lt0oje+s+5e5bZQ4k*=P~~M~D9{w15U$8uh)o?M*uYh{ z_A~rva3EwDNFHS1F;97hCHFox#wznSpz9&qz(4=~Gt9g9xhP$gzaQC9vJC_o^6~e- ze{*ktNG;YDo(D6OA_GB&JpcaZ&$R3B!dr~R*MayX8wk>Lz)g-pTYw$z)7zhZ{pz{? z&SRE^?gi3`*+}2C8nj$8bA9i8KRY zwt`%$FUZcY$5jq2wCDL(hRDOu7|t5@b5pvdPW8Y o1#(>YpMl{46C*?5>oBzo00&0Q70Al`^#A|>07*qoM6N<$g33q2;{X5v literal 0 HcmV?d00001 diff --git a/web/src/assets/fileimg/zip.png b/web/src/assets/fileimg/zip.png new file mode 100644 index 0000000000000000000000000000000000000000..85e313aaf8b392f4a5ea174ca7f42ff3420de23e GIT binary patch literal 419 zcmV;U0bKrxP)Px$T}ebiR5(v#3_bT>^#Av7*$h~K=I^V5?%y}-Axm9mGkUO>!|fq9^?w=uO=Ao_ z{(T<<1A`+r1>%37GfaG)f+E!@)WL9_O&6PTkk|pn(BnTYFfjbrr;dS)mqwz2F$dq@ zX8QmC2evSj`ul{f^;3ZwvRofe&Hc-)24AtM|Ift4!T2*F_5#Cy2CR|766(*usQd** z@Bc?!41bnw#udw#a2m*@p~1i$9KgUR_#4&0kE{%TS8rhWcjE>&LkS!B|7tFZMn>Jq zgUmpxd6`jKnt|EM1Z$-HJ$R1c|I??~!?5YJ&5i$z46N8>h5s(j0|~C*ih_RAn}{wA;&-5$z}u^SbyGn=YIwUH*A4I zMi}m9EIek($;-){hRr~w9}FS}UzoL!<({!KJUzkt_bxW|0wRBB0RZ|l>S8d-xU2vG N002ovPDHLkV1gbB!`A=+ literal 0 HcmV?d00001 diff --git a/web/src/assets/images/addNew.png b/web/src/assets/images/addNew.png new file mode 100644 index 0000000000000000000000000000000000000000..7464f8540ef7914f6441db11126e89d35b758a27 GIT binary patch literal 617 zcmV-v0+#)WP)Px%BS}O-R5(wSRJ(2yK@>e_<0X6p5*2hvP*^U2h7{Nm-W4SQ!4E(KB6#ft2}gq1 zYlxtM9{`cifxJeFDF_8nL@q$0g9ZfOKr+r;cGg}qj@O7xHFNKsGxu@M5E;vB{4SC+ z$AyvyaC#W>p2D8U?&qj>u)Fsf_Zs}L|5zYbvmQuo1fR5n+%-F949E|6z6y9G2@rHa z^gwU`WGOw4#*D!v<7eFwWavwj5$hh^<)h6Cc|jxB3h;wgnAd00000NkvXXu0mjf D5iSnJ literal 0 HcmV?d00001 diff --git a/web/src/assets/project/chong.png b/web/src/assets/project/chong.png new file mode 100644 index 0000000000000000000000000000000000000000..fdeb02097413232da41c88d6f9ec7af91d630792 GIT binary patch literal 258 zcmV+d0sa1oP)Px#yh%hsR5(xFlRXZCKoCaXgjjkJuVCRCYc1`CcmfXq9KaJ8u(#COxE5Z)i&z>m zM$8f;NQm3H?aue+?;FAMNt=F>>!48PE+!Cm$55{CnpS|>>K}6_*tZGwt_ag)pkMRFFCV0de`SobRx{L~<(uRTijapa}rRRrCU6njpkB zl-f+1S}?gPN@^oX{s!Py_3IG5*Vty~PDc6$@V2t|F?G502mSDr5o}x{?EnA(07*qo IM6N<$f@!L0EdT%j literal 0 HcmV?d00001 diff --git a/web/src/assets/project/gai.png b/web/src/assets/project/gai.png new file mode 100644 index 0000000000000000000000000000000000000000..f92e0e0172a189412dad502fc218d1651e935e70 GIT binary patch literal 333 zcmV-T0kZyyP)Px$2T4RhR5(xFk}*!hKoCXWI5`AmN*Xu-k?^{prGpkFC=Caog(J{}24bg$h?W8& zVUXYe&?7_%6+QMxixL!L#j+`xYPIwK+u6~#C{~Ekl^6gW7L^z);PSR-lX;1SBMk%N zLm5{K&49I8lh{c678L+4)*Bhy>A=z|fbY3j%8k{#o;}U9<}b;JegoWzTnX6X#%tRx zUa$N1?E58v8|e^Zr*a?ODJ~RnRtETqYL>yI0GPghP}Bb{`wxI9*15z(x@$*&+Ci9T z%fz0~Nt5OM1Zj3~iI(|f2_KdQW%JtgL@R-KY~X({0H%5O6V&>S#Bm7_jkTHQbPe_^ fCV2r)$+-UlUhIk>kKN!<00000NkvXXu0mjfZ&QvU literal 0 HcmV?d00001 diff --git a/web/src/components/file/ZUpload.vue b/web/src/components/file/ZUpload.vue index 2ae4e77..01579d4 100644 --- a/web/src/components/file/ZUpload.vue +++ b/web/src/components/file/ZUpload.vue @@ -1,18 +1,17 @@
" + text + "" + text + "" + text + "" + text + "" + text + "