MCPcopy Create free account
hub / github.com/MeshInspector/MeshLib / drawMergeSubtreeButton

Method drawMergeSubtreeButton

source/MRViewer/MRRibbonMenu.cpp:1251–1279  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1249}
1250
1251bool RibbonMenu::drawMergeSubtreeButton( const std::vector<std::shared_ptr<Object>>& selected )
1252{
1253 std::vector<TypedFlatTree> subtrees;
1254 for ( const auto& subtree : getFlatSubtrees( selected ) )
1255 subtrees.emplace_back( TypedFlatTree::fromFlatTree( subtree ) );
1256 if ( subtrees.empty() )
1257 return false;
1258
1259 bool needToMerge = false;
1260 for ( const auto& subtree : subtrees )
1261 {
1262 const auto& rootObj = subtree.root;
1263 needToMerge = needToMerge
1264 || ( subtree.objsMesh.size() + int( rootObj->asType<ObjectMesh>() != nullptr ) > 1 )
1265 || ( subtree.objsLines.size() + int( rootObj->asType<ObjectLines>() != nullptr ) > 1 )
1266 || ( subtree.objsPoints.size() + int( rootObj->asType<ObjectPoints>() != nullptr ) > 1 );
1267 }
1268 if ( !needToMerge )
1269 return false;
1270
1271 if ( !UI::button( _tr( "Combine Subtree" ), Vector2f( -1, 0 ) ) )
1272 return false;
1273
1274 SCOPED_HISTORY( _t( "Combine Subtree" ) );
1275 for ( auto& subtree : subtrees )
1276 mergeSubtree( std::move( subtree ) );
1277
1278 return true;
1279}
1280
1281void RibbonMenu::drawBigButtonItem_( const MenuItemInfo& item )
1282{

Callers 1

drawSceneContextMenu_Method · 0.80

Calls 5

getFlatSubtreesFunction · 0.85
mergeSubtreeFunction · 0.85
buttonFunction · 0.70
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected