X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e8482f24cfc00645607f8526fde38d39e0dcaa63..5dffa63b2f6fdb8b512b454529783bb5d106936f:/utils/wxMMedia2/lib/cdunix.cpp diff --git a/utils/wxMMedia2/lib/cdunix.cpp b/utils/wxMMedia2/lib/cdunix.cpp deleted file mode 100644 index d17148a23a..0000000000 --- a/utils/wxMMedia2/lib/cdunix.cpp +++ /dev/null @@ -1,201 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: cdlinux.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// CVS Id: $Id$ -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "cdunix.h" -#endif - -#include -#include -#include -#include -#include - -#ifdef __linux__ -#include -#else -// For Solaris -#include -#endif - -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#include "cdbase.h" -#include "cdunix.h" - -IMPLEMENT_DYNAMIC_CLASS(wxCDAudioLinux, wxCDAudio) - -wxCDAudioLinux::wxCDAudioLinux() - : wxCDAudio(), m_fd(-1) -{ - OpenDevice("/dev/cdrom"); -} - -wxCDAudioLinux::wxCDAudioLinux(const char *dev_name) - : wxCDAudio(), m_fd(-1) -{ - OpenDevice(dev_name); -} - -wxCDAudioLinux::~wxCDAudioLinux() -{ - if (m_fd != -1) { - close(m_fd); - wxDELETE(m_trksize); - wxDELETE(m_trkpos); - } -} - -void wxCDAudioLinux::OpenDevice(const char *dev_name) -{ - struct cdrom_tocentry entry, old_entry; - struct cdrom_tochdr diskinf; - struct cdrom_msf0 *msf = &entry.cdte_addr.msf, - *old_msf = &old_entry.cdte_addr.msf; - wxCDtime *the_track; - wxCDtime tot_tm; - wxUint8 nb_tracks, i; - int hour, minute, second; - - if (m_fd != -1) - return; - - m_fd = open(dev_name, O_RDONLY); - if (m_fd == -1) { - m_toc = NULL; - return; - } - m_status = STOPPED; - - ioctl(m_fd, CDROMREADTOCHDR, &diskinf); - - nb_tracks = diskinf.cdth_trk1-diskinf.cdth_trk0+1; - m_trksize = new wxCDtime[nb_tracks+1]; - m_trkpos = new wxCDtime[nb_tracks+1]; - - old_msf->minute = 0; - old_msf->second = 0; - for (i=diskinf.cdth_trk0;i<=diskinf.cdth_trk1;i++) { - entry.cdte_track = i; - entry.cdte_format = CDROM_MSF; - ioctl(m_fd, CDROMREADTOCENTRY, &entry); - - minute = msf->minute - old_msf->minute; - second = msf->second - old_msf->second; - if (second < 0) { - minute--; - second += 60; - } - - hour = minute / 60; - minute %= 60; - - the_track = &m_trksize[i-diskinf.cdth_trk0]; - the_track->track = i-diskinf.cdth_trk0; - the_track->hour = hour; - the_track->min = minute; - the_track->sec = second; - - the_track = &m_trkpos[i-diskinf.cdth_trk0]; - the_track->track = i-diskinf.cdth_trk0; - the_track->hour = old_msf->minute / 60; - the_track->min = old_msf->minute % 60; - the_track->sec = old_msf->second; - old_entry = entry; - } - - entry.cdte_track = CDROM_LEADOUT; - entry.cdte_format = CDROM_MSF; - ioctl(m_fd, CDROMREADTOCENTRY, &entry); - - tot_tm.track = nb_tracks; - tot_tm.hour = msf->minute / 60; - tot_tm.min = msf->minute % 60; - tot_tm.sec = msf->second % 60; - - m_trksize[nb_tracks].track = nb_tracks; - minute = msf->minute - old_msf->minute; - second = msf->second - old_msf->second; - if (second < 0) { - minute--; - second += 60; - } - hour = minute / 60; - minute %= 60; - - m_trksize[nb_tracks].hour = hour; - m_trksize[nb_tracks].min = minute; - m_trksize[nb_tracks].sec = second; - m_trkpos[nb_tracks].track = nb_tracks; - m_trkpos[nb_tracks].hour = old_msf->minute / 60; - m_trkpos[nb_tracks].min = old_msf->minute % 60; - m_trkpos[nb_tracks].sec = old_msf->second; - - m_toc = new CDtoc(tot_tm, m_trksize, m_trkpos); -} - -bool wxCDAudioLinux::Play(const wxCDtime& beg_time, const wxCDtime& end_time) -{ - struct cdrom_msf track_msf; - - track_msf.cdmsf_min0 = beg_time.hour * 60 + beg_time.min; - track_msf.cdmsf_sec0 = beg_time.sec; - track_msf.cdmsf_frame0 = 0; - track_msf.cdmsf_min1 = end_time.hour * 60 + end_time.min; - track_msf.cdmsf_sec1 = end_time.sec; - track_msf.cdmsf_frame1 = 0; - return (ioctl(m_fd, CDROMPLAYMSF, &track_msf) != -1); -} - -bool wxCDAudioLinux::Pause() -{ - return (ioctl(m_fd, CDROMPAUSE, 0) != -1); -} - -bool wxCDAudioLinux::Resume() -{ - return (ioctl(m_fd, CDROMRESUME, 0) != -1); -} - -wxCDAudio::CDstatus wxCDAudioLinux::GetStatus() -{ - struct cdrom_subchnl subchnl; - ioctl(m_fd, CDROMSUBCHNL, &subchnl); - switch (subchnl.cdsc_audiostatus) { - case CDROM_AUDIO_PLAY: return PLAYING; - case CDROM_AUDIO_PAUSED: return PAUSED; - case CDROM_AUDIO_COMPLETED: return STOPPED; - } - - return STOPPED; -} - -wxCDtime wxCDAudioLinux::GetTime() -{ - wxCDtime cdtime; - struct cdrom_subchnl subchnl; - - ioctl(m_fd, CDROMSUBCHNL, &subchnl); - cdtime.track = subchnl.cdsc_trk; - cdtime.min = subchnl.cdsc_reladdr.msf.minute; - cdtime.hour = cdtime.min / 60; - cdtime.min %= 60; - cdtime.sec = subchnl.cdsc_reladdr.msf.second; - - return cdtime; -} - -wxCDAudio::CDtoc& wxCDAudioLinux::GetToc() -{ - return *m_toc; -}