表示レイヤー結合スクリプト

表示レイヤー結合用スクリプトです。
フォルダとグループ化の判定が可能になったので組みました。
現段階(npaint_script07.zip) での精一杯。
無駄部分があっても気にしない。

2012/07/02 追記
これと、フォルダのみ結合・グループのみ結合・フォルダ&グループ結合の3つをセットにしました。
http://nekop.seesaa.net/article/278389331.html

以下は以前の記事です。

スクリプトは「続きを読む」に折り畳んであります。
8/17 修正

表示レイヤーと表示レイヤーの間に非表示レイヤーやフォルダがあると、「下のレイヤーと結合」を使ってるだけなので結合されません。

・グループ化しているレイヤーを判断して結合。非表示レイヤーが混ざっていれば削除
・グループ化のレイヤーがなくなってから全体の結合開始


非表示レイヤーを残して置きたいときのことを考え、削除は組み込んでいません。
非表示レイヤーが不用なら、先に非表示レイヤー削除のスクリプトを実行してから結合を実行してください。

注:
グループ化の親レイヤー(?)が非表示になっていれば、その上に置かれたグループ化レイヤーは表示状態であっても目視不可能になりますが、データ上ではそのレイヤーが表示レイヤーであることに変わりはないのでそこだけ結合されます。


np_image img = get_active_image();//編集中の画像を取得

for (int i=0; i < get_layer_count(img); ++i) {//レイヤーの数だけ繰り返す
np_layer l = get_layer(img,i);//i番目のレイヤーを取得

//グループ化レイヤー纏め
if (is_group(l) == true) {
set_active_layer(img,l);

//非表示レイヤーなら削除、表示レイヤーなら結合
if (get_visible(l) == false) {
np_cmd(1283);//レイヤーを削除
}
else {
np_cmd(1284); //下のレイヤーと結合
}
i=0;
}
}

//---ここまでグループ化レイヤーのみ結合---//
//---ここからフォルダを無視しつつ下から結合---//

if ( 1 < get_layer_count(img)){

int i=0;
np_layer lay = get_layer(img,1);//取得レイヤーを指定

set_active_layer(img,lay);

//レイヤー結合
int y = get_layer_count(img);
while (i < y ){
np_layer lay2 = get_active_layer(img);

if (get_level(lay2) == 0) {
np_cmd(1284); //下のレイヤーと結合
}

np_cmd(1361); //上のレイヤーに移動
++i;
}
}


これをリスト登録したい場合は
http://nekop.seesaa.net/article/159342506.html
に、スクリプトの登録方法を載せています。
posted by むらせ at 2010年08月16日 00:39 | スクリプト | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。