diff eventLogger.mm @ 44:a1e75b94c505

Snap to eval points. Double tap to go to preset (doesn't quite work yet). Coloured locks. Changed Question 2. Fixed some leaks.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Mon, 22 Apr 2013 18:32:34 +0100
parents 3d627dce8bf0
children
line wrap: on
line diff
--- a/eventLogger.mm	Fri Apr 19 18:50:04 2013 +0100
+++ b/eventLogger.mm	Mon Apr 22 18:32:34 2013 +0100
@@ -303,6 +303,25 @@
     eventsToDraw.clear();
 }
 //----------------------------------------------------------------------------
+vector<lEvent *> EventLogger::getEvaluationPointsInRange(const TwoVector min, const TwoVector max){
+    vector<lEvent *> results;
+    if(eventsToDraw.size() <= 0){
+        return results;
+        
+    }
+    
+    deque<lEvent>::iterator eiter;
+    deque<lEvent>::iterator preveiter;
+    for(eiter = --eventsToDraw.end(); eiter >= eventsToDraw.begin(); eiter--){
+        if((*eiter).eventType == EVALUATION_POINT){
+            if( ((*eiter).val1 > min.x ) && ((*eiter).val2 > min.y ) && ((*eiter).val1 < max.x ) && ((*eiter).val2 < max.y )){
+                results.push_back(&(*eiter));
+            }
+        }
+    }
+    return results;
+}
+//----------------------------------------------------------------------------
 void EventLogger::drawTrail(const TwoVector min, const TwoVector max){
     if(eventsToDraw.size() <= 0){
         return;
@@ -322,7 +341,11 @@
     for(eiter = --eventsToDraw.end(); eiter >= eventsToDraw.begin(); eiter--){
 
         //cout << i << '\n';
-        if( (*eiter).eventType == SCROLL || (*eiter).eventType == EVALUATION_POINT){
+        if( (*eiter).eventType == SCROLL
+           || (*eiter).eventType == EVALUATION_POINT
+           || (*eiter).eventType == RANDOMISE
+           || (*eiter).eventType == CHANGE_SLIDER)
+        {
             i++;
             if(i > SCROLL_TRAIL_LENGTH){
                 return;
@@ -542,6 +565,14 @@
         case SWAP_VIEW:
             theEvents.push_back(lEvent(evtType,0.0 , 0.0 , sliderID)); // slider ID is which view
             break;
+        // these cases are move events that need to be put in events to draw
+        case RANDOMISE:
+            theEvents.push_back(lEvent(evtType,centre.x,centre.y));
+            eventsToDraw.push_back(lEvent(evtType,centre.x,centre.y));
+            if(eventsToDraw.size() > SCROLL_TRAIL_LENGTH){
+                eventsToDraw.pop_front();
+            }
+            break;
         default:
             // default is just an event type with no values
             theEvents.push_back(lEvent(evtType));