Skip to main content
Inspiring
February 17, 2019
Answered

Update not-selected/visible HSL/SelectiveColor layer?

  • February 17, 2019
  • 1 reply
  • 534 views

I know how to update currently selected HSL/SelectiveColor layer with `setd`.

Is there a way to update HSL/SelectiveColor layer by name or id without selecting it?

This topic has been closed for replies.
Correct answer r-bin

Instead of 

ref.putEnumerated(idAdjL, idOrdn, idTrgt);

in line 50

put

ref.putName(idAdjL, layer.name);

or

ref.putIdentifier(idAdjL, layer.id);

Where layer is the reference for the desired layer.

1 reply

Legend
February 17, 2019

This is possible. Show your AM code, I will tell you what to do.

AverinAAAAuthor
Inspiring
February 18, 2019

this.updateSelectedHSLLayer = function(settings) {

    if (!settings.colorize) {

      settings.colorize = false;

    }

    if (debug.log)

      log("updateSelectedHSLLayer settings = " + JSON.stringify(settings));

    var setMasterValues = function(list, hsl) {

      safe(function() {

        list.putObject(

          idHsttwo,

          ADesc(function(desc) {

            desc.putInteger(idH, hsl[0]);

            desc.putInteger(idStrt, hsl[1]);

            desc.putInteger(idLght, hsl[2]);

          })

        );

      });

    };

    var setRangeValues = function(list, range, hsl) {

      safe(function() {

        list.putObject(

          idHsttwo,

          ADesc(function(desc) {

            desc.putInteger(idLclR, range.localRange);

            desc.putInteger(idBgnR, range.beginRamp);

            desc.putInteger(idBgnS, range.beginSustain);

            desc.putInteger(idEndS, range.endRamp);

            desc.putInteger(idEndR, range.endSustain);

            desc.putInteger(idH, hsl[0]);

            desc.putInteger(idStrt, hsl[1]);

            desc.putInteger(idLght, hsl[2]);

          })

        );

      });

    };

    return executeAction(

      idsetd,

      ADesc(function(desc) {

        safe(function() {

          desc.putReference(

            idnull,

            ARef(function(ref) {

              safe(function() {

                ref.putEnumerated(idAdjL, idOrdn, idTrgt);

              });

            })

          );

          desc.putObject(

            idT,

            idHStr,

            ADesc(function(desc) {

              safe(function() {

                desc.putBoolean(idClrz, settings.colorize);

                desc.putList(

                  idAdjs,

                  AList(function(list) {

                    if (settings.master) setMasterValues(list, settings.master);

                    if (settings.reds)

                      setRangeValues(list, HSLRanges.reds, settings.reds);

                    if (settings.yellows)

                      setRangeValues(list, HSLRanges.yellows, settings.yellows);

                    if (settings.greens)

                      setRangeValues(list, HSLRanges.greens, settings.greens);

                    if (settings.cyans)

                      setRangeValues(list, HSLRanges.cyans, settings.cyans);

                    if (settings.blues)

                      setRangeValues(list, HSLRanges.blues, settings.blues);

                    if (settings.magentas)

                      setRangeValues(

                        list,

                        HSLRanges.magentas,

                        settings.magentas

                      );

                  })

                );

              });

            })

          );

          if (settings.name) {

            desc.putString(idNm, settings.name);

          }

          if (settings.blendMode) {

            desc.putEnumerated(idMd, idBlnM, _c(settings.blendMode.id));

          }

        });

      }),

      DialogModes.NO

    );

  };

r-binCorrect answer
Legend
February 18, 2019

Instead of 

ref.putEnumerated(idAdjL, idOrdn, idTrgt);

in line 50

put

ref.putName(idAdjL, layer.name);

or

ref.putIdentifier(idAdjL, layer.id);

Where layer is the reference for the desired layer.