Latest
This commit is contained in:
parent
447a86b2b1
commit
bb784965d5
@ -56,6 +56,20 @@ static inline struct sync_track** getTracks()
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static inline TrackViewInfo* getTrackViewInfo()
|
||||||
|
{
|
||||||
|
return &s_editorData.trackViewInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static inline TrackData* getTrackData()
|
||||||
|
{
|
||||||
|
return &s_editorData.trackData;
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
static inline void setActiveTrack(int track)
|
static inline void setActiveTrack(int track)
|
||||||
{
|
{
|
||||||
const int current_track = s_editorData.trackData.activeTrack;
|
const int current_track = s_editorData.trackData.activeTrack;
|
||||||
@ -281,22 +295,30 @@ static void drawStatus()
|
|||||||
size += drawNameValue("Start Row", size, sizeY, &s_editorData.trackViewInfo.startRow, 0, 10000000, s_startRow);
|
size += drawNameValue("Start Row", size, sizeY, &s_editorData.trackViewInfo.startRow, 0, 10000000, s_startRow);
|
||||||
size += drawNameValue("End Row", size, sizeY, &s_editorData.trackViewInfo.endRow, 0, 10000000, s_endRow);
|
size += drawNameValue("End Row", size, sizeY, &s_editorData.trackViewInfo.endRow, 0, 10000000, s_endRow);
|
||||||
|
|
||||||
|
printf("activeTrack %d\n", getActiveTrack());
|
||||||
|
|
||||||
Emgui_setDefaultFont();
|
Emgui_setDefaultFont();
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/*
|
|
||||||
static void drawHorizonalSlider()
|
static void drawHorizonalSlider()
|
||||||
{
|
{
|
||||||
const int sizeY = s_editorData.trackViewInfo.windowSizeY;
|
int track_size;
|
||||||
const int sizeX = s_editorData.trackViewInfo.windowSizeX;
|
TrackViewInfo* info = getTrackViewInfo();
|
||||||
|
const int old_start = s_editorData.trackViewInfo.startTrack;
|
||||||
|
const int total_track_width = TrackView_getWidth(getTrackViewInfo(), getTrackData());
|
||||||
|
|
||||||
static int value = 0;
|
track_size = emaxi(total_track_width - info->windowSizeX, 0) / 128;
|
||||||
|
|
||||||
Emgui_slider(sizeX - 20, 2, 14, sizeY - 20, 0, 40, EMGUI_SLIDERDIR_VERTICAL, 1, &value);
|
Emgui_slider(0, info->windowSizeY - 36, info->windowSizeX, 14, 0, track_size, EMGUI_SLIDERDIR_HORIZONTAL, 1,
|
||||||
|
&s_editorData.trackViewInfo.startPixel);
|
||||||
|
|
||||||
|
if (old_start != s_editorData.trackViewInfo.startTrack)
|
||||||
|
{
|
||||||
|
setActiveTrack(s_editorData.trackViewInfo.startTrack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// In some cases we need an extra update in case some controls has been re-arranged in such fashion so
|
// In some cases we need an extra update in case some controls has been re-arranged in such fashion so
|
||||||
@ -308,7 +330,7 @@ static bool internalUpdate()
|
|||||||
|
|
||||||
Emgui_begin();
|
Emgui_begin();
|
||||||
drawStatus();
|
drawStatus();
|
||||||
//drawHorizonalSlider();
|
drawHorizonalSlider();
|
||||||
|
|
||||||
refresh = TrackView_render(&s_editorData.trackViewInfo, &s_editorData.trackData);
|
refresh = TrackView_render(&s_editorData.trackViewInfo, &s_editorData.trackData);
|
||||||
Emgui_end();
|
Emgui_end();
|
||||||
|
|||||||
@ -28,6 +28,7 @@ typedef struct Track
|
|||||||
struct Group* group;
|
struct Group* group;
|
||||||
uint32_t color;
|
uint32_t color;
|
||||||
|
|
||||||
|
int width; // width in pixels of the track
|
||||||
int index;
|
int index;
|
||||||
bool hidden;
|
bool hidden;
|
||||||
bool folded;
|
bool folded;
|
||||||
@ -43,6 +44,7 @@ typedef struct Group
|
|||||||
{
|
{
|
||||||
const char* name;
|
const char* name;
|
||||||
char* displayName;
|
char* displayName;
|
||||||
|
int width;
|
||||||
|
|
||||||
bool folded;
|
bool folded;
|
||||||
union
|
union
|
||||||
|
|||||||
@ -11,6 +11,15 @@
|
|||||||
#include "../../sync/data.h"
|
#include "../../sync/data.h"
|
||||||
#include "../../sync/track.h"
|
#include "../../sync/track.h"
|
||||||
|
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
#include <OpenGL/OpenGL.h>
|
||||||
|
#include <OpenGL/gl.h>
|
||||||
|
#else
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
#include <gl/gl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define font_size 8
|
#define font_size 8
|
||||||
int track_size_folded = 20;
|
int track_size_folded = 20;
|
||||||
int min_track_size = 100;
|
int min_track_size = 100;
|
||||||
@ -229,33 +238,36 @@ static int findStartTrack(Group* group, Track* startTrack)
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
static int getTrackSize(TrackData* trackData, Track* track)
|
static int getTrackSize(Track* track)
|
||||||
{
|
{
|
||||||
int size = 0;
|
|
||||||
|
|
||||||
if (track->folded)
|
if (track->folded)
|
||||||
return track_size_folded;
|
return track_size_folded;
|
||||||
|
|
||||||
size = (Emgui_getTextSize(track->displayName) & 0xffff) + 31;
|
if (track->width == 0)
|
||||||
size = emaxi(size, min_track_size);
|
{
|
||||||
|
track->width = (Emgui_getTextSize(track->displayName) & 0xffff) + 31;
|
||||||
|
track->width = emaxi(track->width, min_track_size);
|
||||||
|
}
|
||||||
|
|
||||||
return size;
|
return track->width;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int getGroupSize(TrackData* trackData, Group* group, int startTrack)
|
int getGroupSize(Group* group, int startTrack)
|
||||||
{
|
{
|
||||||
int i, size = 0, count = group->trackCount;
|
int i, size = 0, count = group->trackCount;
|
||||||
int text_size = (Emgui_getTextSize(group->name) & 0xffff) + 40;
|
|
||||||
|
if (group->width == 0)
|
||||||
|
group->width = (Emgui_getTextSize(group->name) & 0xffff) + 40;
|
||||||
|
|
||||||
if (group->folded)
|
if (group->folded)
|
||||||
return track_size_folded;
|
return track_size_folded;
|
||||||
|
|
||||||
for (i = startTrack; i < count; ++i)
|
for (i = startTrack; i < count; ++i)
|
||||||
size += getTrackSize(trackData, group->t.tracks[i]);
|
size += getTrackSize(group->t.tracks[i]);
|
||||||
|
|
||||||
size = emaxi(size, text_size);
|
size = emaxi(size, group->width);
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
@ -395,7 +407,7 @@ static int renderGroup(Group* group, Track* startTrack, int posX, int* trackOffs
|
|||||||
|
|
||||||
startTrackIndex = findStartTrack(group, startTrack);
|
startTrackIndex = findStartTrack(group, startTrack);
|
||||||
|
|
||||||
size = getGroupSize(trackData, group, startTrackIndex);
|
size = getGroupSize(group, startTrackIndex);
|
||||||
|
|
||||||
printf("size %d\n", size);
|
printf("size %d\n", size);
|
||||||
|
|
||||||
@ -444,7 +456,7 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
|
|||||||
int x_pos = 40;
|
int x_pos = 40;
|
||||||
int end_track = 0;
|
int end_track = 0;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int track_size;
|
//int track_size;
|
||||||
int adjust_top_size;
|
int adjust_top_size;
|
||||||
int mid_screen_y ;
|
int mid_screen_y ;
|
||||||
int y_pos_row, end_row, y_end_border;
|
int y_pos_row, end_row, y_end_border;
|
||||||
@ -460,9 +472,7 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
|
|||||||
// TODO: Calculate how many channels we can draw given the width
|
// TODO: Calculate how many channels we can draw given the width
|
||||||
|
|
||||||
end_row = viewInfo->windowSizeY / font_size;
|
end_row = viewInfo->windowSizeY / font_size;
|
||||||
y_end_border = viewInfo->windowSizeY - 32; // adjust to have some space at the end of the screen
|
y_end_border = viewInfo->windowSizeY - 48; // adjust to have some space at the end of the screen
|
||||||
|
|
||||||
printRowNumbers(2, adjust_top_size, end_row, y_pos_row, font_size, 8, y_end_border);
|
|
||||||
|
|
||||||
// Shared info for all tracks
|
// Shared info for all tracks
|
||||||
|
|
||||||
@ -482,23 +492,25 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
|
|||||||
if (trackData->groupCount == 0)
|
if (trackData->groupCount == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (i = start_track, end_track = (int)trackData->syncData.num_tracks; i < end_track; )
|
for (i = start_track, end_track = trackData->syncData.num_tracks; i < end_track; )
|
||||||
{
|
{
|
||||||
Track* track = &trackData->tracks[i];
|
Track* track = &trackData->tracks[i];
|
||||||
Group* group = track->group;
|
Group* group = track->group;
|
||||||
track_size = getTrackSize(trackData, track);
|
//track_size = getTrackSize(trackData, track);
|
||||||
|
|
||||||
if (group->trackCount == 1)
|
if (group->trackCount == 1)
|
||||||
{
|
{
|
||||||
x_pos += renderChannel(&info, x_pos, track, false); ++i;
|
if (x_pos >= viewInfo->windowSizeX)
|
||||||
|
|
||||||
if (x_pos + track_size >= viewInfo->windowSizeX)
|
|
||||||
{
|
{
|
||||||
if (sel_track >= i)
|
if (sel_track >= i)
|
||||||
viewInfo->startTrack++;
|
viewInfo->startTrack++;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
x_pos += renderChannel(&info, x_pos, track, false);
|
||||||
|
|
||||||
|
++i;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -506,6 +518,10 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Emgui_setDefaultFont();
|
||||||
|
|
||||||
|
printRowNumbers(2, adjust_top_size, end_row, y_pos_row, font_size, 8, y_end_border);
|
||||||
|
|
||||||
if (sel_track < start_track)
|
if (sel_track < start_track)
|
||||||
viewInfo->startTrack = emaxi(viewInfo->startTrack - 1, 0);
|
viewInfo->startTrack = emaxi(viewInfo->startTrack - 1, 0);
|
||||||
|
|
||||||
@ -514,3 +530,26 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
|
|||||||
return s_needsUpdate;
|
return s_needsUpdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int TrackView_getWidth(TrackViewInfo* viewInfo, struct TrackData* trackData)
|
||||||
|
{
|
||||||
|
int i, size = 0, group_count = trackData->groupCount;
|
||||||
|
|
||||||
|
if (trackData->groupCount == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (i = 0; i < group_count; ++i)
|
||||||
|
{
|
||||||
|
Group* group = &trackData->groups[i];
|
||||||
|
|
||||||
|
if (group->trackCount == 1)
|
||||||
|
size += getTrackSize(group->t.track);
|
||||||
|
else
|
||||||
|
size += getGroupSize(group, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@ typedef struct TrackViewInfo
|
|||||||
int startRow;
|
int startRow;
|
||||||
int endRow;
|
int endRow;
|
||||||
int startTrack;
|
int startTrack;
|
||||||
|
int startPixel;
|
||||||
int smallFontId;
|
int smallFontId;
|
||||||
int selectStartTrack;
|
int selectStartTrack;
|
||||||
int selectStopTrack;
|
int selectStopTrack;
|
||||||
@ -28,4 +29,5 @@ typedef struct TrackViewInfo
|
|||||||
|
|
||||||
void TrackView_init();
|
void TrackView_init();
|
||||||
bool TrackView_render(TrackViewInfo* viewInfo, struct TrackData* trackData);
|
bool TrackView_render(TrackViewInfo* viewInfo, struct TrackData* trackData);
|
||||||
|
int TrackView_getWidth(TrackViewInfo* viewInfo, struct TrackData* trackData);
|
||||||
|
|
||||||
|
|||||||
@ -148,6 +148,20 @@ NSOpenGLContext* g_context = 0;
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
- (void)mouseDragged:(NSEvent *)event
|
||||||
|
{
|
||||||
|
NSWindow* window = [self window];
|
||||||
|
NSRect originalFrame = [window frame];
|
||||||
|
NSPoint location = [window mouseLocationOutsideOfEventStream];
|
||||||
|
NSRect adjustFrame = [NSWindow contentRectForFrameRect: originalFrame styleMask: NSTitledWindowMask];
|
||||||
|
|
||||||
|
Emgui_setMousePos((int)location.x, (int)adjustFrame.size.height - (int)location.y);
|
||||||
|
Editor_update();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
- (void)scrollWheel:(NSEvent *)theEvent
|
- (void)scrollWheel:(NSEvent *)theEvent
|
||||||
{
|
{
|
||||||
float x = (float)[theEvent deltaX];
|
float x = (float)[theEvent deltaX];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user