diff eventLogger.mm @ 38:0dfe9e0c01aa

Evnt trails fit with uploads. Smooth button.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Wed, 10 Apr 2013 18:57:05 +0100
parents a42903c61558
children df7c08faf541
line wrap: on
line diff
--- a/eventLogger.mm	Tue Apr 09 17:14:31 2013 +0100
+++ b/eventLogger.mm	Wed Apr 10 18:57:05 2013 +0100
@@ -66,7 +66,7 @@
 
 }
 //---------------------------------------------------------------------------
-bool EventLogger::testConnection(){
+void EventLogger::testConnection(){
     Json::Value root;
     root["x"] = "y";
     cout << "testConnection\n";
@@ -268,9 +268,7 @@
 //---------------------------------------------------------------------------
 
 bool EventLogger::uploadEventLog(bool async){
-    // COMMENT THIS OUTRT   !!!!!!!!
-    theEvents.clear();
-    return false;
+
     // show indicator
     logUploadInProgress = true;
     cout << "^^^^^^^^  ATTEMPTING TO UPLOAD " << theEvents.size() << " EVENTS ^^^^^^^^ .\n";
@@ -294,7 +292,7 @@
     }
 }
 //----------------------------------------------------------------------------
-bool eventWasInRegion(vector<lEvent>::iterator eiter, TwoVector regionTopLeft, TwoVector regionBottomRight){
+bool eventWasInRegion(deque<lEvent>::iterator eiter, TwoVector regionTopLeft, TwoVector regionBottomRight){
     if( ((*eiter).val1 > regionTopLeft.x ) && ((*eiter).val2 > regionTopLeft.y ) && ((*eiter).val1 < regionBottomRight.x ) && ((*eiter).val2 < regionBottomRight.y )){
         return true;
     }else{
@@ -303,16 +301,27 @@
     
 }
 //----------------------------------------------------------------------------
+void EventLogger::clearTrail(){
+    eventsToDraw.clear();
+}
+//----------------------------------------------------------------------------
 void EventLogger::drawTrail(const TwoVector min, const TwoVector max){
-    // horribly inefficient
-    vector<lEvent>::iterator eiter;
-    vector<lEvent>::iterator preveiter;
+    if(eventsToDraw.size() <= 0){
+        return;
+        
+    }
+    deque<lEvent>::iterator eiter;
+    deque<lEvent>::iterator preveiter;
     int i = 0;
     
     
+    preveiter = --eventsToDraw.end();
+    TwoVector start = TwoVector(ofGetWidth()*0.5,ofGetHeight()*0.5);
+    TwoVector end = theGridView.coordToPixel(TwoVector((*preveiter).val1,(*preveiter).val2));
+    ofSetColor(255,255,255,96);
+    ofLine(start.x,start.y, end.x, end.y);
     
-    preveiter = theEvents.begin();
-    for(eiter = --theEvents.end(); eiter > theEvents.begin(); eiter--){
+    for(eiter = --eventsToDraw.end(); eiter >= eventsToDraw.begin(); eiter--){
 
         //cout << i << '\n';
         if( (*eiter).eventType == SCROLL || (*eiter).eventType == EVALUATION_POINT){
@@ -322,20 +331,12 @@
             }
             if(eventWasInRegion(eiter, min, max) || eventWasInRegion(preveiter, min, max)){
                 // draw a line between prev and this
-                if(preveiter != theEvents.begin()){
+                if(eiter != eventsToDraw.begin()){
                     TwoVector start = theGridView.coordToPixel(TwoVector((*preveiter).val1,(*preveiter).val2));
                     TwoVector end = theGridView.coordToPixel(TwoVector((*eiter).val1,(*eiter).val2));
                     ofSetColor(255,255,255,96);
                     ofLine(start.x,start.y, end.x, end.y);
                 
-                }else{
-                    // draw line from listen point to last evt
-                    TwoVector start = TwoVector(ofGetWidth()*0.5,ofGetHeight()*0.5);
-                    TwoVector end = theGridView.coordToPixel(TwoVector((*eiter).val1,(*eiter).val2));
-                    ofSetColor(255,255,255,96);
-                    ofLine(start.x,start.y, end.x, end.y);
-                    // draw ever growing listen point
-                    
                 }
             
             }
@@ -398,13 +399,26 @@
     int gap = newEvent.eventTime - previousEvent.eventTime;
     if(gap > 300){
         // log previous event as a evaluation point MAYBE TODO if previous event was logged as scroll chuck it out?
-        theEvents.push_back(lEvent(EVALUATION_POINT, previousEvent.val1, previousEvent.val2, gap));
+        lEvent evalEvt(EVALUATION_POINT, previousEvent.val1, previousEvent.val2, gap);
+        theEvents.push_back(evalEvt);
+        eventsToDraw.push_back(evalEvt);
+        if(eventsToDraw.size() > SCROLL_TRAIL_LENGTH){
+            eventsToDraw.pop_front();
+        }
         // and now new event as scroll
         theEvents.push_back(newEvent);
+        eventsToDraw.push_back(newEvent);
+        if(eventsToDraw.size() > SCROLL_TRAIL_LENGTH){
+            eventsToDraw.pop_front();
+        }
         eventCounter = 0;
 
     }else if(eventCounter >= EVENT_THIN_FACTOR){ // otherwise only record every Nth event
         theEvents.push_back(newEvent);
+        eventsToDraw.push_back(newEvent);
+        if(eventsToDraw.size() > SCROLL_TRAIL_LENGTH){
+            eventsToDraw.pop_front();
+        }
         eventCounter = 0;
         
     }