Imported Upstream version 2.81
[platform/upstream/libbullet.git] / Demos / DX11ClothDemo / DXUT / Optional / SDKwavefile.h
1 //-----------------------------------------------------------------------------\r
2 // File: WaveFile.h\r
3 //\r
4 // Copyright (c) Microsoft Corp. All rights reserved.\r
5 //-----------------------------------------------------------------------------\r
6 #ifndef DXUTWAVEFILE_H\r
7 #define DXUTWAVEFILE_H\r
8 \r
9 //-----------------------------------------------------------------------------\r
10 // Typing macros \r
11 //-----------------------------------------------------------------------------\r
12 #define WAVEFILE_READ   1\r
13 #define WAVEFILE_WRITE  2\r
14 \r
15 //-----------------------------------------------------------------------------\r
16 // Name: class CWaveFile\r
17 // Desc: Encapsulates reading or writing sound data to or from a wave file\r
18 //-----------------------------------------------------------------------------\r
19 class CWaveFile\r
20 {\r
21 public:\r
22     WAVEFORMATEX* m_pwfx;        // Pointer to WAVEFORMATEX structure\r
23     HMMIO m_hmmio;       // MM I/O handle for the WAVE\r
24     MMCKINFO m_ck;          // Multimedia RIFF chunk\r
25     MMCKINFO m_ckRiff;      // Use in opening a WAVE file\r
26     DWORD m_dwSize;      // The size of the wave file\r
27     MMIOINFO m_mmioinfoOut;\r
28     DWORD m_dwFlags;\r
29     BOOL m_bIsReadingFromMemory;\r
30     BYTE* m_pbData;\r
31     BYTE* m_pbDataCur;\r
32     ULONG m_ulDataSize;\r
33     CHAR* m_pResourceBuffer;\r
34 \r
35 protected:\r
36     HRESULT ReadMMIO();\r
37     HRESULT WriteMMIO( WAVEFORMATEX* pwfxDest );\r
38 \r
39 public:\r
40             CWaveFile();\r
41             ~CWaveFile();\r
42 \r
43     HRESULT Open( LPWSTR strFileName, WAVEFORMATEX* pwfx, DWORD dwFlags );\r
44     HRESULT OpenFromMemory( BYTE* pbData, ULONG ulDataSize, WAVEFORMATEX* pwfx, DWORD dwFlags );\r
45     HRESULT Close();\r
46 \r
47     HRESULT Read( BYTE* pBuffer, DWORD dwSizeToRead, DWORD* pdwSizeRead );\r
48     HRESULT Write( UINT nSizeToWrite, BYTE* pbData, UINT* pnSizeWrote );\r
49 \r
50     DWORD   GetSize();\r
51     HRESULT ResetFile();\r
52     WAVEFORMATEX* GetFormat()\r
53     {\r
54         return m_pwfx;\r
55     };\r
56 };\r
57 \r
58 \r
59 #endif // DXUTWAVEFILE_H\r