WIP on fixing up TrackerView

This commit is contained in:
Daniel Collin 2012-10-27 17:05:08 +02:00
parent d681e5bd20
commit 8a0024415e
5 changed files with 54 additions and 38 deletions

View File

@ -24,10 +24,18 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct TrackInfo
{
bool folded;
} TrackInfo;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct EditorData
{
struct sync_data syncData;
TrackViewInfo trackViewInfo;
TrackInfo trackInfo;
int trackOrder[8192];
int orderCount;
@ -38,7 +46,6 @@ static EditorData s_editorData;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static uint64_t fontIds[2];
int clientIndex = 0;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -65,7 +72,7 @@ void Editor_update()
{
Emgui_begin();
TrackView_render(&s_editorData.trackViewInfo);
TrackView_render(&s_editorData.trackViewInfo, &s_editorData.syncData);
Emgui_end();
}
@ -139,18 +146,12 @@ static void processCommands()
serverIndex = createTrack(&s_editorData, trackName);
// setup remap and send the keyframes to the demo
RemoteConnection_mapTrackName(trackName, clientIndex++);
RemoteConnection_mapTrackName(trackName);
RemoteConnection_sendKeyFrames(trackName, s_editorData.syncData.tracks[serverIndex]);
// send key-frames
//t = doc->tracks[serverIndex];
//for (i = 0; i < (int)t->num_keys; ++i)
// doc->clientSocket.sendSetKeyCommand(trackName, t->keys[i]);
break;
}
case SET_ROW:
{
RemoteConnection_recv((char*)&newRow, sizeof(int), 0);

View File

@ -34,7 +34,7 @@
#define SOCKET_ERROR -1
#endif
extern int clientIndex;
static int s_clientIndex;
int s_socket = INVALID_SOCKET;
int s_serverSocket = INVALID_SOCKET;
static bool s_paused = false;
@ -94,7 +94,7 @@ int findTrack(const char* name)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void RemoteConnection_mapTrackName(const char* name, int index)
void RemoteConnection_mapTrackName(const char* name)
{
int count = s_nameLookup.count;
@ -102,7 +102,7 @@ void RemoteConnection_mapTrackName(const char* name, int index)
return;
s_nameLookup.hashes[count] = quickHash(name);
s_nameLookup.ids[count] = index;
s_nameLookup.ids[count] = s_clientIndex++;
s_nameLookup.count++;
}
@ -220,7 +220,7 @@ void RemoteConnection_updateListner()
{
rlog(R_INFO, "Connected to %s\n", inet_ntoa(client.sin_addr));
s_socket = clientSocket;
clientIndex = 0;
s_clientIndex = 0;
RemoteConnection_sendPauseCommand(true);
//RemoteConnection_sendSetRowCommand(trackView->getEditRow());
}

View File

@ -28,5 +28,5 @@ void RemoteConnection_sendPauseCommand(bool pause);
void RemoteConnection_sendSaveCommand();
void RemoteConnection_sendKeyFrames(const char* name, struct sync_track* track);
void RemoteConnection_mapTrackName(const char* name, int index);
void RemoteConnection_mapTrackName(const char* name);

View File

@ -3,6 +3,9 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "../../sync/sync.h"
#include "../../sync/data.h"
#include "../../sync/track.h"
const int font_size = 12;
static int start_pos = -19;
@ -43,13 +46,14 @@ static void printRowNumbers(int x, int y, int rowCount, int rowOffset, int rowSp
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
static void renderChannel(Channel* channel, int startX, int startY, int startPos, int endPos)
static void renderChannel(struct sync_track* track, int startX, int startY, int startPos, int endPos)
{
uint x, y;
uint32_t color = Emgui_color32(40, 40, 40, 255);
Emgui_drawBorder(color, color, startX, startY, 64, 600);
Emgui_drawText(track->name, startX + 2, startY + 2, Emgui_color32(0xff, 0xff, 0xff, 0xff));
int y_offset = (startY + font_size) + font_size/2;
if (startPos < 0)
@ -68,24 +72,15 @@ static void renderChannel(Channel* channel, int startX, int startY, int startPos
int offset = startX + 6;
float value = 0.0f;
bool set = false;
int idx = sync_find_key(track, y);
if (y < channel->maxRange)
if (idx >= 0)
{
set = channel->set[y];
value = channel->values[y];
}
char temp[256];
value = track->keys[idx].value;
snprintf(temp, 256, "% .2f", value);
if (set)
{
char valueText[16];
if (value < 0.0f)
sprintf(valueText, "%0.8f", value);
else
sprintf(valueText, "%8.4f", value);
Emgui_drawText(valueText, offset, y_offset + (font_size / 2), Emgui_color32(255, 255, 255, 255));
Emgui_drawText(temp, offset, y_offset + (font_size / 2), Emgui_color32(255, 255, 255, 255));
}
else
{
@ -114,21 +109,39 @@ static void renderChannel(Channel* channel, int startX, int startY, int startPos
y_offset += font_size;
}
}
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void TrackView_render()
int doMax(int a, int b)
{
//uint i = 0; //, channel_count = 10;
if (b >= a)
return b;
else
return a;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void TrackView_render(const TrackViewInfo* viewInfo, struct sync_data* syncData)
{
// TODO: Calculate how many channels we can draw given the width
uint i = 0; //, channel_count = 10;
printRowNumbers(2, 42, 40, start_pos, font_size, 8);
if (syncData->num_tracks == 0)
return;
int num_tracks = syncData->num_tracks;
if (num_tracks > 4)
num_tracks = 4;
//i = 0;
//for (i = 0; i < channel_count; ++i)
// renderChannel(&s_testChannel, 40 + (i * 64), 20, start_pos, start_pos + 40);
for (i = 0; i < num_tracks; ++i)
renderChannel(syncData->tracks[i], 40 + (i * 64), 20, start_pos, start_pos + 40);
uint32_t color = Emgui_color32(127, 127, 127, 56);

View File

@ -2,6 +2,8 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct sync_data;
typedef struct TrackViewInfo
{
int scrollPosY;
@ -14,5 +16,5 @@ typedef struct TrackViewInfo
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void TrackView_init();
void TrackView_render(const TrackViewInfo* viewInfo);
void TrackView_render(const TrackViewInfo* viewInfo, struct sync_data* syncData);