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)
|
||||
{
|
||||
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("End Row", size, sizeY, &s_editorData.trackViewInfo.endRow, 0, 10000000, s_endRow);
|
||||
|
||||
printf("activeTrack %d\n", getActiveTrack());
|
||||
|
||||
Emgui_setDefaultFont();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
static void drawHorizonalSlider()
|
||||
{
|
||||
const int sizeY = s_editorData.trackViewInfo.windowSizeY;
|
||||
const int sizeX = s_editorData.trackViewInfo.windowSizeX;
|
||||
int track_size;
|
||||
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
|
||||
@ -308,7 +330,7 @@ static bool internalUpdate()
|
||||
|
||||
Emgui_begin();
|
||||
drawStatus();
|
||||
//drawHorizonalSlider();
|
||||
drawHorizonalSlider();
|
||||
|
||||
refresh = TrackView_render(&s_editorData.trackViewInfo, &s_editorData.trackData);
|
||||
Emgui_end();
|
||||
|
||||
@ -28,6 +28,7 @@ typedef struct Track
|
||||
struct Group* group;
|
||||
uint32_t color;
|
||||
|
||||
int width; // width in pixels of the track
|
||||
int index;
|
||||
bool hidden;
|
||||
bool folded;
|
||||
@ -43,6 +44,7 @@ typedef struct Group
|
||||
{
|
||||
const char* name;
|
||||
char* displayName;
|
||||
int width;
|
||||
|
||||
bool folded;
|
||||
union
|
||||
|
||||
@ -11,6 +11,15 @@
|
||||
#include "../../sync/data.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
|
||||
int track_size_folded = 20;
|
||||
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)
|
||||
return track_size_folded;
|
||||
|
||||
size = (Emgui_getTextSize(track->displayName) & 0xffff) + 31;
|
||||
size = emaxi(size, min_track_size);
|
||||
if (track->width == 0)
|
||||
{
|
||||
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 text_size = (Emgui_getTextSize(group->name) & 0xffff) + 40;
|
||||
|
||||
if (group->width == 0)
|
||||
group->width = (Emgui_getTextSize(group->name) & 0xffff) + 40;
|
||||
|
||||
if (group->folded)
|
||||
return track_size_folded;
|
||||
|
||||
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;
|
||||
}
|
||||
@ -395,7 +407,7 @@ static int renderGroup(Group* group, Track* startTrack, int posX, int* trackOffs
|
||||
|
||||
startTrackIndex = findStartTrack(group, startTrack);
|
||||
|
||||
size = getGroupSize(trackData, group, startTrackIndex);
|
||||
size = getGroupSize(group, startTrackIndex);
|
||||
|
||||
printf("size %d\n", size);
|
||||
|
||||
@ -444,7 +456,7 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
|
||||
int x_pos = 40;
|
||||
int end_track = 0;
|
||||
int i = 0;
|
||||
int track_size;
|
||||
//int track_size;
|
||||
int adjust_top_size;
|
||||
int mid_screen_y ;
|
||||
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
|
||||
|
||||
end_row = viewInfo->windowSizeY / font_size;
|
||||
y_end_border = viewInfo->windowSizeY - 32; // 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);
|
||||
y_end_border = viewInfo->windowSizeY - 48; // adjust to have some space at the end of the screen
|
||||
|
||||
// Shared info for all tracks
|
||||
|
||||
@ -482,23 +492,25 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
|
||||
if (trackData->groupCount == 0)
|
||||
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];
|
||||
Group* group = track->group;
|
||||
track_size = getTrackSize(trackData, track);
|
||||
//track_size = getTrackSize(trackData, track);
|
||||
|
||||
if (group->trackCount == 1)
|
||||
{
|
||||
x_pos += renderChannel(&info, x_pos, track, false); ++i;
|
||||
|
||||
if (x_pos + track_size >= viewInfo->windowSizeX)
|
||||
if (x_pos >= viewInfo->windowSizeX)
|
||||
{
|
||||
if (sel_track >= i)
|
||||
viewInfo->startTrack++;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
x_pos += renderChannel(&info, x_pos, track, false);
|
||||
|
||||
++i;
|
||||
}
|
||||
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)
|
||||
viewInfo->startTrack = emaxi(viewInfo->startTrack - 1, 0);
|
||||
|
||||
@ -514,3 +530,26 @@ bool TrackView_render(TrackViewInfo* viewInfo, TrackData* trackData)
|
||||
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 endRow;
|
||||
int startTrack;
|
||||
int startPixel;
|
||||
int smallFontId;
|
||||
int selectStartTrack;
|
||||
int selectStopTrack;
|
||||
@ -28,4 +29,5 @@ typedef struct TrackViewInfo
|
||||
|
||||
void TrackView_init();
|
||||
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
|
||||
{
|
||||
float x = (float)[theEvent deltaX];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user