diff grid.mm @ 39:df7c08faf541

MIDI, small improvements.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Thu, 11 Apr 2013 16:56:21 +0100
parents 0dfe9e0c01aa
children af06bb942d58
line wrap: on
line diff
--- a/grid.mm	Wed Apr 10 18:57:05 2013 +0100
+++ b/grid.mm	Thu Apr 11 16:56:21 2013 +0100
@@ -33,8 +33,9 @@
 
     pixSize.setCoord(ofGetWidth(), ofGetHeight());
  
-    //set scale and position to random
-    scale = 15500.0;
+    //set scale to random
+    double scaleLevel = (ofRandomf() + 1.00001)*0.5*paramBitDepth;
+    scale = pow(2.0, scaleLevel*paramBitDepth);
     
     smallestGridSpacing = 3; //pixels
     
@@ -60,11 +61,16 @@
     
     viewWasChanged();
     calculateInterpolateLevel();
+    
+    // log the starting zoom level
+    eventLogger.logEvent(ZOOM,centre, scale);
+    
 }
-
+//--------------------------------------------------------------
 template <typename T> int sgn(T val) {
     return (T(0) < val) - (val < T(0));
 }
+
 //--------------------------------------------------------------
 double Grid::calculateInterpolateLevel(){
     if(interpolateMode == INTERPOLATE_GRID){
@@ -80,6 +86,39 @@
     }
 }
 //--------------------------------------------------------------
+TwoVector Grid::getCoordForPresetSave(){ // bad functions get bad names
+    
+    // 
+    TwoVector coord = calculateCoordFromParams(getParams());
+    return coord;
+    
+}
+//--------------------------------------------------------------
+void Grid::setScale(double scaleLevel){
+    
+    // random
+    //double p = scaleLevel*paramBitDepth*paramsPerDim*0.5;
+    
+
+    if(scaleLevel > paramBitDepth || scaleLevel < 0){
+        cout << "Error: Bad scale level: " << scaleLevel << "\n";
+        scaleLevel = 5;
+    }
+    
+    scale = pow(2.0, scaleLevel*paramsPerDim);
+    
+    // update view size using centre
+    // and scale...
+    size.x = ofGetWidth()*scale; // zooming in, size gets SMALLER (view less)
+    size.y = ofGetHeight()*scale;
+    
+    
+    
+    viewWasChanged();
+    calculateInterpolateLevel();
+    eventLogger.logEvent(ZOOM, centre, scale);
+}
+//--------------------------------------------------------------
 void Grid::setInterpolation(interpolateModeType mode){
     interpolateMode = mode;
     viewWasChanged();
@@ -493,26 +532,26 @@
     
 
     if(size.x > maxValue*2.0){
-        cout << "maxZoom\n";
+
         maxZoom = true;
         size.x = maxValue*2.0;
         // need to also set y size back to
     }
     if(size.y > maxValue*2.0){
-        cout << "maxZoom\n";
+
         maxZoom = true;
         size.y = maxValue*2.0;
     }
     
     if(size.x < minValue){
-        cout << "min Zoom\n";
+
         minZoom = true;
         size.x = minValue;
         // need to also set y size back to
     }
     if(size.y < minValue){
         minZoom = true;
-        cout << "min Zoom\n";
+
         size.y = minValue;
     }