Apply Adjustment Layers - JSX
Apply Adjustment Layers - JSX
Apply Adjustment Layers - JSX
==========================================
APPLY ADJUSTMENT LAYERS 2.0
==========================================
==========================================
It works with nested layer groups, clipping masks, and layer masks.
Layers with layer effects on them will be adjusted; however the layer effects
themselves will not.
==========================================
*/
function init(ref) {
try {
main(ref);
return;
} catch (err) {
ref.activeHistoryState = savedState;
alert("Sorry, script failed (or you canceled it by hitting ESC)");
return;
}
}
function main(ref) {
if (myReturn == 1) {
// ESTIMATE total number of layers (would take too much running time to
accurately count I think)
var layerCount = 0;
var currentLayers = ref.layers;
var leng = currentLayers.length;
for (var d = leng - 1; d >= 0; d--) {
if (currentLayers[d].typename == 'LayerSet') {
layerCount = layerCount + (currentLayers[d].layers.length)
+ 1;
} else {
layerCount++;
}
}
layerCount = layerCount * 2;
prefs.showPanels = dlg.options.showPanels.value;
prefs.preserveLayers = dlg.options.preserveLayers.value;
prefs.processBlendModes = dlg.options.processBlendModes.value;
prefs.processHidden = dlg.options.processHidden.value;
prefs.processLocked = dlg.options.processLocked.value;
prefs.processSmartObjects = dlg.options.processSmartObjects.value;
prefs.process3D = dlg.options.process3D.value;
prefs.processShapes = dlg.options.processShapes.value;
prefs.processText = dlg.options.processText.value;
if (!prefs.showPanels) {
for(var a = 0;a<desc.count;a++){
if
(desc.getObjectValue(a).getBoolean(stringIDToTypeID("visible")) == true) {
if (desc.getObjectValue(a).getString
(stringIDToTypeID("name")) == "Properties") {
isPropertiesOpen = true;
} else if (desc.getObjectValue(a).getString
(stringIDToTypeID("name")) == "Layers") {
isLayersOpen = true;
} else if (desc.getObjectValue(a).getString
(stringIDToTypeID("name")) == "Color") {
isColorOpen = true;
} else if (desc.getObjectValue(a).getString
(stringIDToTypeID("name")) == "Histogram") {
isHistogramOpen = true;
} else if (desc.getObjectValue(a).getString
(stringIDToTypeID("name")) == "Options") {
isOptionsOpen = true;
} else if (desc.getObjectValue(a).getString
(stringIDToTypeID("name")) == "Channels") {
isChannelsOpen = true;
}
}
}
if (isPropertiesOpen) {
runMenuItem(app.stringIDToTypeID("togglePropertiesPanel"));
}
if (isLayersOpen) {
runMenuItem(app.stringIDToTypeID("toggleLayersPalette"));
}
if (isColorOpen) {
runMenuItem(app.stringIDToTypeID("toggleColorPalette"));
}
if (isHistogramOpen) {
runMenuItem(app.stringIDToTypeID("toggleHistogramPalette"));
}
if (isOptionsOpen) {
runMenuItem(app.stringIDToTypeID("toggleOptionsPalette"));
}
if (isChannelsOpen) {
runMenuItem(app.stringIDToTypeID("toggleChannelsPalette"));
}
}
// let's do it
if (prefs.preserveLayers) {
adj_layers[aa].name = "APPLIED! " + adj_layers[aa].name;
adj_layers[aa].visible = false;
} else {
adj_layers[aa].allLocked = false;
adj_layers[aa].remove();
}
}
if (!prefs.showPanels) {
if (isPropertiesOpen) {
runMenuItem(app.stringIDToTypeID("togglePropertiesPanel"));
}
if (isLayersOpen) {
runMenuItem(app.stringIDToTypeID("toggleLayersPalette"));
}
if (isColorOpen) {
runMenuItem(app.stringIDToTypeID("toggleColorPalette"));
}
if (isHistogramOpen) {
runMenuItem(app.stringIDToTypeID("toggleHistogramPalette"));
}
if (isOptionsOpen) {
runMenuItem(app.stringIDToTypeID("toggleOptionsPalette"));
}
if (isChannelsOpen) {
runMenuItem(app.stringIDToTypeID("toggleChannelsPalette"));
}
}
return;
function adjust() {
var layer = ref.layers[i];
var isLocked = false;
var isHidden = false;
} else {
return;
}
} else {
return;
}
if (prefs.preserveLayers) {
return;
if (layer.isBackgroundLayer) {
temp_adjust = adj_layer.duplicate(layer,
ElementPlacement.PLACEBEFORE);
} else {
temp_adjust = adj_layer.duplicate(layer,
ElementPlacement.PLACEAFTER);
temp_adjust.move(layer,
ElementPlacement.PLACEBEFORE)
}
// ...and apply it down.
temp_adjust.merge();
}
}
}
function newGroupFromLayers(doc) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putClass( sTID('layerSection') );
desc.putReference( cTID('null'), ref );
var lref = new ActionReference();
lref.putEnumerated( cTID('Lyr '), cTID('Ordn'), cTID('Trgt') );
desc.putReference( cTID('From'), lref);
executeAction( cTID('Mk '), desc, DialogModes.NO );
};
function undo() {
executeAction(cTID("undo", undefined, DialogModes.NO));
};
function getSelectedLayers(doc) {
var selLayers = [];
newGroupFromLayers();
undo();
return selLayers;
};
if (parent) {
if (parent instanceof Window) {
win.parent = parent;
} else if (useCancel == undefined) {
useCancel = parent;
}
}
if (useCancel) {
win.cancel = win.add('button', undefined, 'Cancel');
win.cancel.onClick = function() {
try {
if (win.onCancel) {
var rc = win.onCancel();
if (rc || rc == undefined) {
win.close();
}
} else {
win.close();
}
} catch (e) { alert(e); }
}
}
win.updateProgress = function(val) {
var win = this;
if (val != undefined) {
win.bar.value = val;
}else {
win.bar.value++;
}
if (win.recenter) {
win.center(win.parentWin);
}
win.update();
}
win.center(win.parent);
return win;
};
function isColorLookup(layer){
var ref, desc, adjustmentDesc, layerSectionType;
ref = new ActionReference();
ref.putIdentifier(charIDToTypeID("Lyr "), layer.id);
desc = executeActionGet(ref);
var layerType =
typeIDToStringID(desc.getEnumerationValue(stringIDToTypeID('layerSection')));
if(layerType != 'layerSectionContent') return;
if(desc.hasKey(stringIDToTypeID('adjustment'))){
if (typeIDToStringID(desc.getList(stringIDToTypeID('adjustment')).getClass(0)) ==
'colorLookup') {
return true;
}
} else {
return false;
}
};