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 0000000..bca9949 Binary files /dev/null and b/web/src/assets/fileimg/mp3.png differ diff --git a/web/src/assets/fileimg/mp4.png b/web/src/assets/fileimg/mp4.png new file mode 100644 index 0000000..4a3c610 Binary files /dev/null and b/web/src/assets/fileimg/mp4.png differ diff --git a/web/src/assets/fileimg/pdf.png b/web/src/assets/fileimg/pdf.png new file mode 100644 index 0000000..487e4bd Binary files /dev/null and b/web/src/assets/fileimg/pdf.png differ diff --git a/web/src/assets/fileimg/ppt.png b/web/src/assets/fileimg/ppt.png new file mode 100644 index 0000000..577b69c Binary files /dev/null and b/web/src/assets/fileimg/ppt.png differ diff --git a/web/src/assets/fileimg/text_line.png b/web/src/assets/fileimg/text_line.png new file mode 100644 index 0000000..50b61e1 Binary files /dev/null and b/web/src/assets/fileimg/text_line.png differ diff --git a/web/src/assets/fileimg/wenjianjia.png b/web/src/assets/fileimg/wenjianjia.png new file mode 100644 index 0000000..ae953c2 Binary files /dev/null and b/web/src/assets/fileimg/wenjianjia.png differ diff --git a/web/src/assets/fileimg/word.png b/web/src/assets/fileimg/word.png new file mode 100644 index 0000000..62e86ec Binary files /dev/null and b/web/src/assets/fileimg/word.png differ diff --git a/web/src/assets/fileimg/zip.png b/web/src/assets/fileimg/zip.png new file mode 100644 index 0000000..85e313a Binary files /dev/null and b/web/src/assets/fileimg/zip.png differ diff --git a/web/src/assets/images/addNew.png b/web/src/assets/images/addNew.png new file mode 100644 index 0000000..7464f85 Binary files /dev/null and b/web/src/assets/images/addNew.png differ diff --git a/web/src/assets/project/chong.png b/web/src/assets/project/chong.png new file mode 100644 index 0000000..fdeb020 Binary files /dev/null and b/web/src/assets/project/chong.png differ diff --git a/web/src/assets/project/gai.png b/web/src/assets/project/gai.png new file mode 100644 index 0000000..f92e0e0 Binary files /dev/null and b/web/src/assets/project/gai.png differ 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 + "