diff options
| author | Steven Fuller <relnev@icculus.org> | 2001-07-01 00:55:22 +0000 |
|---|---|---|
| committer | Patryk Obara <dreamer.tan@gmail.com> | 2019-08-20 02:09:04 +0200 |
| commit | 2186d5f3f95cd74a070a490d899291648d58667a (patch) | |
| tree | 55241a1afa3e1a22e0b6593a8dead0b703800f44 /3dc/win95/media.cpp | |
| parent | 218ca90543758a20ac326e444ca0643174ca7384 (diff) | |
Initial revision
Diffstat (limited to '3dc/win95/media.cpp')
| -rw-r--r-- | 3dc/win95/media.cpp | 556 |
1 files changed, 0 insertions, 556 deletions
diff --git a/3dc/win95/media.cpp b/3dc/win95/media.cpp deleted file mode 100644 index acb1427..0000000 --- a/3dc/win95/media.cpp +++ /dev/null @@ -1,556 +0,0 @@ -#include "advwin32.h" -#include "media.hpp" - -void * MediaMedium::GetWriteBuffer(unsigned * pSize, unsigned /*nDesiredSize*/) -{ - *pSize = 0; - m_fError |= MME_UNAVAIL; - return NULL; -} - -void const * MediaMedium::GetReadBuffer(unsigned * pSize, unsigned /*nDesiredSize*/) -{ - *pSize = 0; - m_fError |= MME_UNAVAIL; - return NULL; -} - -void MediaMedium::CloseWriteBuffer(unsigned /*nPosOffset*/) -{ - m_fError |= MME_UNAVAIL; -} - -void MediaMedium::CloseReadBuffer(unsigned /*nPosOffset*/) -{ - m_fError |= MME_UNAVAIL; -} - -void MediaMedium::DoWriteBlock(void const * /*pData*/, unsigned /*nSize*/) -{ - m_fError |= MME_UNAVAIL; -} - -void MediaMedium::DoReadBlock(void * /*pData*/, unsigned /*nSize*/) -{ - m_fError |= MME_UNAVAIL; -} - -unsigned MediaMedium::GetRemainingSize() -{ - return UINT_MAX; -} - -// MediaWinFileMedium - -#ifdef _MEDIA_WIN_TARGET - -unsigned MediaWinFileMedium::GetRemainingSize() -{ - if (INVALID_HANDLE_VALUE == m_hFile) - { - m_fError |= MME_UNAVAIL; - return 0; - } - - unsigned nSize = GetFileSize(m_hFile,NULL); - - if (0xffffffff == nSize) - { - m_fError |= MME_UNAVAIL; - return 0; - } - - return nSize - GetPos(); -} - -void * MediaWinFileMedium::GetWriteBuffer(unsigned * pSize, unsigned nDesiredSize) -{ - m_pBuffer = new char [nDesiredSize]; - *pSize = nDesiredSize; - return m_pBuffer; -} - -void const * MediaWinFileMedium::GetReadBuffer(unsigned * pSize, unsigned nDesiredSize) -{ - if (INVALID_HANDLE_VALUE == m_hFile) - // the base/default implementation raises an error - return MediaMedium::GetReadBuffer(pSize,nDesiredSize); - - m_pBuffer = new char [nDesiredSize]; - - DWORD nBytesRead = 0; - - if (!ReadFile(m_hFile, m_pBuffer, nDesiredSize, &nBytesRead, NULL)) - m_fError |= MME_IOERROR; - else if (!nBytesRead) - m_fError |= MME_EOFMET; - - *pSize = m_nReadBufLen = nBytesRead; - - return m_pBuffer; -} - -void MediaWinFileMedium::CloseWriteBuffer(unsigned nPosOffset) -{ - if (INVALID_HANDLE_VALUE == m_hFile) - { - // the base/default implementation raises an error - MediaMedium::CloseWriteBuffer(nPosOffset); - return; - } - - DWORD nBytesWritten = 0; - - if (!WriteFile(m_hFile, m_pBuffer, nPosOffset, &nBytesWritten, NULL)) - m_fError |= MME_IOERROR; - else if (nBytesWritten < nPosOffset) - m_fError |= MME_EOFMET; - - delete [] m_pBuffer; -} - -void MediaWinFileMedium::CloseReadBuffer(unsigned nPosOffset) -{ - if (INVALID_HANDLE_VALUE == m_hFile) - { - // the base/default implementation raises an error - MediaMedium::CloseReadBuffer(nPosOffset); - return; - } - - if (nPosOffset != m_nReadBufLen && 0xffffffff == SetFilePointer(m_hFile,nPosOffset - m_nReadBufLen,NULL,FILE_CURRENT)) - m_fError |= MME_UNAVAIL; - - m_nReadBufLen = 0; - - delete [] m_pBuffer; -} - -void MediaWinFileMedium::DoWriteBlock(void const * pData, unsigned nSize) -{ - if (INVALID_HANDLE_VALUE == m_hFile) - { - MediaMedium::DoWriteBlock(pData,nSize); - return; - } - - DWORD nBytesWritten = 0; - - if (!WriteFile(m_hFile, pData, nSize, &nBytesWritten, NULL)) - m_fError |= MME_IOERROR; - else if (nBytesWritten < nSize) - m_fError |= MME_EOFMET; -} - -void MediaWinFileMedium::DoReadBlock(void * pData, unsigned nSize) -{ - if (INVALID_HANDLE_VALUE == m_hFile) - { - MediaMedium::DoReadBlock(pData,nSize); - return; - } - - DWORD nBytesRead = 0; - - if (!ReadFile(m_hFile, pData, nSize, &nBytesRead, NULL)) - m_fError |= MME_IOERROR; - else if (nBytesRead < nSize) - m_fError |= MME_EOFMET; -} - -unsigned MediaWinFileMedium::DoGetPos() -{ - unsigned nFilePos = SetFilePointer(m_hFile,0,NULL,FILE_CURRENT); - - if (0xffffffff == nFilePos) - { - m_fError |= MME_UNAVAIL; - return 0; - } - - return nFilePos - m_nReadBufLen; -} - -void MediaWinFileMedium::DoSetPos(unsigned nPos) -{ - if (0xffffffff == SetFilePointer(m_hFile,nPos,NULL,FILE_BEGIN)) - m_fError |= MME_UNAVAIL; -} - -#endif // _MEDIA_WIN_TARGET - -// MediaStdFileMedium - -unsigned MediaStdFileMedium::GetRemainingSize() -{ - if (!m_pFile) - { - m_fError |= MME_UNAVAIL; - return 0; - } - - long nPos = ftell(m_pFile); - - if (-1L == nPos || fseek(m_pFile,0,SEEK_END)) - { - m_fError |= MME_UNAVAIL; - return 0; - } - - long nSize = ftell(m_pFile); - - fseek(m_pFile,nPos,SEEK_SET); - - if (-1L == nSize) - { - m_fError |= MME_UNAVAIL; - return 0; - } - - return nSize - GetPos(); -} - -void * MediaStdFileMedium::GetWriteBuffer(unsigned * pSize, unsigned nDesiredSize) -{ - m_pBuffer = new char [nDesiredSize]; - *pSize = nDesiredSize; - return m_pBuffer; -} - -void const * MediaStdFileMedium::GetReadBuffer(unsigned * pSize, unsigned nDesiredSize) -{ - if (!m_pFile) - // the base/default implementation raises an error - return MediaMedium::GetReadBuffer(pSize,nDesiredSize); - - m_pBuffer = new char [nDesiredSize]; - - *pSize = m_nReadBufLen = fread(m_pBuffer, 1, nDesiredSize, m_pFile); - - if (!m_nReadBufLen) - { - if (feof(m_pFile)) - m_fError |= MME_EOFMET; - else - m_fError |= MME_IOERROR; - } - - return m_pBuffer; -} - -void MediaStdFileMedium::CloseWriteBuffer(unsigned nPosOffset) -{ - if (!m_pFile) - { - // the base/default implementation raises an error - MediaMedium::CloseWriteBuffer(nPosOffset); - return; - } - - if (fwrite(m_pBuffer, 1, nPosOffset, m_pFile) < nPosOffset) - { - if (feof(m_pFile)) - m_fError |= MME_EOFMET; - else - m_fError |= MME_IOERROR; - } - - delete [] m_pBuffer; -} - -void MediaStdFileMedium::CloseReadBuffer(unsigned nPosOffset) -{ - if (!m_pFile) - { - // the base/default implementation raises an error - MediaMedium::CloseReadBuffer(nPosOffset); - return; - } - - if (nPosOffset != m_nReadBufLen && fseek(m_pFile,nPosOffset - m_nReadBufLen,SEEK_CUR)) - m_fError |= MME_UNAVAIL; - - m_nReadBufLen = 0; - delete [] m_pBuffer; -} - -void MediaStdFileMedium::DoWriteBlock(void const * pData, unsigned nSize) -{ - if (!m_pFile) - { - MediaMedium::DoWriteBlock(pData,nSize); - return; - } - - if (fwrite(pData, 1, nSize, m_pFile) < nSize) - { - if (feof(m_pFile)) - m_fError |= MME_EOFMET; - else - m_fError |= MME_IOERROR; - } -} - -void MediaStdFileMedium::DoReadBlock(void * pData, unsigned nSize) -{ - if (!m_pFile) - { - MediaMedium::DoReadBlock(pData,nSize); - return; - } - - if (fread(pData, 1, nSize, m_pFile) < nSize) - { - if (feof(m_pFile)) - m_fError |= MME_EOFMET; - else - m_fError |= MME_IOERROR; - } -} - -unsigned MediaStdFileMedium::DoGetPos() -{ - long nFilePos = ftell(m_pFile); - - if (-1L == nFilePos) - { - m_fError |= MME_UNAVAIL; - return 0; - } - - return nFilePos - m_nReadBufLen; -} - -void MediaStdFileMedium::DoSetPos(unsigned nPos) -{ - if (fseek(m_pFile,nPos,SEEK_SET)) - m_fError |= MME_UNAVAIL; -} - -// MediaMemoryReadMedium - -void const * MediaMemoryReadMedium::GetReadBuffer(unsigned * pSize, unsigned nDesiredSize) -{ - if (!m_pMem) - // the base/default implementation raises an error - return MediaMedium::GetReadBuffer(pSize,nDesiredSize); - - *pSize = nDesiredSize; - - return static_cast<char const *>(m_pMem)+m_nOffset/sizeof(char); -} - -void MediaMemoryReadMedium::CloseReadBuffer(unsigned nPosOffset) -{ - if (!m_pMem) - { - // the base/default implementation raises an error - MediaMedium::CloseReadBuffer(nPosOffset); - return; - } - - m_nOffset += nPosOffset; -} - -void MediaMemoryReadMedium::DoReadBlock(void * pData, unsigned nSize) -{ - if (!m_pMem) - { - MediaMedium::DoReadBlock(pData,nSize); - return; - } - - memcpy(pData,static_cast<char const *>(m_pMem)+m_nOffset/sizeof(char),nSize); - - m_nOffset += nSize; -} - -unsigned MediaMemoryReadMedium::DoGetPos() -{ - return m_nOffset; -} - -void MediaMemoryReadMedium::DoSetPos(unsigned nPos) -{ - m_nOffset = nPos; -} - -// MediaMemoryMedium - -void * MediaMemoryMedium::GetWriteBuffer(unsigned * pSize, unsigned nDesiredSize) -{ - if (!m_pMem) - // the base/default implementation raises an error - return MediaMedium::GetWriteBuffer(pSize,nDesiredSize); - - *pSize = nDesiredSize; - - return static_cast<char *>(m_pMem)+m_nOffset/sizeof(char); -} - -void MediaMemoryMedium::CloseWriteBuffer(unsigned nPosOffset) -{ - if (!m_pMem) - { - // the base/default implementation raises an error - MediaMedium::CloseWriteBuffer(nPosOffset); - return; - } - - m_nOffset += nPosOffset; -} - -void MediaMemoryMedium::DoWriteBlock(void const * pData, unsigned nSize) -{ - if (!m_pMem) - { - MediaMedium::DoWriteBlock(pData,nSize); - return; - } - - memcpy(static_cast<char *>(m_pMem)+m_nOffset/sizeof(char),pData,nSize); - - m_nOffset += nSize; -} - -// MediaSection - -unsigned MediaSection::GetRemainingSize() -{ - if (!m_pMedium) - { - m_fError |= MME_UNAVAIL; - return 0; - } - - unsigned nSectionSize = m_nMaxSize - GetPos(); - unsigned nMediaSize = m_pMedium->GetRemainingSize(); - m_fError |= m_pMedium->m_fError; - - return nSectionSize < nMediaSize ? nSectionSize : nMediaSize; -} - -void * MediaSection::GetWriteBuffer(unsigned * pSize, unsigned nDesiredSize) -{ - if (!m_pMedium) - return MediaMedium::GetWriteBuffer(pSize,nDesiredSize); - - if (m_nPos + nDesiredSize > m_nMaxSize) - { - nDesiredSize = m_nMaxSize - m_nPos; - } - - void * p = m_pMedium->GetWriteBuffer(pSize,nDesiredSize); - m_fError |= m_pMedium->m_fError; - return p; -} - -void const * MediaSection::GetReadBuffer(unsigned * pSize, unsigned nDesiredSize) -{ - if (!m_pMedium) - return MediaMedium::GetReadBuffer(pSize,nDesiredSize); - - if (m_nPos + nDesiredSize > m_nMaxSize) - { - nDesiredSize = m_nMaxSize - m_nPos; - } - - void const * p = m_pMedium->GetReadBuffer(pSize,nDesiredSize); - m_fError |= m_pMedium->m_fError; - return p; -} - -void MediaSection::CloseWriteBuffer(unsigned nPosOffset) -{ - if (!m_pMedium) - { - MediaMedium::CloseWriteBuffer(nPosOffset); - return; - } - - m_nPos += nPosOffset; - - m_pMedium->CloseWriteBuffer(nPosOffset); - m_fError |= m_pMedium->m_fError; -} - -void MediaSection::CloseReadBuffer(unsigned nPosOffset) -{ - if (!m_pMedium) - { - MediaMedium::CloseReadBuffer(nPosOffset); - return; - } - - m_nPos += nPosOffset; - - m_pMedium->CloseReadBuffer(nPosOffset); - m_fError |= m_pMedium->m_fError; -} - -void MediaSection::DoWriteBlock(void const * pData, unsigned nSize) -{ - if (!m_pMedium) - { - MediaMedium::DoWriteBlock(pData,nSize); - return; - } - - if (m_nPos + nSize > m_nMaxSize) - { - m_fError |= MME_VEOFMET; - return; - } - - m_nPos += nSize; - - m_pMedium->DoWriteBlock(pData,nSize); - m_fError |= m_pMedium->m_fError; -} - -void MediaSection::DoReadBlock(void * pData, unsigned nSize) -{ - if (!m_pMedium) - { - MediaMedium::DoReadBlock(pData,nSize); - return; - } - - if (m_nPos + nSize > m_nMaxSize) - { - m_fError |= MME_VEOFMET; - return; - } - - m_nPos += nSize; - - m_pMedium->DoReadBlock(pData,nSize); - m_fError |= m_pMedium->m_fError; -} - -unsigned MediaSection::DoGetPos() -{ - return m_nPos; -} - -void MediaSection::DoSetPos(unsigned nPos) -{ - if (!m_pMedium) - { - m_fError |= MME_UNAVAIL; - return; - } - - if (nPos > m_nMaxSize) - { - m_fError |= MME_VEOFMET; - return; - } - - m_pMedium->DoSetPos(m_pMedium->DoGetPos()+nPos-m_nPos); - if (m_nPos > m_nUsedPos) m_nUsedPos = m_nPos; - m_nPos = nPos; - - m_fError |= m_pMedium->m_fError; -} - |
