Issue recoloring gradients - only first stop changes
Hi all,
helping someone here out with a script to remove opacity.
started as a simple script and is growing more complex each day...
I've tweaked it so it can deal with gradients.
but it is only effecting the first gradientStop.
I am sure it's just something simple I have missed but it's driving me bonkers...
Thanks in advance.
function RemoveOpacity(){
// to work on selected items only set to SEL
// to work on whole document set to ALL
var work_on = "SEL";
//---------------------------------------------------------
function changeColor(obj,op){
if(obj == '[SpotColor]'){
obj.tint = obj.tint*op;
}else if(obj == '[CMYKColor]'){
obj.cyan = obj.cyan*op;
obj.magenta = obj.magenta*op;
obj.yellow = obj.yellow*op;
obj.black = obj.black*op;
}else if(obj == '[RGBColor]'){
obj.red = obj.red+(255-obj.red)*op;
obj.blue = obj.blue+(255-obj.blue)*op;
obj.green = obj.green+(255-obj.green)*op;
}
}
var doc = app.activeDocument;
if(work_on === 'SEL'){
var items = doc.selection;
}else if(work_on === 'ALL'){
var items = doc.pathItems;
}else{
alert('the "work_on" variable is not set correctly');
return;
}
for(var i = 0; i<items.length;i++){
if(items.filled === true){
if(items.fillColor == '[GradientColor]'){
for(var j = 0; j<items.fillColor.gradient.gradientStops.length;j++){
changeColor(items.fillColor.gradient.gradientStops
.color,(items.fillColor.gradient.gradientStops .opacity/100)*(items.opacity/100)); items.fillColor.gradient.gradientStops
.opacity = 100; }
}else{
changeColor(items.fillColor,items.opacity/100);
}
}
if(items.stroked === true){
if(items.strokeColor == '[GradientColor]'){
for(var j = 0; j<items.strokeColor.gradient.gradientStops.length;j++){
changeColor(items.strokeColor.gradient.gradientStops
.color,(items.strokeColor.gradient.gradientStops .opacity/100)*(items.opacity/100)); items.strokeColor.gradient.gradientStops
.opacity = 100; }
}else{
changeColor(items.strokeColor,items.opacity/100);
}
}
items.opacity = 100;
}
}
RemoveOpacity();