Inspiring
January 8, 2023
Answered
gradient radial to linear bach change
- January 8, 2023
- 2 replies
- 1474 views
Hi @Max Mugen, I had already written this when I saw you already had a virtually equivalent answer. I will post it anyway, because a small difference is I gave it a UI, so you can choose which conversion to make. - Mark
/**
* Convert Gradient FillColor Type.
* @discussion https://community.adobe.com/t5/illustrator-discussions/gradient-radial-to-linear-bach-change/m-p/13474116
*/
(function () {
var doc = app.activeDocument,
items = doc.selection;
var convertToGradType = ui()
? GradientType.LINEAR
: GradientType.RADIAL;
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (
item.fillColor.typename == 'GradientColor'
&& item.fillColor.gradient.type != convertToGradType
)
item.fillColor.gradient = newGradFromGrad(doc, item.fillColor.gradient, convertToGradType);
}
function newGradFromGrad(doc, grad, convertToType) {
if (grad.gradType === convertToType)
return grad;
var newGrad = doc.gradients.add();
newGrad.type = convertToType;
newGrad.stops = grad.stops;
while (newGrad.gradientStops.length < grad.gradientStops.length)
newGrad.gradientStops.add();
for (var i = 0; i < grad.gradientStops.length; i++) {
newGrad.gradientStops[i].color = grad.gradientStops[i].color;
newGrad.gradientStops[i].midPoint = grad.gradientStops[i].midPoint;
newGrad.gradientStops[i].opacity = grad.gradientStops[i].opacity;
newGrad.gradientStops[i].rampPoint = grad.gradientStops[i].rampPoint;
}
return newGrad;
};
function ui() {
var w = new Window("dialog { text:'', properties:{ resizeable:true } }");
w.add('statictext',undefined,'Convert selected gradients to:');
var radios = w.add("group {orientation:'row', alignment:['center','center']}");
var linearRadio = radios.add('radiobutton', undefined, 'Linear');
var radialRadio = radios.add('radiobutton', undefined, 'Radial');
radialRadio.value = true;
var buttons = w.add("group {orientation:'row', alignment:['right','center'], alignChildren:'right', margins:[0,23,0,0] }");
var cancelButton = buttons.add("Button { text:'Cancel', properties:{name:'cancel'} }");
var okButton = buttons.add("Button { text:'Convert' }");
okButton.onClick = function () { w.close(1) };
w.center();
var result = w.show();
if (result == 1)
return linearRadio.value;
}
})();
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.