+function consLog(r){configs.log&&$.writeln(r)}function listMatchNames(r){for(var e=1;e<=r.numProperties;e++){var o=r.property(e);consLog(o.matchName+"("+o.name+")")}}function explodeLayer(r){consLog("==============\n==============");var e=r.property("Contents"),o=[];if(!(e.numProperties>configs.itemAmountWarning)||confirm("You have more than "+configs.itemAmountWarning+" elements. Execution time might be long, are you sure you want to continue ?")){_progressBar.make(1,e.numProperties,1),_progressBar.showBar();for(a=e.numProperties;a>0;a--){var t=e.property(a);if(_progressBar.setCurrent(e.numProperties-a),t.enabled){var p=emptyDuplicateLayer(r);p.name=r.name+" - "+t.name,p.enabled=!1,o.push(p),p.property("Contents").canAddProperty(t.matchName)&©Properties(t,p.property("Contents").addProperty(t.matchName),"")}}_progressBar.hideBar();for(var a=0;a<o.length;a++)o[a].enabled=!0}}function explode(){if(app.project.activeItem.selectedLayers.length>1)alert("Select a single shape layer");else{var r=app.project.activeItem.selectedLayers[0];void 0!=r&&"ADBE Vector Layer"===r.matchName?explodeLayer(r):alert("Select a shape layer")}}function emptyDuplicateLayer(r){var e=r.containingComp.layers.addShape();return copyProperty("anchorPoint",r,e),copyProperty("position",r,e),copyProperty("scale",r,e),copyProperty("rotation",r,e),copyProperty("opacity",r,e),e}function copyProperties(r,e,o){for(var t=1;t<=r.numProperties;t++){var p=r.property(t);if(!p.enabled||!e.canAddProperty(p.matchName))return;consLog(o+p.matchName);var a=e.addProperty(p.matchName);switch(p.matchName){case"ADBE Vector Filter - Merge":copyProperty("mode",p,a);break;case"ADBE Vector Materials Group":consLog(o+"-- skipped");break;case"ADBE Vector Graphic - Stroke":copyPropertyStroke(p,a);break;case"ADBE Vector Graphic - Fill":copyPropertyFill(p,a);break;case"ADBE Vector Transform Group":copyPropertyTransform(p,a);break;case"ADBE Vector Shape - Rect":copyPropertyRect(p,a);break;case"ADBE Vector Shape - Ellipse":copyPropertyEllipse(p,a);break;case"ADBE Vector Shape - Star":copyPropertyStar(p,a);break;case"ADBE Root Vectors Group":case"ADBE Vectors Group":case"ADBE Vector Group":copyProperties(p,a,o+=" ");break;case"ADBE Vector Shape - Group":copyPropertyShape(p,a);break;case"ADBE Vector Blend Mode":a.setValue(p.value)}}}function copyProperty(r,e,o){o[r].setValue(e[r].value)}function copyPropertyShape(r,e){e.property("ADBE Vector Shape").setValue(r.property("ADBE Vector Shape").value)}function copyPropertyStroke(r,e){copyProperty("composite",r,e),copyProperty("color",r,e),copyProperty("strokeWidth",r,e),copyProperty("lineCap",r,e),copyProperty("lineJoin",r,e),copyProperty("miterLimit",r,e)}function copyPropertyFill(r,e){copyProperty("composite",r,e),copyProperty("fillRule",r,e),copyProperty("color",r,e)}function copyPropertyTransform(r,e){copyProperty("anchorPoint",r,e),copyProperty("position",r,e),copyProperty("scale",r,e),copyProperty("skew",r,e),copyProperty("skewAxis",r,e),copyProperty("rotation",r,e),copyProperty("opacity",r,e)}function copyPropertyRect(r,e){copyProperty("shapeDirection",r,e),copyProperty("size",r,e),copyProperty("position",r,e),copyProperty("roundness",r,e)}function copyPropertyEllipse(r,e){copyProperty("shapeDirection",r,e),copyProperty("size",r,e),copyProperty("position",r,e)}function copyPropertyStar(r,e){copyProperty("shapeDirection",r,e),copyProperty("type",r,e),copyProperty("points",r,e),copyProperty("position",r,e),copyProperty("rotation",r,e),copyProperty("innerRadius",r,e),copyProperty("outerRadius",r,e),copyProperty("innerRoundness",r,e),copyProperty("outerRoundness",r,e)}function createUI(r){if(r instanceof Panel);else{var e=new Window("palette",configs.title,void 0,{resizeable:!0});e.show()}var o=e.add("button",[10,10,100,30],"Explode layer");return e.text=configs.title,e.bounds.width=120,e.bounds.height=40,o.onClick=function(){var r=(new Date).getTime();explode();var e=(new Date).getTime()-r;consLog("Execution time : "+Math.floor(e/1e3)+"s "+e%1e3+"ms")},e}var configs={title:"Explode layer tool",log:!0,itemAmountWarning:50};_progressBar=new Window("palette",configs.title,void 0,{resizeable:!1,borderless:"not quite true"}),_progressBar.preferredSize=[420,40],_progressBar.bar=_progressBar.add("progressbar",void 0,0,100),_progressBar.bar.value=0,_progressBar.bar.preferredSize.width=400,_progressBar.bar.show(),_progressBar.barInfos=_progressBar.add("statictext",void 0,"Loading, please wait",{justify:"center"}),_progressBar.barInfos.preferredSize=[400,17],_progressBar.make=function(r,e,o){this.barProps={min:r,max:e,current:o},this.barProps.total=this.barProps.max-this.barProps.min+1,this.barProps.step=this.barProps.current-this.barProps.min+1},_progressBar.updateBar=function(){this.bar.value=Math.round(100*this.barProps.step/this.barProps.max),consLog("Processing element "+(this.barProps.step+1)+" on "+this.barProps.total),this.barInfos.text="Processing element "+(this.barProps.step+1)+" on "+this.barProps.total},_progressBar.showBar=function(){this.show()},_progressBar.hideBar=function(){this.hide()},_progressBar.setCurrent=function(r,e){this.barProps.current=r,this.barProps.step=this.barProps.current-this.barProps.min+1,this.updateBar(),this.update()};var _panel=createUI(this);
0 commit comments