// 色相・彩度
function act_hueSaturation (colorize) {
    var subDesc= function (f, c, prop){
        var desc= new ActionDescriptor();
        if (prop.range && f) {
            desc.putInteger( charIDToTypeID('LclR'), c );
            desc.putInteger( charIDToTypeID('BgnR'), prop.range[0] ); // 左外側
            desc.putInteger( charIDToTypeID('BgnS'), prop.range[1] ); // 左内側
            desc.putInteger( charIDToTypeID('EndS'), prop.range[2] ); // 右内側
            desc.putInteger( charIDToTypeID('EndR'), prop.range[3] ); // 右外側
        }
        desc.putInteger( charIDToTypeID('H   '), prop.heu ); // 色相
        desc.putInteger( charIDToTypeID('Strt'), prop.strt ); // 彩度
        desc.putInteger( charIDToTypeID('Lght'), prop.lght ); // 明度
        return desc;
    }
    var cnt=0;
    var rList= new ActionList();
    if (colorize) {
        rList.putObject( charIDToTypeID('Hst2'), subDesc( false, cnt, arguments[1] ) );
    } else {
        for (var i=1; i < arguments.length; i++) {
            if (arguments[i].range) {cnt++}
            rList.putObject( charIDToTypeID('Hst2'), subDesc( true, cnt, arguments[i] ) );
            if ( i==7 ) {break;}
        }
    }
    var actDesc= new ActionDescriptor();
    actDesc.putList( charIDToTypeID('Adjs'), rList );
    actDesc.putBoolean( charIDToTypeID('Clrz'), colorize ); // 色彩の統一
    executeAction( charIDToTypeID('HStr'), actDesc, DialogModes.NO );
}
var set1= { heu: 0, strt: 0, lght: 0 } // マスター(rangeの設定がない)
var set2= { heu: 0, strt: 0, lght: 0, range: [315, 345, 15, 45] }
var set3= { heu: 0, strt: 0, lght: 0, range: [15, 45, 75, 105] }
var set4= { heu: 0, strt: 0, lght: 0, range: [135, 105, 135, 165] }
var set5= { heu: 0, strt: 0, lght: 0, range: [195, 225, 255, 285] }
var set6= { heu: 0, strt: 0, lght: 0, range: [195, 225, 255, 285] }
var set7= { heu: 0, strt: 0, lght: 0, range: [255, 285, 315, 345] }
act_hueSaturation(false, set1, set2, set3, set4, set5, set6, set7); // デフォルト値

 

<引数>

第1引数の「colorize」は「色彩の統一」の値でtrueで有効になります。

それ以降の引数は、設定値と調整範囲を連想配列オブジェクトにして渡します。

heu integer 色相
strt integer 彩度
lght integer 明度
range array 調整範囲 [br, bs, es, er]

 

マスターに色の範囲はありません。この関数ではオブジェクトにrangeが存在しなければ、それがマスターの設定とみなす仕様になっています。

UIではマスターの調整に加え、色の範囲を設定して調整することができます。「range」にはその調整幅を渡します。これはマスター以外の設定でダイアログの下に出現する調整スライダーの値を左から並べた値になります。

なお、この引数オブジェクトはマスター以外に最大6つまで渡すことができます(UIと同様)。もちろんマスターだけや、それ以外だけを渡すこともできます。

var set= { heu: 1, strt: 0, lght: 0 }
act_hueSaturation(false, set); // マスターのみ
var set1= { heu: 0, strt: 0, lght: 0 }
var set2= { heu: 0, strt: 0, lght: 0, range: [315, 345, 15, 45] }
act_hueSaturation(false, set1, set2); // マスターとレッド系のみ
var set1= { heu: 0, strt: 0, lght: 0, range: [315, 345, 15, 45] }
act_hueSaturation(false, set1); // レッド系のみ

 

「colorize(色彩の統一)」がtrueの場合は、続く引数のひとつだけをマスターの設定とみなして実行されます。もし、それ以降に引数が続いていても無視されます。また、rangeの値があっても無視されます。

var set= { heu: 2, strt: 0, lght: 0, range: [315, 345, 15, 45] } // rangeの値は無視される
act_hueSaturation(true, set); // 色彩の統一ON

 

 

 

Joomla templates by a4joomla