Implemented scroll view

Closes #104
This commit is contained in:
Daniel Collin 2014-09-16 18:00:36 +02:00
parent 4cff77a1bb
commit 88c36967a5
6 changed files with 50 additions and 21 deletions

View File

@ -1437,6 +1437,22 @@ static void onPrevNextKey(bool prevKey, enum Selection selection)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void onScrollView(enum ArrowDirection direction)
{
TrackViewInfo* viewInfo = getTrackViewInfo();
Track* t = &getTrackData()->tracks[getActiveTrack()];
int trackSize = Track_getSize(viewInfo, t);
if (direction == ARROW_RIGHT)
s_editorData.trackViewInfo.startPixel += trackSize;
else
s_editorData.trackViewInfo.startPixel -= trackSize;
Editor_updateTrackScroll();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void onFoldTrack(bool fold)
{
Track* t = &getTrackData()->tracks[getActiveTrack()];
@ -1611,8 +1627,8 @@ void Editor_menuEvent(int menuItem)
case EDITOR_MENU_ROWS_2X_DOWN : onRowStep(highlightRowStep * 2 , NO_SELECTION); break;
case EDITOR_MENU_PREV_BOOKMARK : onBookmarkDir(ARROW_UP, NO_SELECTION); break;
case EDITOR_MENU_NEXT_BOOKMARK : onBookmarkDir(ARROW_DOWN, NO_SELECTION); break;
case EDITOR_MENU_FIRST_TRACK : onTrackSide(ARROW_LEFT, true, NO_SELECTION); break;
case EDITOR_MENU_LAST_TRACK : onTrackSide(ARROW_RIGHT, true, NO_SELECTION); break;
case EDITOR_MENU_SCROLL_LEFT : onScrollView(ARROW_LEFT); break;
case EDITOR_MENU_SCROLL_RIGHT : onScrollView(ARROW_RIGHT); break;
case EDITOR_MENU_PREV_KEY : onPrevNextKey(true, NO_SELECTION); break;
case EDITOR_MENU_NEXT_KEY : onPrevNextKey(false, NO_SELECTION); break;
case EDITOR_MENU_FOLD_TRACK : onFoldTrack(true); break;

View File

@ -42,18 +42,18 @@ MenuDescriptor g_editMenu[] =
{ _T("Bias -10.0"), EDITOR_MENU_BIAS_N_100, 'g', 0, 0 },
{ _T("Bias -100.0"), EDITOR_MENU_BIAS_N_1000, 'h', 0, 0 },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Scale 1.01"), EDITOR_MENU_SCALE_101, 'q', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 1.1"), EDITOR_MENU_SCALE_11, 'w', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 1.2"), EDITOR_MENU_SCALE_12, 'e', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 5.0"), EDITOR_MENU_SCALE_5, 'r', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 10.0"), EDITOR_MENU_SCALE_100, 't', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 100.0"), EDITOR_MENU_SCALE_1000, 'y', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 0.99"), EDITOR_MENU_SCALE_099, 'a', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 0.9"), EDITOR_MENU_SCALE_09, 's', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 0.8"), EDITOR_MENU_SCALE_08, 'd', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 0.5"), EDITOR_MENU_SCALE_05, 'f', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 0.1"), EDITOR_MENU_SCALE_01, 'g', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 0.01"), EDITOR_MENU_SCALE_001, 'h', 0, EMGUI_KEY_SHIFT },
{ _T("Scale 1.01"), EDITOR_MENU_SCALE_101, 'q', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 1.1"), EDITOR_MENU_SCALE_11, 'w', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 1.2"), EDITOR_MENU_SCALE_12, 'e', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 5.0"), EDITOR_MENU_SCALE_5, 'r', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 10.0"), EDITOR_MENU_SCALE_100, 't', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 100.0"), EDITOR_MENU_SCALE_1000, 'y', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 0.99"), EDITOR_MENU_SCALE_099, 'a', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 0.9"), EDITOR_MENU_SCALE_09, 's', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 0.8"), EDITOR_MENU_SCALE_08, 'd', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 0.5"), EDITOR_MENU_SCALE_05, 'f', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 0.1"), EDITOR_MENU_SCALE_01, 'g', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T("Scale 0.01"), EDITOR_MENU_SCALE_001, 'h', EMGUI_KEY_SHIFT, EMGUI_KEY_SHIFT },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Interpolation"), EDITOR_MENU_INTERPOLATION, 'i', 0, 0 },
{ _T("Insert current value"), EDITOR_MENU_ENTER_CURRENT_V,EMGUI_KEY_ENTER,0, 0 },
@ -65,7 +65,7 @@ MenuDescriptor g_editMenu[] =
MenuDescriptor g_viewMenu[] =
{
{ _T("Start/Stop Playback"), EDITOR_MENU_PLAY, EMGUI_KEY_SPACE, 0, 0 },
{ _T("Start Loop Playback"), EDITOR_MENU_PLAY_LOOP, EMGUI_KEY_SPACE, 0, EMGUI_KEY_CTRL },
{ _T("Start Loop Playback"), EDITOR_MENU_PLAY_LOOP, EMGUI_KEY_SPACE, EMGUI_KEY_CTRL, EMGUI_KEY_CTRL },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Jump 8 rows up"), EDITOR_MENU_ROWS_UP, EMGUI_KEY_ARROW_UP, EMGUI_KEY_ALT, EMGUI_KEY_ALT },
{ _T("Jump 8 rows down"), EDITOR_MENU_ROWS_DOWN, EMGUI_KEY_ARROW_DOWN, EMGUI_KEY_ALT, EMGUI_KEY_ALT },
@ -73,11 +73,12 @@ MenuDescriptor g_viewMenu[] =
{ _T("Jump 16 rows down"), EDITOR_MENU_ROWS_2X_DOWN, EMGUI_KEY_PAGE_DOWN, 0, 0 },
{ _T("Jump to previous bookmark"), EDITOR_MENU_PREV_BOOKMARK, EMGUI_KEY_ARROW_UP, EMGUI_KEY_COMMAND, EMGUI_KEY_ALT | EMGUI_KEY_CTRL },
{ _T("Jump to next bookmark"), EDITOR_MENU_NEXT_BOOKMARK, EMGUI_KEY_ARROW_DOWN, EMGUI_KEY_COMMAND, EMGUI_KEY_ALT | EMGUI_KEY_CTRL },
{ _T("Jump to first track"), EDITOR_MENU_FIRST_TRACK, EMGUI_KEY_ARROW_LEFT, EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T("Jump to last track"), EDITOR_MENU_LAST_TRACK, EMGUI_KEY_ARROW_RIGHT, EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T("Jump to previous key"), EDITOR_MENU_PREV_KEY, EMGUI_KEY_ARROW_UP, EMGUI_KEY_CTRL, EMGUI_KEY_CTRL },
{ _T("Jump to next key"), EDITOR_MENU_NEXT_KEY, EMGUI_KEY_ARROW_DOWN, EMGUI_KEY_CTRL, EMGUI_KEY_CTRL },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Scroll view Right"), EDITOR_MENU_SCROLL_RIGHT, EMGUI_KEY_ARROW_RIGHT, EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T("Scroll view Left"), EDITOR_MENU_SCROLL_LEFT, EMGUI_KEY_ARROW_LEFT, EMGUI_KEY_COMMAND, EMGUI_KEY_CTRL },
{ _T(""), EDITOR_MENU_SEPARATOR, 0, 0, 0 },
{ _T("Fold track"), EDITOR_MENU_FOLD_TRACK, EMGUI_KEY_ARROW_LEFT, EMGUI_KEY_ALT, EMGUI_KEY_ALT },
{ _T("Unfold track"), EDITOR_MENU_UNFOLD_TRACK, EMGUI_KEY_ARROW_RIGHT, EMGUI_KEY_ALT, EMGUI_KEY_ALT },
{ _T("Fold group"), EDITOR_MENU_FOLD_GROUP, EMGUI_KEY_ARROW_LEFT, EMGUI_KEY_ALT | EMGUI_KEY_CTRL, EMGUI_KEY_ALT | EMGUI_KEY_CTRL },

View File

@ -74,14 +74,14 @@ enum
EDITOR_MENU_ROW_DOWN,
EDITOR_MENU_TRACK_LEFT,
EDITOR_MENU_TRACK_RIGHT,
EDITOR_MENU_SCROLL_LEFT,
EDITOR_MENU_SCROLL_RIGHT,
EDITOR_MENU_ROWS_DOWN,
EDITOR_MENU_ROWS_UP,
EDITOR_MENU_ROWS_2X_DOWN,
EDITOR_MENU_ROWS_2X_UP,
EDITOR_MENU_PREV_BOOKMARK,
EDITOR_MENU_NEXT_BOOKMARK,
EDITOR_MENU_FIRST_TRACK,
EDITOR_MENU_LAST_TRACK,
EDITOR_MENU_PREV_KEY,
EDITOR_MENU_NEXT_KEY,
EDITOR_MENU_FOLD_TRACK,

View File

@ -321,6 +321,13 @@ static int getTrackSize(TrackViewInfo* viewInfo, Track* track)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int Track_getSize(TrackViewInfo* viewInfo, Track* track)
{
return getTrackSize(viewInfo, track);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int getGroupSize(TrackViewInfo* viewInfo, Group* group, int startTrack)
{
int i, size = 0, count = group->trackCount;

View File

@ -6,6 +6,7 @@
struct TrackData;
struct TrackViewInfo;
struct Track;
typedef struct TrackViewInfo
{
@ -28,6 +29,10 @@ typedef struct TrackViewInfo
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int Track_getSize(TrackViewInfo* viewInfo, struct Track* track);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void TrackView_init();
bool TrackView_render(TrackViewInfo* viewInfo, struct TrackData* trackData);
int TrackView_getWidth(TrackViewInfo* viewInfo, struct TrackData* trackData);

View File

@ -552,8 +552,8 @@ LRESULT CALLBACK WndProc(HWND window, UINT message, WPARAM wParam, LPARAM lParam
case EDITOR_MENU_ROWS_2X_DOWN:
case EDITOR_MENU_PREV_BOOKMARK:
case EDITOR_MENU_NEXT_BOOKMARK:
case EDITOR_MENU_FIRST_TRACK:
case EDITOR_MENU_LAST_TRACK:
case EDITOR_MENU_SCROLL_LEFT:
case EDITOR_MENU_SCROLL_RIGHT:
case EDITOR_MENU_PREV_KEY:
case EDITOR_MENU_NEXT_KEY:
case EDITOR_MENU_FOLD_TRACK: