Skip to main content
Inspiring
September 1, 2022
Answered

How to check layer kind using javascript

  • September 1, 2022
  • 4 replies
  • 2623 views

Is it possible using javascript to check what is kind of selected layer? To be more precise, i need to check is it selected layer art layer or adjustment layer and base on that procede with some other scripts?

This topic is closed to new replies. Start a new post to keep the conversation going.
Correct answer jazz-y

When I need to figure out what type of layer I'm working with, I run the following code:

s2t = stringIDToTypeID;
(r = new ActionReference()).putProperty(s2t('property'), p = s2t('layerKind'));
r.putEnumerated(s2t('layer'), s2t('ordinal'), s2t('targetEnum'));
var layerKind = executeActionGet(r).getInteger(p);

the values we can get are:

const kAnySheet             = 0; 
const kPixelSheet           = 1;  
const kAdjustmentSheet      = 2;  
const kTextSheet            = 3;  
const kVectorSheet          = 4;  
const kSmartObjectSheet     = 5;  
const kVideoSheet           = 6;  
const kLayerGroupSheet      = 7;  
const k3DSheet              = 8;  
const kGradientSheet        = 9;  
const kPatternSheet         = 10;  
const kSolidColorSheet      = 11;  
const kBackgroundSheet      = 12;  
const kHiddenSectionBounder = 13;  

If you know that you are working with an adjustment layer, then its type can be found like this:

s2t = stringIDToTypeID;
(r = new ActionReference()).putProperty(s2t('property'), p = s2t('adjustment'));
r.putEnumerated(s2t('layer'), s2t('ordinal'), s2t('targetEnum'));
alert(typeIDToStringID(executeActionGet(r).getList(p).getObjectType(0)));

4 replies

Stephen Marsh
Community Expert
Community Expert
September 1, 2022

@milevic – you can try:

 

https://community.adobe.com/t5/forums/searchpage/tab/message?advanced=false&allow_punctuation=false&q=layer.kind%20%3D%3D%20LayerKind

 

or:

 

https://gist.github.com/MarshySwamp/ef345ef3dec60a843465347ee6fcae2f

 

and:

 

 

// http://creativetuts.com/photoshop-script-determine-layer-kind/
// Photoshop Script
// "Determine Layer Kind"
// Script by Mehmet Şensoy
 
#target photoshop
app.bringToFront();

var doc = app.activeDocument;
var layer = doc.activeLayer;// Save selected layer to variable:

function determinelayerkind(layer) {
    if (layer.kind == LayerKind.TEXT) { layerkind = "Text Layer"; return layerkind; } // Text Layer
    else if (layer.kind == LayerKind.SOLIDFILL) { layerkind = "Shape Layer"; return layerkind; } /* Shape Layer */
    else if (layer.kind == LayerKind.BLACKANDWHITE) { layerkind = "Black and White adjustment layer"; return layerkind; } /* Black and White */
    else if (layer.kind == LayerKind.BRIGHTNESSCONTRAST) { layerkind = "Brightness contrast adjustment layer"; return layerkind; } /* Brightness contrast adjustment layer */
    else if (layer.kind == LayerKind.CHANNELMIXER) { layerkind = "Channel mixer adjustment layer"; return layerkind; } /* Channel mixer adjustment layer */
    else if (layer.kind == LayerKind.COLORBALANCE) { layerkind = "Color balance adjustment layer"; return layerkind; } /* Color balance adjustment layer */
    else if (layer.kind == LayerKind.CURVES) { layerkind = "Curves adjustment layer"; return layerkind; } /* Curves adjustment layer */
    else if (layer.kind == LayerKind.EXPOSURE) { layerkind = "Exposure layer"; return layerkind; } /* Exposure layer */
    else if (layer.kind == LayerKind.GRADIENTFILL) { layerkind = "Gradient fill"; return layerkind; } /* Gradient fill */
    else if (layer.kind == LayerKind.GRADIENTMAP) { layerkind = "Gradient map adjustment layer"; return layerkind; } /* Gradient map adjustment layer */
    else if (layer.kind == LayerKind.HUESATURATION) { layerkind = "Hue saturation adjustment layer"; return layerkind; } /* Hue saturation adjustment layer */
    else if (layer.kind == LayerKind.INVERSION) { layerkind = "Invert adjustment layer"; return layerkind; } /* Invert adjustment layer */
    else if (layer.kind == LayerKind.LAYER3D) { layerkind = "3D layer"; return layerkind; } /* 3D layer */
    else if (layer.kind == LayerKind.LEVELS) { layerkind = "Levels adjustment layer"; return layerkind; } /* Levels adjustment layer */
    else if (layer.kind == LayerKind.NORMAL) { layerkind = "Normal layer"; return layerkind; } /* Normal Layer */
    else if (layer.kind == LayerKind.PATTERNFILL) { layerkind = "Pattern fill layer"; return layerkind; } /* Pattern fill layer */
    else if (layer.kind == LayerKind.PHOTOFILTER) { layerkind = "Photo filter layer"; return layerkind; } /* Photo filter layer */
    else if (layer.kind == LayerKind.POSTERIZE) { layerkind = "Posterize adjustment layer"; return layerkind; } /* Posterize adjustment layer */
    else if (layer.kind == LayerKind.SELECTIVECOLOR) { layerkind = "Selective color adjustment layer."; return layerkind; } /* Selective color adjustment layer */
    else if (layer.kind == LayerKind.SMARTOBJECT) { layerkind = "Smart object layer"; return layerkind; } /* Smart object layer */
    else if (layer.kind == LayerKind.THRESHOLD) { layerkind = "Threshold adjustment layer"; return layerkind; } /* Threshold adjustment layer */
    else if (layer.kind == LayerKind.VIBRANCE) { layerkind = "Vibrance layer"; return layerkind; } /* Vibrance layer */
    else if (layer.kind == LayerKind.VIDEO) { layerkind = "Video layer"; return layerkind; } /* Video layer */

    else if (app.activeDocument.activeLayer.typename === "LayerSet" && app.activeDocument.activeLayer.layers.length === 0) { layerkind = "Layer Set"; return layerkind; } /* Layer Set */
    else if (app.activeDocument.activeLayer.typename === "LayerSet" && app.activeDocument.activeLayer.layers.length > 0) { layerkind = "Layer Set + Content"; return layerkind; } /* Layer Set - Must have content */
}

alert("Current Layer is a " + determinelayerkind(layer));

 

 
milevicAuthor
Inspiring
September 2, 2022

This is great job. Thanks @Stephen Marsh