Get Layer Kind by Layer ID?

Anyone, especially newbies, asking for help with Photoshop Scripting and Photoshop Automation - as opposed to those contributing to discussion about an aspect of Photoshop Scripting

Moderators: Tom, Kukurykus

Jeremy Knudsen

Get Layer Kind by Layer ID?

Post by Jeremy Knudsen »

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

Professional AI Audio Generation within Adobe Premiere Pro - Download Free Plugin here

Mike Hale

Get Layer Kind by Layer ID?

Post by Mike Hale »

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.
};