MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / createSelectionFromRect

Method createSelectionFromRect

Gui/DopeSheetView.cpp:2318–2361  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2316} // DopeSheetViewPrivate::onMouseLeftButtonDrag
2317
2318void
2319DopeSheetViewPrivate::createSelectionFromRect(const RectD &zoomCoordsRect,
2320 std::vector<DopeSheetKey> *result,
2321 std::vector<DSNodePtr>* selectedNodes)
2322{
2323 DSTreeItemNodeMap dsNodes = model->getItemNodeMap();
2324
2325 for (DSTreeItemNodeMap::const_iterator it = dsNodes.begin(); it != dsNodes.end(); ++it) {
2326 const DSNodePtr& dsNode = (*it).second;
2327 const DSTreeItemKnobMap& dsKnobs = dsNode->getItemKnobMap();
2328
2329 for (DSTreeItemKnobMap::const_iterator it2 = dsKnobs.begin(); it2 != dsKnobs.end(); ++it2) {
2330 DSKnobPtr dsKnob = (*it2).second;
2331 int dim = dsKnob->getDimension();
2332
2333 if (dim == -1) {
2334 continue;
2335 }
2336
2337 KeyFrameSet keyframes = dsKnob->getKnobGui()->getCurve(ViewIdx(0), dim)->getKeyFrames_mt_safe();
2338
2339 for (KeyFrameSet::const_iterator kIt = keyframes.begin();
2340 kIt != keyframes.end();
2341 ++kIt) {
2342 KeyFrame kf = (*kIt);
2343 double y = hierarchyView->visualItemRect( dsKnob->getTreeItem() ).center().y();
2344 RectD zoomKfRect = getKeyFrameBoundingRectZoomCoords(kf.getTime(), y);
2345
2346 if ( zoomCoordsRect.intersects(zoomKfRect) ) {
2347 result->push_back( DopeSheetKey(dsKnob, kf) );
2348 }
2349 }
2350 }
2351
2352 std::map<DSNode *, FrameRange >::const_iterator foundRange = nodeRanges.find( dsNode.get() );
2353 if ( foundRange != nodeRanges.end() ) {
2354 QPoint visualRectCenter = hierarchyView->visualItemRect( dsNode->getTreeItem() ).center();
2355 QPointF center = zoomContext.toZoomCoordinates( visualRectCenter.x(), visualRectCenter.y() );
2356 if ( zoomCoordsRect.contains( (foundRange->second.first + foundRange->second.second) / 2., center.y() ) ) {
2357 selectedNodes->push_back(dsNode);
2358 }
2359 }
2360 }
2361}
2362
2363void
2364DopeSheetViewPrivate::moveCurrentFrameIndicator(double dt)

Callers 1

mouseReleaseEventMethod · 0.80

Calls 15

getItemNodeMapMethod · 0.80
getKeyFrames_mt_safeMethod · 0.80
centerMethod · 0.80
visualItemRectMethod · 0.80
getTreeItemMethod · 0.80
getTimeMethod · 0.80
DopeSheetKeyClass · 0.70
ViewIdxClass · 0.50
beginMethod · 0.45
endMethod · 0.45
getDimensionMethod · 0.45
getCurveMethod · 0.45

Tested by

no test coverage detected