void folder_unite(int num,bool v,bool fo) { np_image img = get_active_image(); // 編集中の画像を取得 int y = get_layer_count(img) ; // レイヤーの数をyに取得 for (int i = 0; i < get_layer_count(img); ++i) { // レイヤーの数だけ繰り返す np_layer l = get_layer(img,y-1); // 取得レイヤーを指定 // フォルダか確認 if (fo) { // 非表示も結合 if (is_folder(l) == true && get_level(l) == num) { set_active_layer(img,l); // フォルダだったのでそのレイヤーをアクティブにする string l_name = get_name(l); // レイヤー名取得 np_cmd(1282); // レイヤーを複製 set_name(get_layer(img,y),l_name); // 取得したレイヤー名を設定 // np_cmd(1360); // 下のレイヤーに移動 set_active_layer(img,l); // 削除するので再びアクティブに指定 np_cmd(1283); // レイヤーを削除 // 削除したので数え直し y = get_layer_count(img); // レイヤーの数をyに取得 i=0; } else { // フォルダではなかった場合は移動する // 確認レイヤーを変更 y = y-1; } } else { // フォルダ非表示なら残す if (is_folder(l) == true && get_level(l) == num && get_visible(l) == true) { set_active_layer(img,l); // フォルダだったのでそのレイヤーをアクティブにする string l_name = get_name(l); // レイヤー名取得 np_cmd(1282); // レイヤーを複製 set_name(get_layer(img,y),l_name); // 取得したレイヤー名を設定 set_active_layer(img,l); // 削除するので再びアクティブに指定 np_cmd(1283); // レイヤーを削除 // 削除したので数え直し y = get_layer_count(img); // レイヤーの数をyに取得 i=0; } else { // フォルダではなかった場合は移動する // 確認レイヤーを変更 y = y-1; } } } if (v) { group_unite(); } } ///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////// void group_unite() { 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 { // 親レイヤーが非表示かどうか調べる if (get_visible(get_layer(img,i-1)) == false) { set_visible(get_layer(img,i-1),true); np_cmd(1284); //下のレイヤーと結合 int gu = 0 ; while (gu <= 0) { np_layer l = get_layer(img,i);//i番目のレイヤーを取得 if (is_group(l) == true && get_visible(l) == false) { set_active_layer(img,l); np_cmd(1283);//レイヤーを削除 } else if (is_group(l) == true && get_visible(l) == true) { set_active_layer(img,l); np_cmd(1284); //下のレイヤーと結合 } else{ // 親レイヤーを非表示に戻す set_visible(get_layer(img,i-1),false); gu = 1 ; } } } else { np_cmd(1284); //下のレイヤーと結合 } } i=0; } } } ///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////// void uniting(bool v) { 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 { // 親レイヤーが非表示かどうか調べる if (get_visible(get_layer(img,i-1)) == false) { set_visible(get_layer(img,i-1),true); np_cmd(1284); //下のレイヤーと結合 int gu = 0 ; while (gu <= 0) { np_layer l = get_layer(img,i);//i番目のレイヤーを取得 if (is_group(l) == true && get_visible(l) == false) { set_active_layer(img,l); np_cmd(1283);//レイヤーを削除 } else if (is_group(l) == true && get_visible(l) == true) { set_active_layer(img,l); np_cmd(1284); //下のレイヤーと結合 } else{ // 親レイヤーを非表示に戻す set_visible(get_layer(img,i-1),false); gu = 1 ; } } } else { np_cmd(1284); //下のレイヤーと結合 } } i=0; } } //---ここまでグループ化レイヤーのみ結合---// // 非表示レイヤー削除 if (!v) { for (int i = 0; i < get_layer_count(img); ++i) {//レイヤーの数だけ繰り返す np_layer l = get_layer(img,i);//i番目のレイヤーを取得 //レイヤーが非表示ならレイヤーを削除 if (get_visible(l) == false) { set_active_layer(img,l); np_cmd(1283);//レイヤーを削除 i = -1;//レイヤーを削除するとレイヤーの並びが変わるので最初のレイヤーから繰り返す } } } //---ここからフォルダを無視しつつ下から結合---// 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++; } } } ////////////////////////////////////////////////// // フォルダ階層0 void folder_unite0(){ folder_unite(0,false,true); } // フォルダ階層0 非表示フォルダは結合しない void folder_unite0x(){ folder_unite(0,false,false); } // フォルダ階層1 void folder_unite1(){ folder_unite(1,false,true); } // フォルダ階層1 非表示フォルダは結合しない void folder_unite1x(){ folder_unite(1,false,false); } // フォルダ階層2 void folder_unite2(){ folder_unite(2,false,true); } // フォルダ階層2 非表示フォルダは結合しない void folder_unite2x(){ folder_unite(2,false,false); } // フォルダ階層3 void folder_unite3(){ folder_unite(3,false,true); } // フォルダ階層なしの後にグループも結合 void folder_unite9(){ folder_unite(0,true,true); } // グループ化レイヤーと通常レイヤー結合 void uniting1() { uniting(true); } // グループ化レイヤーと通常レイヤー結合・非表示レイヤー削除 void uniting2() { uniting(false); }