34#include <portability.h>
77 }
while (cur != list);
89 if (!list || !entry) {
93 nextEntry = entry->
next;
94 lastEntry = entry->
next == entry;
95 headEntry = list == entry;
101 if (freeUserData && entry->
userData) {
124 snprintf(buf, BUFSIZE,
"tracks/%s/%s/%s.png",
CategoryList->name,
146 const int BUFSIZE = 1024;
154 GfTrace(
"File %s has pb\n", buf);
157 trk =
ts->trackItf.trkBuild(buf);
163 snprintf(buf, BUFSIZE,
"%.2f m", tmp);
166 snprintf(buf, BUFSIZE,
"%.2f m", tmp);
176 ts->trackItf.trkShutdown();
183 const int BUFSIZE = 1024;
200 const int BUFSIZE = 1024;
219 const int BUFSIZE = 1024;
255 const int BUFSIZE = 1024;
258 snprintf(buf, BUFSIZE,
"tracks/%s/%s/%s.%s", category, trackName, trackName, TRKEXT);
264 GfTrace(
"File %s has pb\n", buf);
282 void *categoryHandle;
284 const int BUFSIZE = 1024;
287 snprintf(buf, BUFSIZE,
"data/tracks/%s.%s", category, TRKEXT);
290 if (categoryHandle) {
293 GfTrace(
"File %s has pb\n", buf);
309 trackCur = trackList;
310 for (i = 0; i < nbTrack && trackList; i++) {
314 if (strlen(trackCur->
dispName) == 0) {
315 GfTrace(
"RmTrackSelect: Skipping track %s/%s without a readable definition\n", category, trackCur->
name);
318 trackCur = nextTrack;
321 return trackList ? trackList->
next : NULL;
334 const char *defaultTrack;
335 const char *defaultCategory;
338 int Xpos, Ypos, DX, DY;
340 const int BUFSIZE = 1024;
343 bool foundCategory =
false;
344 bool foundTrack =
false;
351 GfTrace(
"RmTrackSelect: No track category available\n");
361 if (strlen(CatCur->
dispName) == 0) {
362 GfTrace(
"RmTrackSelect: Skipping track category %s without a readable definition\n", CatCur->
name);
364 CatCur = nextCategory;
369 snprintf(buf, BUFSIZE,
"tracks/%s", CatCur->
name);
371 if (TrList == NULL) {
372 GfTrace(
"RmTrackSelect: No track for category %s available\n", CatCur->
name);
374 CatCur = nextCategory;
378 if (TrList == NULL) {
379 GfTrace(
"RmTrackSelect: No valid track for category %s available\n", CatCur->
name);
381 CatCur = nextCategory;
386 CatCur = CatCur->
next;
389 GfTrace(
"RmTrackSelect: No valid track category available\n");
399 CatCur = categoryHead;
401 if (strcmp(CatCur->
name, defaultCategory) == 0) {
403 foundCategory =
true;
407 if (strcmp(TrCur->
name, defaultTrack) == 0) {
413 }
while (TrCur != trackHead);
416 CatCur = CatCur->
next;
417 }
while (CatCur != categoryHead);
419 if (!foundCategory || !foundTrack) {
420 GfTrace(
"RmTrackSelect: Selected track %s/%s is not available, falling back to %s/%s\n",
437 "data/img/arrow-left.png",
438 "data/img/arrow-left.png",
439 "data/img/arrow-left.png",
440 "data/img/arrow-left-pushed.png",
452 "data/img/arrow-right.png",
453 "data/img/arrow-right.png",
454 "data/img/arrow-right.png",
455 "data/img/arrow-right-pushed.png",
460 "data/img/arrow-left.png",
461 "data/img/arrow-left.png",
462 "data/img/arrow-left.png",
463 "data/img/arrow-left-pushed.png",
475 "data/img/arrow-right.png",
476 "data/img/arrow-right.png",
477 "data/img/arrow-right.png",
478 "data/img/arrow-right-pushed.png",
485 320, 100, (
int) (vh*260.0f/vw), 195,
Scalar length(const Quaternion &q)
void GfDirFreeList(tFList *list, tfDirfreeUserData freeUserData, bool freename, bool freedispname)
Free a directory list.
tFList * GfDirGetList(const char *dir)
Get the list of files of a given directory.
void * GfuiScreenCreateExAction(float *bgColor, const tGfuiAction &onActivate, const tGfuiAction &onDeactivate, int mouseAllowed)
Create a screen.
void GfuiLabelSetText(void *scr, int id, const char *text)
Change the text of a label.
void GfuiScreenRelease(void *scr)
Release the given screen.
int GfuiTitleCreate(void *scr, const char *text, int maxlen)
Add a Title to the screen.
void GfuiStaticImageSet(void *scr, int id, char *name)
Replace an image by another one.
void GfuiAddKeyAction(void *scr, unsigned char key, const char *descr, const tGfuiAction &onKeyPressed, const tGfuiAction &onKeyReleased)
Add a Keyboard callback to a screen.
void GfuiScreenAddBgImg(void *scr, const char *filename)
Add an image background to a screen.
void GfuiAddSKeyAction(void *scr, int key, const char *descr, const tGfuiAction &onKeyPressed, const tGfuiAction &onKeyReleased)
Add a Special Keyboard shortcut to the screen.
int GfuiLabelCreate(void *scr, const char *text, int font, int x, int y, int align, int maxlen)
Add a label to a screen.
int GfuiGrButtonCreateAction(void *scr, const char *disabled, const char *enabled, const char *focused, const char *pushed, int x, int y, int align, int mouse, const tGfuiAction &onPush, const tGfuiAction &onFocus, const tGfuiAction &onFocusLost)
Add a graphical button to a screen.
void GfuiScreenActivate(void *screen)
Activate a screen and make it current.
int GfuiButtonCreateAction(void *scr, const char *text, int font, int x, int y, int width, int align, int mouse, const tGfuiAction &onPush, const tGfuiAction &onFocus, const tGfuiAction &onFocusLost)
Add a button to a screen.
int GfuiStaticImageCreate(void *scr, int x, int y, int w, int h, char *name)
Create a new static image.
const char * GfParmGetStr(void *parmHandle, const char *path, const char *key, const char *deflt)
Get a string parameter from the parameter set handle.
int GfParmSetStr(void *handle, const char *path, const char *key, const char *val)
Set a string parameter in the parameter set handle.
tdble GfParmGetNum(void *handle, const char *path, const char *key, const char *unit, tdble deflt)
Get a numerical parameter from the parameter set handle.
void GfParmReleaseHandle(void *parmHandle)
Release given parameter set handle parmHandle.
void * GfParmReadFile(const char *file, int mode)
Read parameter set from file and return handle to parameter set.
void GfuiScreenShot(void *)
Save a screen shot in png format.
void GfScrGetSize(int *scrw, int *scrh, int *vieww, int *viewh)
Get the screen and viewport sizes.
#define RE_ATTR_CUR_TRACK
struct FList * next
Next entry.
struct FList * prev
Previous entry.
char * dispName
Name to display on screen.
void * userData
User data.
Structure for track selection.
tdble length
main track length
tTrackPitInfo pits
Pits information.
int nMaxPits
number max of pits
void(* tfDirfreeUserData)(void *)
Function to call for releasing the user data associated with file entry.
#define GFPARM_RMODE_STD
Return a new handle sharing cached data for this filename, if available.
struct FList tFList
List of (DLL) files for a Directory.
#define GFUI_FONT_LARGE_C
#define GFUI_FONT_MEDIUM_C
std::function< void()> tGfuiAction
static void rmtsDeactivate(void *screen)
static tFList * rmtsFilterTracks(char *category, tFList *trackList)
static char * rmGetMapName(char *buf, const int BUFSIZE)
static void rmtsFreeLists(void *vl)
static int rmtsListLength(tFList *list)
static tFList * CategoryList
static void rmtsAddKeys(void)
static tFList * rmtsRemoveListEntry(tFList *list, tFList *entry, tfDirfreeUserData freeUserData)
static void rmtsPrevNext(int delta)
static void rmtsActivate(void)
static void rmUpdateTrackInfo(void)
static void rmCatPrevNext(int delta)