You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AFX_yTools/yScripts/y_CornerPin_0.1a.jsx

101 lines
4.7 KiB

yOffsetCornerPin_data = new Object();
yOffsetCornerPin_data.scriptName = 'YCPOffset';
yOffsetCornerPin_data.scriptDesc = 'YToolBox Script for Offseting Corner Pin Effects';
yOffsetCornerPin_data.scriptVer = '0.1a';
yOffsetCornerPin_data.webLink = 'yorchnet.com';
yOffsetCornerPin_data.img = yToolBox_data.icon;
//if yToolBox Exists add it to its tool list.
if (typeof(yToolBox_data)!=='undefined'){
//it should be called from toolbox.
yOffsetCornerPin_data.buttonWidth=76;
yOffsetCornerPin_data.buttonHeight=30;
yOffsetCornerPin_data.btnLayout = "btn_"+yOffsetCornerPin_data.scriptName+": Button { preferredSize: ['"+ yOffsetCornerPin_data.buttonWidth+"','"+ yOffsetCornerPin_data.buttonHeight+"'], text:'"+yOffsetCornerPin_data.scriptName+"', helpTip:'"+yOffsetCornerPin_data.scriptDesc+"' }";
}
yOffsetCornerPin_data.res = "window { \
type:'palette' , text:'"+yOffsetCornerPin_data.scriptName+' '+yOffsetCornerPin_data.scriptVer+"',\
\
\
info: Group { \
alignment:['center','bottom'], \
icon: Image {icon:'"+String(yOffsetCornerPin_data.img.path+"/"+yOffsetCornerPin_data.img.name)+"',preferredSize: [15, 18]},\
website: StaticText { text:'"+yOffsetCornerPin_data.webLink+"', alignment:['fill','center'] }\
}\
\
}";
//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------
// MAIN SCRIPT GOES HERE.
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] && myEffects.property(effect).selected == true){
cornerPins.push(myEffects.property(effect))
}
}
}
}
return cornerPins
}
function getLayer(effect){
/* If given a layer's effect object
this function returns the layer object */
layer = effect.parentProperty.parentProperty
return layer
}
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
}
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 = getLayer(effect);
for(i=0;i<=3;i++){
new_effect = addEffect(layer,"Point Control",base_name+"_"+names[i]+"_"+"Offset");
new_effect.property("Point").setValue([0,0]);
}
}
function processCornerPins(){
pins = getSelectedCornerPins();
for(pin=0;pin<pins.length;pin++){
addPointControls(pins[pin])
}
}
//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------//--------
function build_yOffsetCornerPin_data_UI(){
yOffsetCornerPin_data.window = new Window ( yOffsetCornerPin_data.res);
yOffsetCornerPin_data.window.show();
}
yOffsetCornerPin_data.activate =processCornerPins ;