rocket/ogl_editor/src/TrackData.h
Konsta 'sooda' Hölttä 650bb4e01d ogl_editor: letter case fixes
Make it compile on linux where filenames are case sensitive
2013-06-23 15:42:22 +03:00

96 lines
2.4 KiB
C

#pragma once
#include <emgui/Types.h>
#include "../../sync/data.h"
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum
{
EDITOR_MAX_TRACKS = 16 * 1024,
EDITOR_MAX_BOOKMARKS = 32 * 1024,
};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum GroupType
{
GROUP_TYPE_TRACK,
GROUP_TYPE_GROUP,
};
struct Group;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct Track
{
char* displayName;
struct Group* group;
uint32_t color;
int width; // width in pixels of the track
int index;
bool hidden;
bool folded;
bool selected;
bool active;
} Track;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Grouping (notice that even one track without group becomes it own group to keep the code easier)
typedef struct Group
{
const char* name;
char* displayName;
int width;
bool folded;
union
{
Track* track;
Track** tracks;
} t;
enum GroupType type;
int trackCount;
} Group;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct TrackData
{
struct sync_data syncData;
Track tracks[EDITOR_MAX_TRACKS];
Group groups[EDITOR_MAX_TRACKS];
int* bookmarks;
int bookmarkCount;
int groupCount;
int activeTrack;
int lastColor;
int trackCount;
int startRow;
int endRow;
int highlightRowStep;
char* editText;
} TrackData;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool TrackData_hasBookmark(TrackData* trackData, int row);
void TrackData_toggleBookmark(TrackData* trackData, int row);
int TrackData_getNextBookmark(TrackData* trackData, int row);
int TrackData_getPrevBookmark(TrackData* trackData, int row);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Will get the get the track if it exists else create it
int TrackData_createGetTrack(TrackData* trackData, const char* name);
uint32_t TrackData_getNextColor(TrackData* trackData);
void TrackData_linkGroups(TrackData* trackData);
void TrackData_linkTrack(int index, const char* name, TrackData* trackData);
void TrackData_setActiveTrack(TrackData* trackData, int track);