Mercurial > hg > xmms-sid
changeset 21:d5789951b7e2
Added files
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 04 Jun 2003 21:21:05 +0000 |
parents | 5caef90c4ffd |
children | ac2972a7ccd5 |
files | src/xs_title.cc src/xs_title.h |
diffstat | 2 files changed, 174 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/xs_title.cc Wed Jun 04 21:21:05 2003 +0000 @@ -0,0 +1,157 @@ +/* + xmms-sid - SIDPlay input plugin for X MultiMedia System (XMMS) + + Song title parsing + + Written by Matti "ccr" Hamalainen <ccr@tnsp.org> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +#include "xmms-sid.h" +#include <stdlib.h> +#include <string.h> +#include <xmms/titlestring.h> + +#include <sidplay/player.h> +#include <sidplay/myendian.h> +#include <sidplay/fformat.h> + + +/* + * Create the SID-tune description string from the + * tune's information formatted by the user-specified + * format-string. + */ +gchar *xs_filetitle_get(gchar *pcFilename, void *pfInfo, gint iSubTune) +{ + gint i, j, iLength; + gchar *pcResult; + struct sidTuneInfo *finfo = (struct sidTuneInfo *) pfInfo; +#ifdef HAVE_XMMSEXTRA + TitleInput *ptInput; +#endif + + // FIXME FIXME: get STIL-info + + +#ifdef HAVE_XMMSEXTRA + /* Check if the titles are overridden or not */ + if (!xs_cfg.titleOverride) { + /* Use generic XMMS titles */ + +// XMMS_NEW_TITLEINPUT(ptInput); +// we duplicate and add typecast to the code here due to XMMS's braindead headers + + ptInput = (TitleInput *) g_malloc0(sizeof(TitleInput)); + ptInput->__size = XMMS_TITLEINPUT_SIZE; + ptInput->__version = XMMS_TITLEINPUT_VERSION; + + + /* Create the input fields */ + ptInput->file_name = pcFilename; + ptInput->file_ext = pcFilename; + ptInput->file_path = pcFilename; + + ptInput->track_name = finfo->nameString; + ptInput->track_number = iSubTune; + ptInput->album_name = NULL; + ptInput->performer = finfo->authorString; + ptInput->date = NULL; + ptInput->year = 0; + xs_strcalloc(&ptInput->genre, "SID-tune"); + ptInput->comment = finfo->copyrightString; + pcResult = xmms_get_titlestring(xmms_get_gentitle_format(), ptInput); + + /* Dispose all allocated memory */ + g_free(ptInput->genre); + g_free(ptInput); /* was allocated by XMMS_NEW_TITLEINPUT */ + } else { +#endif + /* Check the info strings */ + if (finfo->numberOfInfoStrings != 3) { + + if (finfo->numberOfInfoStrings < 1) + return 0; + + return g_strdup(finfo->infoString[0]); + } + + /* Check the format-string for NULL */ + if (xs_cfg.titleFormat == NULL) + return g_strdup_printf("%s - %s", finfo->nameString, finfo->authorString); + + /* Calculate the length */ + iLength = 2; + + for (i = 0; i < strlen(xs_cfg.titleFormat); i++) { + + if (xs_cfg.titleFormat[i] == '%') { + switch (xs_cfg.titleFormat[++i]) { + + case '1': iLength += strlen(finfo->authorString); break; + case '2': iLength += strlen(finfo->nameString); break; + case '3': iLength += strlen(finfo->copyrightString); break; + case '4': iLength += strlen(finfo->formatString); break; + + } /* case */ + + } else + iLength++; + + } /* for */ + + + /* Allocate the result-string */ + pcResult = (gchar *) g_malloc(iLength); + + /* Construct the final result info */ + j = 0; + for (i = 0; i < strlen(xs_cfg.titleFormat); i++) { + + if (xs_cfg.titleFormat[i] == '%') { + switch (xs_cfg.titleFormat[++i]) { + + case '1': + xs_strcpy(&pcResult, &j, finfo->authorString); + break; + + case '2': + xs_strcpy(&pcResult, &j, finfo->nameString); + break; + + case '3': + xs_strcpy(&pcResult, &j, finfo->copyrightString); + break; + + case '4': + xs_strcpy(&pcResult, &j, finfo->formatString); + break; + + } /* case */ + + } else { + pcResult[j++] = xs_cfg.titleFormat[i]; + } /* if */ + + } /* for */ + + pcResult[j] = '\0'; +#ifdef HAVE_XMMSEXTRA + } +#endif + + return pcResult; +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/xs_title.h Wed Jun 04 21:21:05 2003 +0000 @@ -0,0 +1,17 @@ +#ifndef XS_TITLE_H +#define XS_TITLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Functions + */ +gchar *xs_filetitle_get(void *, gint); + + +#ifdef __cplusplus +} +#endif +#endif /* XS_TITLE_H */