ExtendScriptの $オブジェクト(ヘルパーオブジェクト)は地味に便利です。
スクリプトを書くとき、デバッグに役立つのが $.writeln(message) や $.bp() や $.sleep() といったメソッド、また、多国語仕様にするときに役立つ $.localize などがあります。

そんな中に、実行途中でプレビューしながら色をつくるのに使えそうメソッドが
$.colorPicker();
ということで試してみました。たぶん、InDesignでもIllustratorでもPhotoshopでも使えます。

OSXの場合、こんなカラーピッカーが表示されます。

osxcolorpicker.png

//スクリプトの途中で色をプレビューしながら生成する
#target 'indesign';
var doc=app.documents.add();
var obj=doc.rectangles.add({geometricBounds:[20,20,150,150]});

var pick=$.colorPicker ();
if(pick==-1){exit();}
var pick16=pick.toString(16);

//Rが一桁のとき色が大ずれするのを回避
if(pick16.length==5){pick16="0"+pick16;}

col=doc.colors.add ({
	space:ColorSpace.RGB, 
	colorValue:[
		parseInt(pick16.substr (0, 2), 16),
		parseInt(pick16.substr (2, 2), 16),
		parseInt(pick16.substr (4, 2), 16)
		]})

//ここからRGBからCMYK変換、色が転びます
/*
col.space=ColorSpace.CMYK;

var cmyk=col.colorValue;
var valC=Math.round(cmyk[0]);
var valM=Math.round(cmyk[1]);
var valY=Math.round(cmyk[2]);
var valK=Math.round(cmyk[3]);
col.colorValue=[valC, valM, valY, valK];
	
var nameC="C="+Math.round(valC)
var nameM=" M="+Math.round(valM)
var nameY=" Y="+Math.round(valY)
var nameK=" K="+Math.round(valK)

col.name=nameC+nameM+nameY+nameK;
*/
//CMYK変換ここまで

obj.fillColor=col;

.colorPicker()の戻り値がRGBなのでカラーピッカーでCMYKを選んでも、CMYK〜RGB〜CMYKと変換されるので選んだ通りの数値になりません。Kulerもいっしょ。

トラックバック(0)

トラックバックURL: http://www.milligramme.cc/mtos/mt-tb.cgi/486

TranslateThis

このブログ記事について

このページは、mgが2010年2月 7日 17:24に書いたブログ記事です。

ひとつ前のブログ記事は「InDesign_裏処理とスクリプトラベルの付加可不可」です。

次のブログ記事は「InDesign_10桁数値→人間語のハッシュマップ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アーカイブ

Blog Parts