Mercurial > hg > soniczoomios
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);