Skip to content

Commit

Permalink
Build production files
Browse files Browse the repository at this point in the history
  • Loading branch information
Eliepse committed Sep 17, 2017
1 parent 01ee256 commit 32bdd0c
Show file tree
Hide file tree
Showing 2 changed files with 145 additions and 53 deletions.
196 changes: 144 additions & 52 deletions dist/explode_shape_layer.jsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
var configs = {
title: 'Explode layer tool',
debug : false,
log : true,
itemAmountWarning : 50,
dryRun : false,
};

function consLog(text) {
function cLog(text) {
if (configs.log)
$.writeln(text);
}

function cDebug(text) {
if (configs.debug)
$.writeln(text);
}

function listMatchNames(object) {

for(var i=1; i <= object.numProperties; i++) {
Expand All @@ -20,57 +27,121 @@ function listMatchNames(object) {

}

_progressBar = new Window('palette', configs.title, undefined, {
resizeable : false,
borderless : 'not quite true',
});

_progressBar.preferredSize = [420, 40];
_progressBar.bar = _progressBar.add("progressbar", undefined, 0, 100);
_progressBar.bar.value = 0;
_progressBar.bar.preferredSize.width = 400;
_progressBar.bar.show()

_progressBar.barInfos = _progressBar.add("statictext", undefined, 'Loading, please wait', {
justify: 'center'
});
_progressBar.barInfos.preferredSize = [400, 17];

_progressBar.make = function (min, max, current) {
this.barProps = {
min : min,
max : max,
current : current,
function ExecutionTime() {

var startTime;
var endTime;
var execTime;

this.constructor = function () {}

this.start = function () {
startTime = new Date().getTime();
}

this.stop = function () {
endTime = new Date().getTime()
execTime = endTime - startTime;
}

this.time = function () {
return 'Execution time : ' + Math.floor(execTime / 1000) + 's ' + (execTime % 1000) + 'ms';
}
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(( (this.barProps.step) * 100) / 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(); }
function ProgressBar(min, max, current) {

var _window,
_progressBar,
_infos,
_real,
_cursor,
_isVisible;

this.testInfos = 'Processing element :current on :max';

this.constructor = function(min, max, current) {

_progressBar.hideBar = function () { this.hide(); }
_this = this;
_isVisible = false;

_real = { min : min, max : max, current : current };
_cursor = { min : 0, max : 100, current : 0 };

_cursor.max = (_real.max - _real.min) + 1;

// Instanciate the window
_window = new Window('palette', configs.title, undefined, {
resizeable : false,
borderless : 'not quite true',
});
_window.preferredSize = [420, 40];

// Instanciate the progress bar
_progressBar = _window.add("progressbar", undefined, _cursor.min, _cursor.max);
_progressBar.preferredSize.width = 400;
_progressBar.show();

// Instanciate text infos
_infos = _window.add("statictext", undefined, 'Loading, please wait', {
justify: 'center'
});
_infos.preferredSize = [400, 17];

this.update(current);


return this;

}

this.start = function () {
_isVisible = true;
this.update(_real.current)
_window.show();
}

this.end = function () {
_window.hide();
}

this.update = function(step) {

_real.current = step;
_cursor.current = (_real.current + 1) - _real.min;

var infos = this.testInfos
.replace(':current', _cursor.current)
.replace(':max', _cursor.max);

_progressBar.value = _cursor.current;
_infos.text = infos;

cDebug(infos);

updateGraphics();
}

function updateGraphics() {
if(!_isVisible) return;
_window.update();
}

return this.constructor(min, max, current);

_progressBar.setCurrent = function (current, text) {
this.barProps.current = current;
this.barProps.step = (this.barProps.current - this.barProps.min) + 1;
this.updateBar();
this.update();
}

// this.bar.value = Math.round(( (this.barProps.step) * 100) / this.barProps.max)

/*
* @requires utils.jsx
* @requires progressBar.jsx
*/

function explodeLayer(layer) {

consLog('==============\n==============');
cLog('Exploding layer : ' + layer.name);

// Get the elements of the original shape layer
var contents = layer.property("Contents");
Expand All @@ -87,15 +158,15 @@ function explodeLayer(layer) {

}

_progressBar.make(1, contents.numProperties, 1);
_progressBar.showBar();
var pb = new ProgressBar(1, contents.numProperties, 1);
pb.start();

// Browse through contents array
for(var i = contents.numProperties; i > 0; i--) {

// Get the original property
var _prop = contents.property(i);
_progressBar.setCurrent(contents.numProperties - i)
pb.update(contents.numProperties - i)

// Skip the property if not enabled
if (!_prop.enabled) continue;
Expand All @@ -105,6 +176,7 @@ function explodeLayer(layer) {

new_layer.name = layer.name + ' - ' + _prop.name;
new_layer.enabled = false;
new_layer.shy = true;

layers.push(new_layer);

Expand All @@ -116,12 +188,16 @@ function explodeLayer(layer) {

}

_progressBar.hideBar();
pb.end();

for(var i = 0; i < layers.length; i++) {
layers[i].enabled = true;
layers[i].shy = false;
if(configs.dryRun) layers[i].remove();
}

return layers;

}

function explode() {
Expand All @@ -140,7 +216,29 @@ function explode() {
return;
}

explodeLayer(selectedLayer);
cLog('==================')

cLog('Configs :')
for(config in configs) {
if(configs.hasOwnProperty(config))
cLog(' ' + config + ' : ' + configs[config])
}

cLog('')

var execTime = new ExecutionTime();
execTime.start();

var hideShyLayers_originalState = selectedLayer.containingComp.hideShyLayers;
selectedLayer.containingComp.hideShyLayers = true;

var layers = explodeLayer(selectedLayer);

selectedLayer.moveToBeginning()
selectedLayer.containingComp.hideShyLayers = hideShyLayers_originalState;

execTime.stop();
cLog(execTime.time());

}

Expand All @@ -166,7 +264,7 @@ function copyProperties(origin, target, prefix) {

if(!_prop.enabled || !target.canAddProperty(_prop.matchName)) return;

consLog(prefix + _prop.matchName);
cDebug(prefix + _prop.matchName);

var prop = target.addProperty(_prop.matchName);

Expand All @@ -177,7 +275,7 @@ function copyProperties(origin, target, prefix) {
break;

case 'ADBE Vector Materials Group':
consLog(prefix + '-- skipped');
cDebug(prefix + '-- skipped');
break;

case 'ADBE Vector Graphic - Stroke':
Expand Down Expand Up @@ -306,7 +404,7 @@ function createUI(that) {

if(that instanceof Panel) {

var myPanel = that;
var _panel = that;

} else {

Expand All @@ -319,20 +417,14 @@ function createUI(that) {

var btn = _panel.add("button", [10, 10, 100, 30], "Explode layer");

_panel.text = configs.title;
// _panel.text = configs.title;
_panel.bounds.width = 120;
_panel.bounds.height = 40;

btn.onClick = function() {

var startTime = new Date().getTime();

explode();

var execTime = new Date().getTime() - startTime;

consLog('Execution time : ' + Math.floor(execTime / 1000) + 's ' + (execTime % 1000) + 'ms');

}

return _panel;
Expand Down
2 changes: 1 addition & 1 deletion dist/explode_shape_layer.min.jsx
Original file line number Diff line number Diff line change
@@ -1 +1 @@
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)&&copyProperties(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);
function cLog(e){configs.log&&$.writeln(e)}function cDebug(e){configs.debug&&$.writeln(e)}function listMatchNames(e){for(var r=1;r<=e.numProperties;r++){var o=e.property(r);consLog(o.matchName+"("+o.name+")")}}function ExecutionTime(){var e,r,o;this.constructor=function(){},this.start=function(){e=(new Date).getTime()},this.stop=function(){r=(new Date).getTime(),o=r-e},this.time=function(){return"Execution time : "+Math.floor(o/1e3)+"s "+o%1e3+"ms"}}function ProgressBar(e,r,o){function t(){s&&n.update()}var n,p,c,i,a,s;return this.testInfos="Processing element :current on :max",this.constructor=function(e,r,o){return _this=this,s=!1,i={min:e,max:r,current:o},a={min:0,max:100,current:0},a.max=i.max-i.min+1,n=new Window("palette",configs.title,void 0,{resizeable:!1,borderless:"not quite true"}),n.preferredSize=[420,40],p=n.add("progressbar",void 0,a.min,a.max),p.preferredSize.width=400,p.show(),c=n.add("statictext",void 0,"Loading, please wait",{justify:"center"}),c.preferredSize=[400,17],this.update(o),this},this.start=function(){s=!0,this.update(i.current),n.show()},this.end=function(){n.hide()},this.update=function(e){i.current=e,a.current=i.current+1-i.min;var r=this.testInfos.replace(":current",a.current).replace(":max",a.max);p.value=a.current,c.text=r,cDebug(r),t()},this.constructor(e,r,o)}function explodeLayer(e){cLog("Exploding layer : "+e.name);var r=e.property("Contents"),o=[];if(!(r.numProperties>configs.itemAmountWarning)||confirm("You have more than "+configs.itemAmountWarning+" elements. Execution time might be long, are you sure you want to continue ?")){var t=new ProgressBar(1,r.numProperties,1);t.start();for(c=r.numProperties;c>0;c--){var n=r.property(c);if(t.update(r.numProperties-c),n.enabled){var p=emptyDuplicateLayer(e);p.name=e.name+" - "+n.name,p.enabled=!1,p.shy=!0,o.push(p),p.property("Contents").canAddProperty(n.matchName)&&copyProperties(n,p.property("Contents").addProperty(n.matchName),"")}}t.end();for(var c=0;c<o.length;c++)o[c].enabled=!0,o[c].shy=!1,configs.dryRun&&o[c].remove();return o}}function explode(){if(app.project.activeItem.selectedLayers.length>1)alert("Select a single shape layer");else{var e=app.project.activeItem.selectedLayers[0];if(void 0!=e&&"ADBE Vector Layer"===e.matchName){cLog("=================="),cLog("Configs :");for(config in configs)configs.hasOwnProperty(config)&&cLog(" "+config+" : "+configs[config]);cLog("");var r=new ExecutionTime;r.start();var o=e.containingComp.hideShyLayers;e.containingComp.hideShyLayers=!0;explodeLayer(e);e.moveToBeginning(),e.containingComp.hideShyLayers=o,r.stop(),cLog(r.time())}else alert("Select a shape layer")}}function emptyDuplicateLayer(e){var r=e.containingComp.layers.addShape();return copyProperty("anchorPoint",e,r),copyProperty("position",e,r),copyProperty("scale",e,r),copyProperty("rotation",e,r),copyProperty("opacity",e,r),r}function copyProperties(e,r,o){for(var t=1;t<=e.numProperties;t++){var n=e.property(t);if(!n.enabled||!r.canAddProperty(n.matchName))return;cDebug(o+n.matchName);var p=r.addProperty(n.matchName);switch(n.matchName){case"ADBE Vector Filter - Merge":copyProperty("mode",n,p);break;case"ADBE Vector Materials Group":cDebug(o+"-- skipped");break;case"ADBE Vector Graphic - Stroke":copyPropertyStroke(n,p);break;case"ADBE Vector Graphic - Fill":copyPropertyFill(n,p);break;case"ADBE Vector Transform Group":copyPropertyTransform(n,p);break;case"ADBE Vector Shape - Rect":copyPropertyRect(n,p);break;case"ADBE Vector Shape - Ellipse":copyPropertyEllipse(n,p);break;case"ADBE Vector Shape - Star":copyPropertyStar(n,p);break;case"ADBE Root Vectors Group":case"ADBE Vectors Group":case"ADBE Vector Group":copyProperties(n,p,o+=" ");break;case"ADBE Vector Shape - Group":copyPropertyShape(n,p);break;case"ADBE Vector Blend Mode":p.setValue(n.value)}}}function copyProperty(e,r,o){o[e].setValue(r[e].value)}function copyPropertyShape(e,r){r.property("ADBE Vector Shape").setValue(e.property("ADBE Vector Shape").value)}function copyPropertyStroke(e,r){copyProperty("composite",e,r),copyProperty("color",e,r),copyProperty("strokeWidth",e,r),copyProperty("lineCap",e,r),copyProperty("lineJoin",e,r),copyProperty("miterLimit",e,r)}function copyPropertyFill(e,r){copyProperty("composite",e,r),copyProperty("fillRule",e,r),copyProperty("color",e,r)}function copyPropertyTransform(e,r){copyProperty("anchorPoint",e,r),copyProperty("position",e,r),copyProperty("scale",e,r),copyProperty("skew",e,r),copyProperty("skewAxis",e,r),copyProperty("rotation",e,r),copyProperty("opacity",e,r)}function copyPropertyRect(e,r){copyProperty("shapeDirection",e,r),copyProperty("size",e,r),copyProperty("position",e,r),copyProperty("roundness",e,r)}function copyPropertyEllipse(e,r){copyProperty("shapeDirection",e,r),copyProperty("size",e,r),copyProperty("position",e,r)}function copyPropertyStar(e,r){copyProperty("shapeDirection",e,r),copyProperty("type",e,r),copyProperty("points",e,r),copyProperty("position",e,r),copyProperty("rotation",e,r),copyProperty("innerRadius",e,r),copyProperty("outerRadius",e,r),copyProperty("innerRoundness",e,r),copyProperty("outerRoundness",e,r)}function createUI(e){if(e instanceof Panel)var r=e;else(r=new Window("palette",configs.title,void 0,{resizeable:!0})).show();var o=r.add("button",[10,10,100,30],"Explode layer");return r.bounds.width=120,r.bounds.height=40,o.onClick=function(){explode()},r}var configs={title:"Explode layer tool",debug:!1,log:!0,itemAmountWarning:50,dryRun:!1},_panel=createUI(this);

0 comments on commit 32bdd0c

Please sign in to comment.