Files
AFX_yTools/yScripts/y_CPOffset.jsx
T

174 lines
4.2 KiB
React
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "../yScripts/y_JSExtensions.jsx";
function YCPOffset()
{
this.info =
{
name : "YCornerPinOffset",
version : 0.12,
stage : "development",
description : "Offsets each corner of a CornerPin Effect.",
url : "yorchnet.com"
};
this.appearence =
{
buttonHeight : 30,
buttonWidth : 126
};
this.resources =
{
icon : new File('yNet.png'),
};
this.init = function init()
{
this.btnLauyout =
"button\
{\
preferredSize: ['" + this.appearence.buttonWidth + "','" + this.appearence.buttonHeight + "'],\
text:'" + this.info.name + "',\
helpTip:'" + this.info.description + "'\
}";
this. res =
"window\
{\
type:'palette',\
text:'" + this.info.name + ' ' + this.info.ver + ' ' + this.info.stage + "',\
info: Group \
{\
alignment:['center','bottom'],\
icon: Image \
{\
icon:'" + this.resources.icon.path + '/' + this.resources.icon.name + "',\
preferredSize: [15, 18]\
},\
website: StaticText\
{\
text:'" + this.info.url + "',\
alignment:['fill','center']\
},\
}\
}";
}
this.createUI = function createUI()
{
res =
"window {\
resizeable : true\
closeButton : true\
text:'wtf'\
}"
this.window = new Window( res );
this.window.layout.layout(true);
this.window.center();
this.window.show();
}
this.yMainFunction = function yMainFunction()
{
//if called from the button as opposed as from the script.
if ( String(this) == "[object Button]" )
{
this.yTool.processCornerPins();
}
else
{
this.processCornerPins();
}
}
this.getSelectedCornerPins = function getSelectedCornerPins()
{
/* Function that returns a list of effect objects
that match any of the names
specified in validCornerPinNames. */
validCornerPinNames = ["ADBE Corner Pin","CC Power Pin"];
selectedLayers = app.project.activeItem.selectedLayers;
cornerPins = [];
for (layer=0;layer<selectedLayers.length;layer++)
{
myLayer = selectedLayers[layer];
myEffects = myLayer.property("ADBE Effect Parade");
for(effect=1;effect<=myEffects.numProperties;effect++)
{
for(validCornerPinName=0;validCornerPinName<validCornerPinNames.length;validCornerPinName++)
{
if ( myEffects.property(effect).matchName == validCornerPinNames[validCornerPinName] )
{
cornerPins.push(myEffects.property(effect));
}
}
}
}
return cornerPins;
}
this.getLayer = function getLayer(effect)
{
/* If given a layer's effect object
this function returns the layer object */
layer = effect.parentProperty.parentProperty;
return layer;
}
this.addEffect = function addEffect(layer,effect_string,effect_name)
{
new_effect = layer.property("ADBE Effect Parade").addProperty(effect_string);
new_effect.name = effect_name;
return new_effect;
}
this.addPointControls = function addPointControls(effect)
{
/*calling the getLayer(effect) is resetting my effect object to null, and not allowing me to do everything in a single sitting. I think it has to do with variable scopes.*/
local = {};
local.effect = effect;
base_name = local.effect.name;
names = ["Upper Left","Upper Right","Lower Left","Lower Right"];
for (i=1;i<=4;i++)
{
expression = '\
try\
{\
effect("'+base_name+'")('+(i)+')+effect("'+base_name+'_'+names[i-1]+'_'+'Offset'+'")("Point")\
}\
catch(err)\
{\
[0,0]\
}'
local.effect.property(i).expression = expression;
}
layer = this.getLayer(effect);
for(i=0;i<=3;i++)
{
new_effect = this.addEffect(layer,"Point Control",base_name+"_"+names[i]+"_"+"Offset");
new_effect.property("Point").setValue([0,0]);
}
}
this.processCornerPins = function processCornerPins(){
app.beginUndoGroup('ySetProject');
pins = this.getSelectedCornerPins();
for(pin=0;pin<pins.length;pin++)
{
this.addPointControls(pins[pin])
}
app.endUndoGroup();
}
this.activate = this.yMainFunction;
this.init();
return this;
}
//CHECKS that the toolbox exists, and if it doesn´t it runs the script on its own.
if (typeof(YTB)=='undefined')
{
yCPOffset = new YCPOffset();
yCPOffset.activate();
}
else
{
yCPOffset = YTB.addTool(new YCPOffset());
}