| 2316 | } // DopeSheetViewPrivate::onMouseLeftButtonDrag |
| 2317 | |
| 2318 | void |
| 2319 | DopeSheetViewPrivate::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 | |
| 2363 | void |
| 2364 | DopeSheetViewPrivate::moveCurrentFrameIndicator(double dt) |
no test coverage detected