void ofxTLPage::mouseReleased(ofMouseEventArgs& args, long millis){ if(draggingInside){ for(int i = 0; i < headers.size(); i++){ headers[i]->mouseReleased(args); tracks[headers[i]->name]->_mouseReleased(args, millis); } draggingInside = false; timeline->setHoverTime(millis); } if(draggingSelectionRectangle && selectionRectangle.getArea() != 0){ if(!ofGetModifierSelection() ){ timeline->unselectAll(); } draggingSelectionRectangle = false; ofLongRange timeRange = ofLongRange(timeline->screenXToMillis(selectionRectangle.x), timeline->screenXToMillis(selectionRectangle.x+selectionRectangle.width)); for(int i = 0; i < headers.size(); i++){ ofRectangle trackBounds = tracks[headers[i]->name]->getDrawRect(); ofRange valueRange = ofRange(ofMap(selectionRectangle.y, trackBounds.y, trackBounds.y+trackBounds.height, 0.0, 1.0, true), ofMap(selectionRectangle.y+selectionRectangle.height, trackBounds.y, trackBounds.y+trackBounds.height, 0.0, 1.0, true)); if(valueRange.min != valueRange.max){ tracks[headers[i]->name]->regionSelected(timeRange, valueRange); } } } }
void ofxTLPage::mouseReleased(ofMouseEventArgs& args, long millis){ if(draggingInside){ for(int i = 0; i < headers.size(); i++){ headers[i]->mouseReleased(args); tracks[headers[i]->name]->_mouseReleased(args, millis); } draggingInside = false; timeline->setHoverTime(millis); } if(draggingSelectionRectangle && selectionRectangle.getArea() != 0){ if(!ofGetModifierSelection() ){ timeline->unselectAll(); } ofLongRange timeRange = ofLongRange(timeline->screenXToMillis(selectionRectangle.x), timeline->screenXToMillis(selectionRectangle.x+selectionRectangle.width)); for(int i = 0; i < headers.size(); i++){ ofRectangle trackBounds = tracks[headers[i]->name]->getDrawRect(); ofRange valueRange; //if we have a collapsed track if(trackBounds.height == 0){ //and the selection rect actual is over the track if(selectionRectangle.getMinY() < trackBounds.y && selectionRectangle.getMaxY() > trackBounds.y){ valueRange = ofRange(0,1.0); } else{ continue; } } else{ valueRange = ofRange(ofMap(selectionRectangle.getMinY(), trackBounds.y, trackBounds.y+trackBounds.height, 0.0, 1.0, true), ofMap(selectionRectangle.getMaxY(), trackBounds.y, trackBounds.y+trackBounds.height, 0.0, 1.0, true)); } if(valueRange.min != valueRange.max){ tracks[headers[i]->name]->regionSelected(timeRange, valueRange); } } } draggingSelectionRectangle = false; }