diff grid.h @ 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 b91a1859829a
children 1e266647840d
line wrap: on
line diff
--- a/grid.h	Fri Apr 19 18:50:04 2013 +0100
+++ b/grid.h	Mon Apr 22 18:32:34 2013 +0100
@@ -19,13 +19,12 @@
 using namespace std;
 class Preset;
 
-
-
 class Grid {
     
 public:
     bool snapped;
-    
+    bool automatedMovement;
+    bool presetWasTapped;
     Hilbert hilbert;
     
     Grid();
@@ -34,6 +33,8 @@
     void move(TwoVector moveP); // shift view by pixels
     void zoom(float factor);
 
+    void tap(TwoVector pixel); // user has tapped a point
+    
     typedef enum{NO_INTERPOLATION, INTERPOLATE_GRID, INTERPOLATE_PRESET} interpolateModeType;
     interpolateModeType interpolateMode;
     void snapCheck();
@@ -49,11 +50,16 @@
     void setMinZoom();
     void setMaxZoom();
     void setInterpolation(interpolateModeType mode);
+    
+    Preset * getClosestPresetOf(vector<Preset *> closePresets);
+    void interpolateTo(TwoVector coord);
     // HILBERT now does each coord for this
     vector<int> calculateParamsFromCoord(TwoVector coord);
     TwoVector calculateCoordFromParams(vector<int> params);
     vector<int> calculateInterpolatedParamsFromCoord(TwoVector coord);
     TwoVector coordToPixel(TwoVector coord);
+    TwoVector pixelToCoord(TwoVector pixel);
+    
     void setScale(double scaleLevel);
     // the inverse stuff
     void setParams(vector<int>);
@@ -81,7 +87,7 @@
     TwoVector snapCentre;
     TwoVector snapDist; // number of pixels to snap to GUI
     Preset * closestPreset; // pointer to the currently selected (snapped to ) preset.. NULL if none.
-    
+    Preset * tappedPreset; // pointer to currently highlighted (tapped) 
     bool maxZoom, minZoom;
 
     vector<int> midiCC; // the actual params
@@ -103,6 +109,7 @@
     void setCoord(TwoVector coord);
     void drawCrossHairs();
     
+    
     double calculateInterpolateLevel();
     vector<int> interpVector(vector<int> upper, vector<int> lower, float frac);
     vector<int> interpHilbert(int bitlevel, TwoVector coord);