Does anyone know of a way to get the LayerKind by layer ID?
I need to know what kind a particular layer is (without making it active).
Thanks in advance for your help!
Jeremy
Get Layer Kind by Layer ID?
-
Mike Hale
Get Layer Kind by Layer ID?
Here is one way to get by index. You can change putIndex to putIdentifier to use ID instead of index
Code: Select allfunction getLayerKindByIndex( index ) {
var ref, desc, adjustmentDesc, layerSectionType;
ref = new ActionReference();
ref.putIndex(charIDToTypeID( "Lyr " ), index );
desc = executeActionGet(ref);
var layerType = typeIDToStringID(desc.getEnumerationValue( stringIDToTypeID( 'layerSection' )));
if( layerType != 'layerSectionContent' ) return;// return if layerSet
if( desc.hasKey( stringIDToTypeID( 'textKey' ) ) ) return LayerKind.TEXT;
if( desc.hasKey( stringIDToTypeID( 'smartObject' ) ) ) return LayerKind.SMARTOBJECT;// includes LayerKind.VIDEO
if( desc.hasKey( stringIDToTypeID( 'layer3D' ) ) ) return LayerKind.LAYER3D;
if( desc.hasKey( stringIDToTypeID( 'adjustment' ) ) ){
switch(typeIDToStringID(desc.getList (stringIDToTypeID('adjustment')).getClass (0))){
case 'photoFilter' : return LayerKind.PHOTOFILTER;
case 'solidColorLayer' : return LayerKind.SOLIDFILL;
case 'gradientMapClass' : return LayerKind.GRADIENTMAP;
case 'gradientMapLayer' : return LayerKind.GRADIENTFILL;
case 'hueSaturation' : return LayerKind.HUESATURATION;
case 'colorLookup' : return udefined; //this does not exist and errors with getting layer kind
case 'colorBalance' : return LayerKind.COLORBALANCE;
case 'patternLayer' : return LayerKind.PATTERNFILL;
case 'invert' : return LayerKind.INVERSION;
case 'posterization' : return LayerKind.POSTERIZE;
case 'thresholdClassEvent' : return LayerKind.THRESHOLD;
case 'blackAndWhite' : return LayerKind.BLACKANDWHITE;
case 'selectiveColor' : return LayerKind.SELECTIVECOLOR;
case 'vibrance' : return LayerKind.VIBRANCE;
case 'brightnessEvent' : return LayerKind.BRIGHTNESSCONTRAST;
case 'channelMixer' : return LayerKind.CHANNELMIXER;
case 'curves' : return LayerKind.CURVES;
case 'exposure' : return LayerKind.EXPOSURE;
// if not one of the above adjustments return - adjustment layer type
default : return typeIDToStringID(desc.getList (stringIDToTypeID('adjustment')).getClass (0));
}
}
return LayerKind.NORMAL;// if we get here normal should be the only choice left.
};
Code: Select allfunction getLayerKindByIndex( index ) {
var ref, desc, adjustmentDesc, layerSectionType;
ref = new ActionReference();
ref.putIndex(charIDToTypeID( "Lyr " ), index );
desc = executeActionGet(ref);
var layerType = typeIDToStringID(desc.getEnumerationValue( stringIDToTypeID( 'layerSection' )));
if( layerType != 'layerSectionContent' ) return;// return if layerSet
if( desc.hasKey( stringIDToTypeID( 'textKey' ) ) ) return LayerKind.TEXT;
if( desc.hasKey( stringIDToTypeID( 'smartObject' ) ) ) return LayerKind.SMARTOBJECT;// includes LayerKind.VIDEO
if( desc.hasKey( stringIDToTypeID( 'layer3D' ) ) ) return LayerKind.LAYER3D;
if( desc.hasKey( stringIDToTypeID( 'adjustment' ) ) ){
switch(typeIDToStringID(desc.getList (stringIDToTypeID('adjustment')).getClass (0))){
case 'photoFilter' : return LayerKind.PHOTOFILTER;
case 'solidColorLayer' : return LayerKind.SOLIDFILL;
case 'gradientMapClass' : return LayerKind.GRADIENTMAP;
case 'gradientMapLayer' : return LayerKind.GRADIENTFILL;
case 'hueSaturation' : return LayerKind.HUESATURATION;
case 'colorLookup' : return udefined; //this does not exist and errors with getting layer kind
case 'colorBalance' : return LayerKind.COLORBALANCE;
case 'patternLayer' : return LayerKind.PATTERNFILL;
case 'invert' : return LayerKind.INVERSION;
case 'posterization' : return LayerKind.POSTERIZE;
case 'thresholdClassEvent' : return LayerKind.THRESHOLD;
case 'blackAndWhite' : return LayerKind.BLACKANDWHITE;
case 'selectiveColor' : return LayerKind.SELECTIVECOLOR;
case 'vibrance' : return LayerKind.VIBRANCE;
case 'brightnessEvent' : return LayerKind.BRIGHTNESSCONTRAST;
case 'channelMixer' : return LayerKind.CHANNELMIXER;
case 'curves' : return LayerKind.CURVES;
case 'exposure' : return LayerKind.EXPOSURE;
// if not one of the above adjustments return - adjustment layer type
default : return typeIDToStringID(desc.getList (stringIDToTypeID('adjustment')).getClass (0));
}
}
return LayerKind.NORMAL;// if we get here normal should be the only choice left.
};