2007-02-14 14:40:24 +00:00
|
|
|
/***************************************************************************
|
|
|
|
* __________ __ ___.
|
|
|
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
|
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
|
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
|
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
|
|
* \/ \/ \/ \/ \/
|
2007-07-26 14:23:08 +00:00
|
|
|
* $Id$
|
2007-02-14 14:40:24 +00:00
|
|
|
*
|
|
|
|
* Copyright (C) 2007 Nicolas Pennequin, Jonathan Gordon
|
|
|
|
*
|
|
|
|
* All files in this archive are subject to the GNU General Public License.
|
|
|
|
* See the file COPYING in the source tree root for full license agreement.
|
|
|
|
*
|
|
|
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
|
|
* KIND, either express or implied.
|
|
|
|
*
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
#ifndef _CUESHEET_H_
|
|
|
|
#define _CUESHEET_H_
|
|
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "screens.h"
|
2008-04-28 14:13:13 +00:00
|
|
|
#include "file.h"
|
|
|
|
#include "id3.h"
|
2007-02-14 14:40:24 +00:00
|
|
|
|
2007-03-29 18:39:04 +00:00
|
|
|
#define MAX_NAME 80 /* Max length of information strings */
|
2007-02-14 14:40:24 +00:00
|
|
|
#define MAX_TRACKS 99 /* Max number of tracks in a cuesheet */
|
|
|
|
|
|
|
|
struct cue_track_info {
|
2007-11-12 12:39:56 +00:00
|
|
|
char title[MAX_NAME*3+1];
|
|
|
|
char performer[MAX_NAME*3+1];
|
|
|
|
char songwriter[MAX_NAME*3+1];
|
2007-02-14 14:40:24 +00:00
|
|
|
unsigned long offset; /* ms from start of track */
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cuesheet {
|
|
|
|
char path[MAX_PATH];
|
|
|
|
char audio_filename[MAX_PATH];
|
|
|
|
|
2007-11-12 12:39:56 +00:00
|
|
|
char title[MAX_NAME*3+1];
|
|
|
|
char performer[MAX_NAME*3+1];
|
|
|
|
char songwriter[MAX_NAME*3+1];
|
2007-02-14 14:40:24 +00:00
|
|
|
|
|
|
|
int track_count;
|
|
|
|
struct cue_track_info tracks[MAX_TRACKS];
|
|
|
|
|
|
|
|
int curr_track_idx;
|
|
|
|
struct cue_track_info *curr_track;
|
|
|
|
};
|
|
|
|
|
2007-11-17 14:25:02 +00:00
|
|
|
extern struct cuesheet *curr_cue;
|
|
|
|
extern struct cuesheet *temp_cue;
|
2007-02-14 14:40:24 +00:00
|
|
|
|
|
|
|
/* returns true if cuesheet support is initialised */
|
|
|
|
bool cuesheet_is_enabled(void);
|
|
|
|
|
|
|
|
/* allocates the cuesheet buffer */
|
|
|
|
void cuesheet_init(void);
|
|
|
|
|
|
|
|
/* looks if there is a cuesheet file that has a name matching "trackpath" */
|
2007-05-28 23:18:31 +00:00
|
|
|
bool look_for_cuesheet_file(const char *trackpath, char *found_cue_path);
|
2007-02-14 14:40:24 +00:00
|
|
|
|
|
|
|
/* parse cuesheet "file" and store the information in "cue" */
|
|
|
|
bool parse_cuesheet(char *file, struct cuesheet *cue);
|
|
|
|
|
|
|
|
/* reads a cuesheet to find the audio track associated to it */
|
|
|
|
bool get_trackname_from_cuesheet(char *filename, char *buf);
|
|
|
|
|
2007-05-14 17:34:52 +00:00
|
|
|
/* display a cuesheet struct */
|
|
|
|
void browse_cuesheet(struct cuesheet *cue);
|
|
|
|
|
|
|
|
/* display a cuesheet file after parsing and loading it to the plugin buffer */
|
2007-02-14 14:40:24 +00:00
|
|
|
bool display_cuesheet_content(char* filename);
|
|
|
|
|
|
|
|
/* finds the index of the current track played within a cuesheet */
|
|
|
|
int cue_find_current_track(struct cuesheet *cue, unsigned long curpos);
|
|
|
|
|
|
|
|
/* update the id3 info to that of the currently playing track in the cuesheet */
|
|
|
|
void cue_spoof_id3(struct cuesheet *cue, struct mp3entry *id3);
|
|
|
|
|
|
|
|
/* skip to next track in the cuesheet towards "direction" (which is 1 or -1) */
|
|
|
|
bool curr_cuesheet_skip(int direction, unsigned long curr_pos);
|
|
|
|
|
|
|
|
#ifdef HAVE_LCD_BITMAP
|
|
|
|
/* draw track markers on the progressbar */
|
|
|
|
void cue_draw_markers(struct screen *screen, unsigned long tracklen,
|
|
|
|
int x1, int x2, int y, int h);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|