forked from KolibriOS/kolibrios
3cf7852e03
git-svn-id: svn://kolibrios.org@5131 a494cfbc-eb01-0410-851d-a64ba20cac60
267 lines
4.6 KiB
HTML
267 lines
4.6 KiB
HTML
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>CDROM Examples</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.64
|
|
"><LINK
|
|
REL="HOME"
|
|
TITLE="SDL Library Documentation"
|
|
HREF="index.html"><LINK
|
|
REL="UP"
|
|
TITLE="Examples"
|
|
HREF="guideexamples.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="Audio Examples"
|
|
HREF="guideaudioexamples.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="Time Examples"
|
|
HREF="guidetimeexamples.html"></HEAD
|
|
><BODY
|
|
CLASS="SECT1"
|
|
BGCOLOR="#FFF8DC"
|
|
TEXT="#000000"
|
|
LINK="#0000ee"
|
|
VLINK="#551a8b"
|
|
ALINK="#ff0000"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>SDL Library Documentation</TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="guideaudioexamples.html"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
>Chapter 4. Examples</TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="guidetimeexamples.html"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="SECT1"
|
|
><H1
|
|
CLASS="SECT1"
|
|
><A
|
|
NAME="GUIDECDROMEXAMPLES"
|
|
>CDROM Examples</A
|
|
></H1
|
|
><P
|
|
></P
|
|
><DIV
|
|
CLASS="SECT2"
|
|
><H2
|
|
CLASS="SECT2"
|
|
><A
|
|
NAME="AEN393"
|
|
>Listing CD-ROM drives</A
|
|
></H2
|
|
><P
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
> #include "SDL.h"
|
|
|
|
/* Initialize SDL first */
|
|
if ( SDL_Init(SDL_INIT_CDROM) < 0 ) {
|
|
fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
|
|
exit(1);
|
|
}
|
|
atexit(SDL_Quit);
|
|
|
|
/* Find out how many CD-ROM drives are connected to the system */
|
|
printf("Drives available: %d\n", SDL_CDNumDrives());
|
|
for ( i=0; i<SDL_CDNumDrives(); ++i ) {
|
|
printf("Drive %d: \"%s\"\n", i, SDL_CDName(i));
|
|
}</PRE
|
|
></P
|
|
></DIV
|
|
><DIV
|
|
CLASS="SECT2"
|
|
><H2
|
|
CLASS="SECT2"
|
|
><A
|
|
NAME="AEN397"
|
|
>Opening the default drive</A
|
|
></H2
|
|
><P
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
> SDL_CD *cdrom;
|
|
CDstatus status;
|
|
char *status_str;
|
|
|
|
cdrom = SDL_CDOpen(0);
|
|
if ( cdrom == NULL ) {
|
|
fprintf(stderr, "Couldn't open default CD-ROM drive: %s\n",
|
|
SDL_GetError());
|
|
exit(2);
|
|
}
|
|
|
|
status = SDL_CDStatus(cdrom);
|
|
switch (status) {
|
|
case CD_TRAYEMPTY:
|
|
status_str = "tray empty";
|
|
break;
|
|
case CD_STOPPED:
|
|
status_str = "stopped";
|
|
break;
|
|
case CD_PLAYING:
|
|
status_str = "playing";
|
|
break;
|
|
case CD_PAUSED:
|
|
status_str = "paused";
|
|
break;
|
|
case CD_ERROR:
|
|
status_str = "error state";
|
|
break;
|
|
}
|
|
printf("Drive status: %s\n", status_str);
|
|
if ( status >= CD_PLAYING ) {
|
|
int m, s, f;
|
|
FRAMES_TO_MSF(cdrom->cur_frame, &m, &s, &f);
|
|
printf("Currently playing track %d, %d:%2.2d\n",
|
|
cdrom->track[cdrom->cur_track].id, m, s);
|
|
}</PRE
|
|
></P
|
|
></DIV
|
|
><DIV
|
|
CLASS="SECT2"
|
|
><H2
|
|
CLASS="SECT2"
|
|
><A
|
|
NAME="AEN401"
|
|
>Listing the tracks on a CD</A
|
|
></H2
|
|
><P
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
> SDL_CD *cdrom; /* Assuming this has already been set.. */
|
|
int i;
|
|
int m, s, f;
|
|
|
|
SDL_CDStatus(cdrom);
|
|
printf("Drive tracks: %d\n", cdrom->numtracks);
|
|
for ( i=0; i<cdrom->numtracks; ++i ) {
|
|
FRAMES_TO_MSF(cdrom->track[i].length, &m, &s, &f);
|
|
if ( f > 0 )
|
|
++s;
|
|
printf("\tTrack (index %d) %d: %d:%2.2d\n", i,
|
|
cdrom->track[i].id, m, s);
|
|
}</PRE
|
|
></P
|
|
></DIV
|
|
><DIV
|
|
CLASS="SECT2"
|
|
><H2
|
|
CLASS="SECT2"
|
|
><A
|
|
NAME="AEN405"
|
|
>Play an entire CD</A
|
|
></H2
|
|
><P
|
|
><PRE
|
|
CLASS="PROGRAMLISTING"
|
|
> SDL_CD *cdrom; /* Assuming this has already been set.. */
|
|
|
|
// Play entire CD:
|
|
if ( CD_INDRIVE(SDL_CDStatus(cdrom)) )
|
|
SDL_CDPlayTracks(cdrom, 0, 0, 0, 0);
|
|
|
|
// Play last track:
|
|
if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) {
|
|
SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0);
|
|
}
|
|
|
|
// Play first and second track and 10 seconds of third track:
|
|
if ( CD_INDRIVE(SDL_CDStatus(cdrom)) )
|
|
SDL_CDPlayTracks(cdrom, 0, 0, 2, 10);</PRE
|
|
></P
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="guideaudioexamples.html"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="index.html"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="guidetimeexamples.html"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>Audio Examples</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="guideexamples.html"
|
|
>Up</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Time Examples</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |