void Model::setSelection(const Selection& s) { // OPTIMIZEME for (auto& elt : m_segments) elt.selection.set(s.contains(&elt)); for (auto& elt : m_points) elt->selection.set(s.contains(elt)); }
void DisplayedElementsModel::setSelection( const Selection & s) { for_each_in_tuple(elements(), [&] (auto elt) { elt->selection.set(s.contains(elt.data())); // OPTIMIZEME }); }
void TimeInstantLayer::resizeSelection(Selection s, Selection newSize) { if (!m_model) return; SparseOneDimensionalModel::EditCommand *command = new SparseOneDimensionalModel::EditCommand(m_model, tr("Resize Selection")); SparseOneDimensionalModel::PointList points = m_model->getPoints(s.getStartFrame(), s.getEndFrame()); double ratio = double(newSize.getEndFrame() - newSize.getStartFrame()) / double(s.getEndFrame() - s.getStartFrame()); for (SparseOneDimensionalModel::PointList::iterator i = points.begin(); i != points.end(); ++i) { if (s.contains(i->frame)) { double target = i->frame; target = newSize.getStartFrame() + double(target - s.getStartFrame()) * ratio; SparseOneDimensionalModel::Point newPoint(*i); newPoint.frame = lrint(target); command->deletePoint(*i); command->addPoint(newPoint); } } finish(command); }
void TimeInstantLayer::moveSelection(Selection s, size_t newStartFrame) { if (!m_model) return; SparseOneDimensionalModel::EditCommand *command = new SparseOneDimensionalModel::EditCommand(m_model, tr("Drag Selection")); SparseOneDimensionalModel::PointList points = m_model->getPoints(s.getStartFrame(), s.getEndFrame()); for (SparseOneDimensionalModel::PointList::iterator i = points.begin(); i != points.end(); ++i) { if (s.contains(i->frame)) { SparseOneDimensionalModel::Point newPoint(*i); newPoint.frame = i->frame + newStartFrame - s.getStartFrame(); command->deletePoint(*i); command->addPoint(newPoint); } } finish(command); }
bool ScatterPlotWidget::tripSatisfiesConstraints(const KdTrip::Trip *trip, std::vector<SelectionGraphNode*> groupNodeConstraints, std::vector<SelectionGraphEdge*> groupEdgeConstraints){ //this set registers the nodes that are only support for edges set<int> alreadyProcessedNodes; //test edges vector<SelectionGraphEdge*>::iterator edgeIterator; for(edgeIterator = groupEdgeConstraints.begin() ; edgeIterator != groupEdgeConstraints.end() ; ++edgeIterator){ SelectionGraphEdge* edge = *edgeIterator; SelectionGraphNode* tail = edge->getTail(); SelectionGraphNode* head = edge->getHead(); alreadyProcessedNodes.insert(tail->getId()); alreadyProcessedNodes.insert(head->getId()); if(tripSatisfiesEdge(trip,edge)) return true; } //test nodes vector<SelectionGraphNode*>::iterator nodeIterator; for(nodeIterator = groupNodeConstraints.begin() ; nodeIterator != groupNodeConstraints.end() ; ++ nodeIterator){ SelectionGraphNode* node = *nodeIterator; if(alreadyProcessedNodes.count(node->getId()) > 0) continue; Selection* sel = node->getSelection(); if((sel->getType() == Selection::START || sel->getType() == Selection::START_AND_END) && sel->contains(QPointF(trip->pickup_lat,trip->pickup_long))){ return true; } else if((sel->getType() == Selection::END || sel->getType() == Selection::START_AND_END) && sel->contains(QPointF(trip->dropoff_lat,trip->dropoff_long))){ return true; } } // return false; }
Selection* SelectionRepository::getSelectionOn(float x, float y) { for (int i=selections.size()-1;i>=0;i--) { Selection *sel = selections.at(i); if (sel->contains(x,y)) return sel; } return NULL; }
void TimeInstantLayer::copy(View *v, Selection s, Clipboard &to) { if (!m_model) return; SparseOneDimensionalModel::PointList points = m_model->getPoints(s.getStartFrame(), s.getEndFrame()); for (SparseOneDimensionalModel::PointList::iterator i = points.begin(); i != points.end(); ++i) { if (s.contains(i->frame)) { Clipboard::Point point(i->frame, i->label); point.setReferenceFrame(alignToReference(v, i->frame)); to.addPoint(point); } } }
void TimeInstantLayer::deleteSelection(Selection s) { if (!m_model) return; SparseOneDimensionalModel::EditCommand *command = new SparseOneDimensionalModel::EditCommand(m_model, tr("Delete Selection")); SparseOneDimensionalModel::PointList points = m_model->getPoints(s.getStartFrame(), s.getEndFrame()); for (SparseOneDimensionalModel::PointList::iterator i = points.begin(); i != points.end(); ++i) { if (s.contains(i->frame)) command->deletePoint(*i); } finish(command); }