diff --git a/ogl_editor/src/TrackData.c b/ogl_editor/src/TrackData.c index 9f9ec19..943cf6a 100644 --- a/ogl_editor/src/TrackData.c +++ b/ogl_editor/src/TrackData.c @@ -1,6 +1,7 @@ #include "TrackData.h" #include "Commands.h" #include "rlog.h" +#include /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -40,7 +41,7 @@ static uint32_t s_colors[] = uint32_t TrackData_getNextColor(TrackData* trackData) { - return s_colors[(trackData->lastColor++) & 0x7]; + return s_colors[trackData->lastColor++ & 0x7]; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -84,7 +85,9 @@ static Group* findOrCreateGroup(const char* name, TrackData* trackData) group->name = strdup(name); group->displayName = strdup(name); group->displayName[strlen(name)-1] = 0; - group->trackCount = 0; + group->groupIndex = trackData->groupCount - 1; + + printf("creating group %s\n", name); return group; } @@ -114,6 +117,9 @@ void TrackData_linkTrack(int index, const char* name, TrackData* trackData) group->trackCount = 1; track->group = group; track->displayName = strdup(name); + + printf("Linking track %s to group %s\n", name, name); + return; } @@ -127,8 +133,10 @@ void TrackData_linkTrack(int index, const char* name, TrackData* trackData) else group->t.tracks = (Track**)realloc(group->t.tracks, sizeof(Track**) * (group->trackCount + 1)); - group->t.tracks[group->trackCount] = track; - group->trackCount++; + printf("Linking track %s to group %s\n", name, group_name); + + track->groupIndex = group->trackCount; + group->t.tracks[group->trackCount++] = track; track->group = group; track->displayName = strdup(&name[found + 1]); diff --git a/ogl_editor/src/TrackData.h b/ogl_editor/src/TrackData.h index 5d085f8..0942a29 100644 --- a/ogl_editor/src/TrackData.h +++ b/ogl_editor/src/TrackData.h @@ -31,6 +31,7 @@ typedef struct Track int width; // width in pixels of the track int index; + int groupIndex; bool hidden; bool folded; bool selected; @@ -56,6 +57,7 @@ typedef struct Group enum GroupType type; int trackCount; + int groupIndex; } Group; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/ogl_editor/src/TrackView.c b/ogl_editor/src/TrackView.c index b719a8f..438f76a 100644 --- a/ogl_editor/src/TrackView.c +++ b/ogl_editor/src/TrackView.c @@ -558,9 +558,9 @@ int TrackView_getScrolledTrack(TrackViewInfo* viewInfo, TrackData* trackData, in bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData) { struct TrackInfo info; - int start_track = 0; //viewInfo->startTrack; + int group_count; int x_pos = 128; - int end_track = 0; + //int end_track = 0; int i = 0; //int track_size; int adjust_top_size; @@ -612,13 +612,13 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData) //if (sel_track != trackData->activeTrack) // TrackData_setActiveTrack(trackData, sel_track); - for (i = start_track, end_track = trackData->syncData.num_tracks; i < end_track; ) + for (i = 0, group_count = trackData->groupCount; i < group_count; ++i) { - Track* track = &trackData->tracks[i]; - Group* group = track->group; + Group* group = &trackData->groups[i]; if (group->trackCount == 1) { + Track* track = group->t.track; int track_size = getTrackSize(viewInfo, track); if ((x_pos + track_size > 0) && (x_pos < viewInfo->windowSizeX)) @@ -630,11 +630,11 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData) } x_pos += track_size; - ++i; } else { - x_pos += renderGroup(group, track, x_pos, &i, info, trackData); + int temp; + x_pos += renderGroup(group, group->t.tracks[0], x_pos, &temp, info, trackData); } }