diff options
author | Leon Merten Lohse <leon@green-side.de> | 2012-03-11 16:41:28 +0100 |
---|---|---|
committer | Leon Merten Lohse <leon@green-side.de> | 2012-03-11 16:41:28 +0100 |
commit | 2a6f15395281c896e8f41692a6f443f8fbf7bb1a (patch) | |
tree | a2a42cad8a8157f6b1ce37fc9296dc9c59921964 /example | |
parent | 657131891241a4b393ada8a511cc33b3c83c2441 (diff) |
[renamed] cdtext_languages_available to cdtext_list_languages
[fixed] C++ CD-Text API
[fixed] C++ CD-Text example
Diffstat (limited to 'example')
-rw-r--r-- | example/C++/OO/cdtext.cpp | 84 | ||||
-rw-r--r-- | example/cdtext.c | 86 |
2 files changed, 85 insertions, 85 deletions
diff --git a/example/C++/OO/cdtext.cpp b/example/C++/OO/cdtext.cpp index 17053294..227aeef0 100644 --- a/example/C++/OO/cdtext.cpp +++ b/example/C++/OO/cdtext.cpp @@ -21,83 +21,93 @@ */ #ifdef HAVE_CONFIG_H #include "config.h" +#define __CDIO_CONFIG_H__ 1 #endif #ifdef HAVE_STDIO_H #include <stdio.h> #endif -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif #include <cdio++/cdio.hpp> /* Set up a CD-DA image to test on which is in the libcdio distribution. */ -#define CDDA_IMAGE_PATH "../../../test/" -#define CDDA_IMAGE CDDA_IMAGE_PATH "cdda.cue" +#define CDDA_IMAGE "../../../test/data/cdtext.cue" static void -print_cdtext_track_info(CdioDevice *device, track_t i_track, - const char *psz_msg) { - cdtext_t *cdtext = device->getCdtext(); - if (NULL != cdtext) { - cdtext_field_t i; - - printf("%s\n", psz_msg); - - for (i= (cdtext_field_t) MIN_CDTEXT_FIELD; i < MAX_CDTEXT_FIELDS; i++) { - if (cdtext_get_const(i, i_track, cdtext)) { - printf("\t%s: %s\n", cdtext_field2str(i), - cdtext_get_const(i, i_track, cdtext)); - } +print_cdtext_track_info(CdioCDText *cdtext, track_t i_track) { + cdtext_field_t i; + + for (i=(cdtext_field_t) 0; i < MAX_CDTEXT_FIELDS; i++) { + if (cdtext->getConst(i, i_track)) { + printf("\t%s: %s\n", cdtext->field2str(i), + cdtext->getConst(i, i_track)); } } } static void -print_disc_info(CdioDevice *device, track_t i_tracks, track_t i_first_track) { +print_disc_info(CdioDevice *device) +{ + track_t i_first_track = device->getFirstTrackNum(); + track_t i_tracks = device->getNumTracks(); track_t i_last_track = i_first_track+i_tracks; discmode_t cd_discmode = device->getDiscmode(); + CdioCDText *cdtext = device->getCdtext(); + int i; - printf("%s\n", discmode2str[cd_discmode]); - - print_cdtext_track_info(device, 0, "\nCD-Text for Disc:"); - for ( ; i_first_track < i_last_track; i_first_track++ ) { - char psz_msg[50]; - sprintf(psz_msg, "CD-Text for Track %d:", i_first_track); - print_cdtext_track_info(device, i_first_track, psz_msg); + printf("Discmode: %s\n\n", discmode2str[cd_discmode]); + + if (NULL == cdtext) + { + printf("No CD-Text found on Disc.\n"); + return; } + + /* print available languages */ + { + cdtext_lang_t *languages; + + printf("CD-Text available in: "); + + languages = cdtext->listLanguages(); + for(i=0; i<8; i++) + if ( CDTEXT_LANGUAGE_UNKNOWN != languages[i]) + printf("%s ", cdtext->lang2str(languages[i])); + printf("\n"); + } + + printf("CD-Text for Disc:\n"); + print_cdtext_track_info(cdtext, 0); + for (i = i_first_track ; i < i_last_track; i++ ) { + printf("CD-Text for Track %d:\n", i); + print_cdtext_track_info(cdtext, i); + } + + delete cdtext; } int main(int argc, const char *argv[]) { - track_t i_first_track; - track_t i_tracks; CdioDevice *device = new CdioDevice; - const char *psz_drive = NULL; + const char *psz_drive = (const char *) NULL; if (!device->open(CDDA_IMAGE, DRIVER_BINCUE)) { printf("Couldn't open " CDDA_IMAGE " with BIN/CUE driver.\n"); } else { - i_first_track = device->getFirstTrackNum(); - i_tracks = device->getNumTracks(); - print_disc_info(device, i_tracks, i_first_track); + print_disc_info(device); } if (argc > 1) psz_drive = argv[1]; if (!device->open(psz_drive, DRIVER_DEVICE)) { printf("Couldn't find CD\n"); - delete(device); return 1; } else { - i_first_track = device->getFirstTrackNum(); - i_tracks = device->getNumTracks(); - print_disc_info(device, i_tracks, i_first_track); + print_disc_info(device); } - delete(device); + delete device; return 0; } diff --git a/example/cdtext.c b/example/cdtext.c index 01e323e3..ec080f00 100644 --- a/example/cdtext.c +++ b/example/cdtext.c @@ -20,6 +20,7 @@ libcdio. See also corresponding C++ programs of similar names. */ #define EXAMPLE_CUE_FILE "../test/data/cdtext.cue" +#define EXAMPLE_PREF_LANG "German" #ifdef HAVE_CONFIG_H #include "config.h" @@ -29,19 +30,13 @@ #ifdef HAVE_STDIO_H #include <stdio.h> #endif -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif #include <cdio/cdio.h> -#include <cdio/cdtext.h> static void -print_cdtext_track_info(cdtext_t *cdtext, track_t i_track, const char *psz_msg) { +print_cdtext_track_info(cdtext_t *cdtext, track_t i_track) { cdtext_field_t i; - printf("%s\n", psz_msg); - for (i=0; i < MAX_CDTEXT_FIELDS; i++) { if (cdtext_get_const(cdtext, i, i_track)) { printf("\t%s: %s\n", cdtext_field2str(i), @@ -52,55 +47,55 @@ print_cdtext_track_info(cdtext_t *cdtext, track_t i_track, const char *psz_msg) } static void -print_disc_info(CdIo_t *p_cdio, track_t i_tracks, track_t i_first_track) { - track_t i_last_track = i_first_track+i_tracks; - discmode_t cd_discmode = cdio_get_discmode(p_cdio); - cdtext_t *cdtext = cdio_get_cdtext(p_cdio); +print_disc_info(CdIo_t *p_cdio) { + track_t i_first_track = cdio_get_first_track_num (p_cdio); + track_t i_tracks = cdio_get_num_tracks (p_cdio); + track_t i_last_track = i_first_track + i_tracks; + discmode_t cd_discmode = cdio_get_discmode (p_cdio); + cdtext_t *cdtext = cdio_get_cdtext (p_cdio); int i; - printf("Discmode: %s\n", discmode2str[cd_discmode]); + printf("Discmode: %s\n\n", discmode2str[cd_discmode]); if (NULL == cdtext) { - printf("\nNo CD-Text found on Disc."); + printf("No CD-Text found on Disc.\n"); return; } - - /* print available languages */ - { - cdtext_lang_t *languages; - printf("\nCD-Text available in: "); + /* print available languages */ + { + cdtext_lang_t *languages; - languages = cdtext_languages_available(cdtext); - for(i=0; i<8; i++) - if ( CDTEXT_LANGUAGE_UNKNOWN != languages[i]) - printf("%s ", cdtext_lang2str(languages[i])); - printf("\n"); - } + printf("CD-Text available in: "); - /* select language */ - if(cdtext_select_language(cdtext, "German")) { - printf("%s selected.\n", "German"); - } else { - printf("'%s' is not available. Using '%s'\n", "German", - cdtext_lang2str (cdtext_get_language (cdtext))); - } - - /* print cd-text */ - print_cdtext_track_info(cdtext, 0, "CD-Text for Disc:"); - for (i=i_first_track ; i < i_last_track; i++ ) { - char psz_msg[50]; - snprintf(psz_msg, sizeof(psz_msg), "CD-Text for Track %d:", i); - print_cdtext_track_info(cdtext, i, psz_msg); + languages = cdtext_list_languages(cdtext); + for(i=0; i<8; i++) + if ( CDTEXT_LANGUAGE_UNKNOWN != languages[i]) + printf("%s ", cdtext_lang2str(languages[i])); + printf("\n"); + } + + /* select language */ + if(cdtext_select_language(cdtext, EXAMPLE_PREF_LANG)) { + printf("%s selected.\n", EXAMPLE_PREF_LANG); + } else { + printf("'%s' is not available. Using '%s'\n", EXAMPLE_PREF_LANG, + cdtext_lang2str (cdtext_get_language (cdtext))); + } + + /* print cd-text */ + printf("CD-Text for Disc:\n"); + print_cdtext_track_info(cdtext, 0); + for (i=i_first_track ; i < i_last_track; i++ ) { + printf("CD-Text for Track %d\n:", i); + print_cdtext_track_info(cdtext, i); } } int main(int argc, const char *argv[]) { - track_t i_first_track; - track_t i_tracks; CdIo_t *p_cdio; /* read CD-Text from a bin/cue (CDRWIN) image */ @@ -109,9 +104,7 @@ main(int argc, const char *argv[]) printf("Couldn't open %s with BIN/CUE driver.\n", EXAMPLE_CUE_FILE); } else { - i_first_track = cdio_get_first_track_num(p_cdio); - i_tracks = cdio_get_num_tracks(p_cdio); - print_disc_info(p_cdio, i_tracks, i_first_track); + print_disc_info(p_cdio); cdio_destroy(p_cdio); } @@ -121,12 +114,9 @@ main(int argc, const char *argv[]) printf("Couldn't find CD\n"); return 77; } else { - i_first_track = cdio_get_first_track_num(p_cdio); - i_tracks = cdio_get_num_tracks(p_cdio); - print_disc_info(p_cdio, i_tracks, i_first_track); + print_disc_info(p_cdio); + cdio_destroy(p_cdio); } - cdio_destroy(p_cdio); - return 0; } |