Moved tracker ui code to TrackView.c/h
This commit is contained in:
parent
c4cd4355d8
commit
52fbdd93de
@ -1,27 +1,11 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <Emgui.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <Emgui.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
|
||||||
#include "Dialog.h"
|
#include "Dialog.h"
|
||||||
#include "Editor.h"
|
#include "Editor.h"
|
||||||
#include "LoadSave.h"
|
#include "LoadSave.h"
|
||||||
|
#include "TrackView.h"
|
||||||
typedef struct RETrack
|
|
||||||
{
|
|
||||||
char* name;
|
|
||||||
} RETrack;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
typedef struct Editor
|
|
||||||
{
|
|
||||||
RETrack tracks[64]; // temporary max level
|
|
||||||
int windowWidth;
|
|
||||||
int windowHeight;
|
|
||||||
int trackCount;
|
|
||||||
int currentRow;
|
|
||||||
} Editor;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@ -35,184 +19,33 @@ typedef struct Editor
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
typedef struct Channel
|
|
||||||
{
|
|
||||||
char name[512];
|
|
||||||
float values[1000];
|
|
||||||
bool set[1000];
|
|
||||||
int maxRange;
|
|
||||||
|
|
||||||
} Channel;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
static uint64_t fontIds[2];
|
static uint64_t fontIds[2];
|
||||||
const int font_size = 12;
|
static TrackViewInfo s_trackViewInfo;
|
||||||
int start_pos = -19;
|
|
||||||
static Channel s_testChannel;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void Editor_create()
|
void Editor_create()
|
||||||
{
|
{
|
||||||
Emgui_create("foo");
|
Emgui_create("foo");
|
||||||
fontIds[0] = Emgui_loadFont("/Users/daniel/Library/Fonts/MicroKnight_v1.0.ttf", 11.0f);
|
//fontIds[0] = Emgui_loadFont("/Users/daniel/Library/Fonts/MicroKnight_v1.0.ttf", 11.0f);
|
||||||
memset(&s_testChannel, 0, sizeof(Channel));
|
fontIds[0] = Emgui_loadFont(FONT_PATH "Arial.ttf", 11.0f);
|
||||||
|
|
||||||
s_testChannel.values[0] = 12.0f;
|
memset(&s_trackViewInfo, 0, sizeof(s_trackViewInfo));
|
||||||
s_testChannel.set[0] = true;
|
|
||||||
|
|
||||||
s_testChannel.values[1] = 0.00120f;
|
|
||||||
s_testChannel.set[1] = true;
|
|
||||||
|
|
||||||
s_testChannel.values[2] = 0.120f;
|
|
||||||
s_testChannel.set[2] = true;
|
|
||||||
|
|
||||||
s_testChannel.values[4] = 100.120f;
|
|
||||||
s_testChannel.set[4] = true;
|
|
||||||
|
|
||||||
s_testChannel.maxRange = 1000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void Editor_init()
|
void Editor_init()
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
memset(&s_editor, 0, sizeof(Editor));
|
|
||||||
|
|
||||||
s_editor.tracks[0].name = strdup("DemoTrack");
|
|
||||||
s_editor.tracks[1].name = strdup("CameraTestZ");
|
|
||||||
s_editor.tracks[2].name = strdup("TestName 3");
|
|
||||||
s_editor.tracks[3].name = strdup("TestName 4");
|
|
||||||
s_editor.trackCount = 4;
|
|
||||||
|
|
||||||
s_editor.windowWidth = 800;
|
|
||||||
s_editor.windowHeight = 600;
|
|
||||||
|
|
||||||
RocketGui_init();
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
static void printRowNumbers(int x, int y, int rowCount, int rowOffset, int rowSpacing, int maskBpm)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (rowOffset < 0)
|
|
||||||
{
|
|
||||||
y += rowSpacing * -rowOffset;
|
|
||||||
rowOffset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < rowCount; ++i)
|
|
||||||
{
|
|
||||||
char rowText[16];
|
|
||||||
sprintf(rowText, "%04d\n", rowOffset);
|
|
||||||
|
|
||||||
|
|
||||||
if (rowOffset % maskBpm)
|
|
||||||
Emgui_drawText(rowText, x, y, Emgui_color32(0xa0, 0xa0, 0xa0, 0xff));
|
|
||||||
else
|
|
||||||
Emgui_drawText(rowText, x, y, Emgui_color32(0xf0, 0xf0, 0xf0, 0xff));
|
|
||||||
|
|
||||||
y += rowSpacing;
|
|
||||||
rowOffset++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
void renderChannel(Channel* channel, 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);
|
|
||||||
int y_offset = (startY + font_size) + font_size/2;
|
|
||||||
|
|
||||||
if (startPos < 0)
|
|
||||||
{
|
|
||||||
y_offset = ((startY + font_size * -startPos) + font_size) + font_size/2;
|
|
||||||
startPos = 0;
|
|
||||||
endPos = 40;
|
|
||||||
}
|
|
||||||
|
|
||||||
//int count = 0;
|
|
||||||
|
|
||||||
//float values[40];
|
|
||||||
|
|
||||||
for (y = startPos; y < endPos; ++y)
|
|
||||||
{
|
|
||||||
int offset = startX + 6;
|
|
||||||
|
|
||||||
float value = 0.0f;
|
|
||||||
bool set = false;
|
|
||||||
|
|
||||||
if (y < channel->maxRange)
|
|
||||||
{
|
|
||||||
set = channel->set[y];
|
|
||||||
value = channel->values[y];
|
|
||||||
}
|
|
||||||
|
|
||||||
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));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int points[64];
|
|
||||||
int* points_ptr = (int*)&points[0];
|
|
||||||
|
|
||||||
for (x = 0; x < 6; ++x)
|
|
||||||
{
|
|
||||||
points_ptr[0] = offset + 0;
|
|
||||||
points_ptr[1] = y_offset;
|
|
||||||
points_ptr[2] = offset + 2;
|
|
||||||
points_ptr[3] = y_offset;
|
|
||||||
points_ptr[4] = offset + 4;
|
|
||||||
points_ptr[5] = y_offset;
|
|
||||||
|
|
||||||
points_ptr += 6;
|
|
||||||
offset += 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (y & 7)
|
|
||||||
Emgui_drawDots(0x004f4f4f, (int*)&points[0], 18 * 2);
|
|
||||||
else
|
|
||||||
Emgui_drawDots(0x007f7f7f, (int*)&points[0], 18 * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
y_offset += font_size;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void Editor_update()
|
void Editor_update()
|
||||||
{
|
{
|
||||||
uint i = 0; //, channel_count = 10;
|
|
||||||
|
|
||||||
Emgui_begin();
|
Emgui_begin();
|
||||||
|
|
||||||
printRowNumbers(2, 42, 40, start_pos, font_size, 8);
|
TrackView_render(&s_trackViewInfo);
|
||||||
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
//for (i = 0; i < channel_count; ++i)
|
|
||||||
renderChannel(&s_testChannel, 40 + (i * 64), 20, start_pos, start_pos + 40);
|
|
||||||
|
|
||||||
uint32_t color = Emgui_color32(127, 127, 127, 56);
|
|
||||||
|
|
||||||
Emgui_fill(color, 0, 257, 800, font_size + 3);
|
|
||||||
|
|
||||||
Emgui_end();
|
Emgui_end();
|
||||||
}
|
}
|
||||||
@ -223,28 +56,17 @@ bool Editor_keyDown(int key)
|
|||||||
{
|
{
|
||||||
bool handled_key = true;
|
bool handled_key = true;
|
||||||
|
|
||||||
//printf("callBack %d\n", key);
|
|
||||||
|
|
||||||
switch (key)
|
switch (key)
|
||||||
{
|
{
|
||||||
case EMGUI_ARROW_DOWN : start_pos++; break;
|
case EMGUI_ARROW_DOWN : break;
|
||||||
case EMGUI_ARROW_UP : start_pos--; break;
|
case EMGUI_ARROW_UP : break;
|
||||||
default : handled_key = false; break;
|
default : handled_key = false; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (start_pos < -19)
|
// do edit here
|
||||||
start_pos = -19;
|
|
||||||
|
|
||||||
if (key == '1')
|
if (key == '1')
|
||||||
{
|
{
|
||||||
int offset = start_pos + 19;
|
|
||||||
printf("offset %d\n", offset);
|
|
||||||
s_testChannel.values[offset] = 2.0f;
|
|
||||||
s_testChannel.set[offset] = true;
|
|
||||||
|
|
||||||
if (offset > s_testChannel.maxRange)
|
|
||||||
s_testChannel.maxRange = offset;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,15 +77,10 @@ bool Editor_keyDown(int key)
|
|||||||
|
|
||||||
void Editor_timedUpdate()
|
void Editor_timedUpdate()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
static void onOpen()
|
static void onOpen()
|
||||||
{
|
{
|
||||||
LoadSave_loadRocketXMLDialog();
|
LoadSave_loadRocketXMLDialog();
|
||||||
@ -286,6 +103,5 @@ void Editor_menuEvent(int menuItem)
|
|||||||
|
|
||||||
void Editor_destroy()
|
void Editor_destroy()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
137
ogl_editor/src/TrackView.c
Normal file
137
ogl_editor/src/TrackView.c
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
#include "trackview.h"
|
||||||
|
#include <Emgui.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
const int font_size = 12;
|
||||||
|
static int start_pos = -19;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void TrackView_init()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static void printRowNumbers(int x, int y, int rowCount, int rowOffset, int rowSpacing, int maskBpm)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (rowOffset < 0)
|
||||||
|
{
|
||||||
|
y += rowSpacing * -rowOffset;
|
||||||
|
rowOffset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < rowCount; ++i)
|
||||||
|
{
|
||||||
|
char rowText[16];
|
||||||
|
sprintf(rowText, "%04d\n", rowOffset);
|
||||||
|
|
||||||
|
if (rowOffset % maskBpm)
|
||||||
|
Emgui_drawText(rowText, x, y, Emgui_color32(0xa0, 0xa0, 0xa0, 0xff));
|
||||||
|
else
|
||||||
|
Emgui_drawText(rowText, x, y, Emgui_color32(0xf0, 0xf0, 0xf0, 0xff));
|
||||||
|
|
||||||
|
y += rowSpacing;
|
||||||
|
rowOffset++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/*
|
||||||
|
static void renderChannel(Channel* channel, 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);
|
||||||
|
int y_offset = (startY + font_size) + font_size/2;
|
||||||
|
|
||||||
|
if (startPos < 0)
|
||||||
|
{
|
||||||
|
y_offset = ((startY + font_size * -startPos) + font_size) + font_size/2;
|
||||||
|
startPos = 0;
|
||||||
|
endPos = 40;
|
||||||
|
}
|
||||||
|
|
||||||
|
//int count = 0;
|
||||||
|
|
||||||
|
//float values[40];
|
||||||
|
|
||||||
|
for (y = startPos; y < endPos; ++y)
|
||||||
|
{
|
||||||
|
int offset = startX + 6;
|
||||||
|
|
||||||
|
float value = 0.0f;
|
||||||
|
bool set = false;
|
||||||
|
|
||||||
|
if (y < channel->maxRange)
|
||||||
|
{
|
||||||
|
set = channel->set[y];
|
||||||
|
value = channel->values[y];
|
||||||
|
}
|
||||||
|
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int points[64];
|
||||||
|
int* points_ptr = (int*)&points[0];
|
||||||
|
|
||||||
|
for (x = 0; x < 6; ++x)
|
||||||
|
{
|
||||||
|
points_ptr[0] = offset + 0;
|
||||||
|
points_ptr[1] = y_offset;
|
||||||
|
points_ptr[2] = offset + 2;
|
||||||
|
points_ptr[3] = y_offset;
|
||||||
|
points_ptr[4] = offset + 4;
|
||||||
|
points_ptr[5] = y_offset;
|
||||||
|
|
||||||
|
points_ptr += 6;
|
||||||
|
offset += 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (y & 7)
|
||||||
|
Emgui_drawDots(0x004f4f4f, (int*)&points[0], 18 * 2);
|
||||||
|
else
|
||||||
|
Emgui_drawDots(0x007f7f7f, (int*)&points[0], 18 * 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
y_offset += font_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void TrackView_render()
|
||||||
|
{
|
||||||
|
//uint i = 0; //, channel_count = 10;
|
||||||
|
|
||||||
|
printRowNumbers(2, 42, 40, start_pos, font_size, 8);
|
||||||
|
|
||||||
|
//i = 0;
|
||||||
|
|
||||||
|
//for (i = 0; i < channel_count; ++i)
|
||||||
|
// renderChannel(&s_testChannel, 40 + (i * 64), 20, start_pos, start_pos + 40);
|
||||||
|
|
||||||
|
uint32_t color = Emgui_color32(127, 127, 127, 56);
|
||||||
|
|
||||||
|
Emgui_fill(color, 0, 257, 800, font_size + 3);
|
||||||
|
}
|
||||||
|
|
||||||
18
ogl_editor/src/TrackView.h
Normal file
18
ogl_editor/src/TrackView.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
typedef struct TrackViewInfo
|
||||||
|
{
|
||||||
|
int scrollPosY;
|
||||||
|
int scrollPosX;
|
||||||
|
int windowSizeX;
|
||||||
|
int windowSizeY;
|
||||||
|
|
||||||
|
} TrackViewInfo;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void TrackView_init();
|
||||||
|
void TrackView_render(const TrackViewInfo* viewInfo);
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user