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) < 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<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 >= CD_PLAYING ) { 150 int m, s, f; 151 FRAMES_TO_MSF(cdrom->cur_frame, &m, &s, &f); 152 printf("Currently playing track %d, %d:%2.2d\n", 153 cdrom->track[cdrom->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->numtracks); 174 for ( i=0; i<cdrom->numtracks; ++i ) { 175 FRAMES_TO_MSF(cdrom->track[i].length, &m, &s, &f); 176 if ( f > 0 ) 177 ++s; 178 printf("\tTrack (index %d) %d: %d:%2.2d\n", i, 179 cdrom->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->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 >