Home | History | Annotate | Download | only in html
      1 <HTML
      2 ><HEAD
      3 ><TITLE
      4 >CDROM Examples</TITLE
      5 ><META
      6 NAME="GENERATOR"
      7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
      8 "><LINK
      9 REL="HOME"
     10 TITLE="SDL Library Documentation"
     11 HREF="index.html"><LINK
     12 REL="UP"
     13 TITLE="Examples"
     14 HREF="guideexamples.html"><LINK
     15 REL="PREVIOUS"
     16 TITLE="Audio Examples"
     17 HREF="guideaudioexamples.html"><LINK
     18 REL="NEXT"
     19 TITLE="Time Examples"
     20 HREF="guidetimeexamples.html"></HEAD
     21 ><BODY
     22 CLASS="SECT1"
     23 BGCOLOR="#FFF8DC"
     24 TEXT="#000000"
     25 LINK="#0000ee"
     26 VLINK="#551a8b"
     27 ALINK="#ff0000"
     28 ><DIV
     29 CLASS="NAVHEADER"
     30 ><TABLE
     31 SUMMARY="Header navigation table"
     32 WIDTH="100%"
     33 BORDER="0"
     34 CELLPADDING="0"
     35 CELLSPACING="0"
     36 ><TR
     37 ><TH
     38 COLSPAN="3"
     39 ALIGN="center"
     40 >SDL Library Documentation</TH
     41 ></TR
     42 ><TR
     43 ><TD
     44 WIDTH="10%"
     45 ALIGN="left"
     46 VALIGN="bottom"
     47 ><A
     48 HREF="guideaudioexamples.html"
     49 ACCESSKEY="P"
     50 >Prev</A
     51 ></TD
     52 ><TD
     53 WIDTH="80%"
     54 ALIGN="center"
     55 VALIGN="bottom"
     56 >Chapter 4. Examples</TD
     57 ><TD
     58 WIDTH="10%"
     59 ALIGN="right"
     60 VALIGN="bottom"
     61 ><A
     62 HREF="guidetimeexamples.html"
     63 ACCESSKEY="N"
     64 >Next</A
     65 ></TD
     66 ></TR
     67 ></TABLE
     68 ><HR
     69 ALIGN="LEFT"
     70 WIDTH="100%"></DIV
     71 ><DIV
     72 CLASS="SECT1"
     73 ><H1
     74 CLASS="SECT1"
     75 ><A
     76 NAME="GUIDECDROMEXAMPLES"
     77 ></A
     78 >CDROM Examples</H1
     79 ><P
     80 ></P
     81 ><DIV
     82 CLASS="SECT2"
     83 ><H2
     84 CLASS="SECT2"
     85 ><A
     86 NAME="AEN393"
     87 ></A
     88 >Listing CD-ROM drives</H2
     89 ><P
     90 ><PRE
     91 CLASS="PROGRAMLISTING"
     92 >    #include "SDL.h"
     93 
     94     /* Initialize SDL first */
     95     if ( SDL_Init(SDL_INIT_CDROM) &#60; 0 ) {
     96         fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
     97         exit(1);
     98     }
     99     atexit(SDL_Quit);
    100 
    101     /* Find out how many CD-ROM drives are connected to the system */
    102     printf("Drives available: %d\n", SDL_CDNumDrives());
    103     for ( i=0; i&#60;SDL_CDNumDrives(); ++i ) {
    104         printf("Drive %d:  \"%s\"\n", i, SDL_CDName(i));
    105     }</PRE
    106 ></P
    107 ></DIV
    108 ><DIV
    109 CLASS="SECT2"
    110 ><H2
    111 CLASS="SECT2"
    112 ><A
    113 NAME="AEN397"
    114 ></A
    115 >Opening the default drive</H2
    116 ><P
    117 ><PRE
    118 CLASS="PROGRAMLISTING"
    119 >    SDL_CD *cdrom;
    120     CDstatus status;
    121     char *status_str;
    122 
    123     cdrom = SDL_CDOpen(0);
    124     if ( cdrom == NULL ) {
    125         fprintf(stderr, "Couldn't open default CD-ROM drive: %s\n",
    126                         SDL_GetError());
    127         exit(2);
    128     }
    129 
    130     status = SDL_CDStatus(cdrom);
    131     switch (status) {
    132         case CD_TRAYEMPTY:
    133             status_str = "tray empty";
    134             break;
    135         case CD_STOPPED:
    136             status_str = "stopped";
    137             break;
    138         case CD_PLAYING:
    139             status_str = "playing";
    140             break;
    141         case CD_PAUSED:
    142             status_str = "paused";
    143             break;
    144         case CD_ERROR:
    145             status_str = "error state";
    146             break;
    147     }
    148     printf("Drive status: %s\n", status_str);
    149     if ( status &#62;= CD_PLAYING ) {
    150         int m, s, f;
    151         FRAMES_TO_MSF(cdrom-&#62;cur_frame, &#38;m, &#38;s, &#38;f);
    152         printf("Currently playing track %d, %d:%2.2d\n",
    153         cdrom-&#62;track[cdrom-&#62;cur_track].id, m, s);
    154     }</PRE
    155 ></P
    156 ></DIV
    157 ><DIV
    158 CLASS="SECT2"
    159 ><H2
    160 CLASS="SECT2"
    161 ><A
    162 NAME="AEN401"
    163 ></A
    164 >Listing the tracks on a CD</H2
    165 ><P
    166 ><PRE
    167 CLASS="PROGRAMLISTING"
    168 >    SDL_CD *cdrom;          /* Assuming this has already been set.. */
    169     int i;
    170     int m, s, f;
    171 
    172     SDL_CDStatus(cdrom);
    173     printf("Drive tracks: %d\n", cdrom-&#62;numtracks);
    174     for ( i=0; i&#60;cdrom-&#62;numtracks; ++i ) {
    175         FRAMES_TO_MSF(cdrom-&#62;track[i].length, &#38;m, &#38;s, &#38;f);
    176         if ( f &#62; 0 )
    177             ++s;
    178         printf("\tTrack (index %d) %d: %d:%2.2d\n", i,
    179         cdrom-&#62;track[i].id, m, s);
    180     }</PRE
    181 ></P
    182 ></DIV
    183 ><DIV
    184 CLASS="SECT2"
    185 ><H2
    186 CLASS="SECT2"
    187 ><A
    188 NAME="AEN405"
    189 ></A
    190 >Play an entire CD</H2
    191 ><P
    192 ><PRE
    193 CLASS="PROGRAMLISTING"
    194 >    SDL_CD *cdrom;          /* Assuming this has already been set.. */
    195 
    196     // Play entire CD:
    197     if ( CD_INDRIVE(SDL_CDStatus(cdrom)) )
    198         SDL_CDPlayTracks(cdrom, 0, 0, 0, 0);
    199 
    200         // Play last track:
    201         if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) {
    202             SDL_CDPlayTracks(cdrom, cdrom-&#62;numtracks-1, 0, 0, 0);
    203         }
    204 
    205         // Play first and second track and 10 seconds of third track:
    206         if ( CD_INDRIVE(SDL_CDStatus(cdrom)) )
    207             SDL_CDPlayTracks(cdrom, 0, 0, 2, CD_FPS * 10);</PRE
    208 ></P
    209 ></DIV
    210 ></DIV
    211 ><DIV
    212 CLASS="NAVFOOTER"
    213 ><HR
    214 ALIGN="LEFT"
    215 WIDTH="100%"><TABLE
    216 SUMMARY="Footer navigation table"
    217 WIDTH="100%"
    218 BORDER="0"
    219 CELLPADDING="0"
    220 CELLSPACING="0"
    221 ><TR
    222 ><TD
    223 WIDTH="33%"
    224 ALIGN="left"
    225 VALIGN="top"
    226 ><A
    227 HREF="guideaudioexamples.html"
    228 ACCESSKEY="P"
    229 >Prev</A
    230 ></TD
    231 ><TD
    232 WIDTH="34%"
    233 ALIGN="center"
    234 VALIGN="top"
    235 ><A
    236 HREF="index.html"
    237 ACCESSKEY="H"
    238 >Home</A
    239 ></TD
    240 ><TD
    241 WIDTH="33%"
    242 ALIGN="right"
    243 VALIGN="top"
    244 ><A
    245 HREF="guidetimeexamples.html"
    246 ACCESSKEY="N"
    247 >Next</A
    248 ></TD
    249 ></TR
    250 ><TR
    251 ><TD
    252 WIDTH="33%"
    253 ALIGN="left"
    254 VALIGN="top"
    255 >Audio Examples</TD
    256 ><TD
    257 WIDTH="34%"
    258 ALIGN="center"
    259 VALIGN="top"
    260 ><A
    261 HREF="guideexamples.html"
    262 ACCESSKEY="U"
    263 >Up</A
    264 ></TD
    265 ><TD
    266 WIDTH="33%"
    267 ALIGN="right"
    268 VALIGN="top"
    269 >Time Examples</TD
    270 ></TR
    271 ></TABLE
    272 ></DIV
    273 ></BODY
    274 ></HTML
    275 >