1*fc9fd3f1SPedro Giffuni /************************************************************** 2*fc9fd3f1SPedro Giffuni * 3*fc9fd3f1SPedro Giffuni * Licensed to the Apache Software Foundation (ASF) under one 4*fc9fd3f1SPedro Giffuni * or more contributor license agreements. See the NOTICE file 5*fc9fd3f1SPedro Giffuni * distributed with this work for additional information 6*fc9fd3f1SPedro Giffuni * regarding copyright ownership. The ASF licenses this file 7*fc9fd3f1SPedro Giffuni * to you under the Apache License, Version 2.0 (the 8*fc9fd3f1SPedro Giffuni * "License"); you may not use this file except in compliance 9*fc9fd3f1SPedro Giffuni * with the License. You may obtain a copy of the License at 10*fc9fd3f1SPedro Giffuni * 11*fc9fd3f1SPedro Giffuni * http://www.apache.org/licenses/LICENSE-2.0 12*fc9fd3f1SPedro Giffuni * 13*fc9fd3f1SPedro Giffuni * Unless required by applicable law or agreed to in writing, 14*fc9fd3f1SPedro Giffuni * software distributed under the License is distributed on an 15*fc9fd3f1SPedro Giffuni * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*fc9fd3f1SPedro Giffuni * KIND, either express or implied. See the License for the 17*fc9fd3f1SPedro Giffuni * specific language governing permissions and limitations 18*fc9fd3f1SPedro Giffuni * under the License. 19*fc9fd3f1SPedro Giffuni * 20*fc9fd3f1SPedro Giffuni *************************************************************/ 21*fc9fd3f1SPedro Giffuni 22*fc9fd3f1SPedro Giffuni 23*fc9fd3f1SPedro Giffuni 24*fc9fd3f1SPedro Giffuni #ifndef _SV_SALSOUND_HXX 25*fc9fd3f1SPedro Giffuni #define _SV_SALSOUND_HXX 26*fc9fd3f1SPedro Giffuni 27*fc9fd3f1SPedro Giffuni #include <tools/gen.hxx> 28*fc9fd3f1SPedro Giffuni #include <sv.h> 29*fc9fd3f1SPedro Giffuni #include <tools/string.hxx> 30*fc9fd3f1SPedro Giffuni #include <salframe.hxx> 31*fc9fd3f1SPedro Giffuni #ifndef _SV_SALSTYPE_HXX 32*fc9fd3f1SPedro Giffuni #include <salstype.hxx> 33*fc9fd3f1SPedro Giffuni #endif 34*fc9fd3f1SPedro Giffuni #include <salsound.hxx> 35*fc9fd3f1SPedro Giffuni 36*fc9fd3f1SPedro Giffuni // ------------ 37*fc9fd3f1SPedro Giffuni // - SalSound - 38*fc9fd3f1SPedro Giffuni // ------------ 39*fc9fd3f1SPedro Giffuni 40*fc9fd3f1SPedro Giffuni class SalSound 41*fc9fd3f1SPedro Giffuni { 42*fc9fd3f1SPedro Giffuni private: 43*fc9fd3f1SPedro Giffuni 44*fc9fd3f1SPedro Giffuni static HMODULE mhMCILib; 45*fc9fd3f1SPedro Giffuni static ULONG mnSoundState; 46*fc9fd3f1SPedro Giffuni static void* mpMCIFnc; 47*fc9fd3f1SPedro Giffuni SALSOUNDPROC mpProc; 48*fc9fd3f1SPedro Giffuni void* mpInst; 49*fc9fd3f1SPedro Giffuni ULONG mnStartTime; 50*fc9fd3f1SPedro Giffuni ULONG mnPlayLen; 51*fc9fd3f1SPedro Giffuni HWND mhSoundWnd; 52*fc9fd3f1SPedro Giffuni USHORT mnDeviceId; 53*fc9fd3f1SPedro Giffuni BOOL mbLoop; 54*fc9fd3f1SPedro Giffuni BOOL mbPaused; 55*fc9fd3f1SPedro Giffuni 56*fc9fd3f1SPedro Giffuni public: 57*fc9fd3f1SPedro Giffuni 58*fc9fd3f1SPedro Giffuni void ImplSetError( ULONG nMciErr ); 59*fc9fd3f1SPedro Giffuni void ImplNotify( SoundNotification eNotification, ULONG nError ); 60*fc9fd3f1SPedro Giffuni 61*fc9fd3f1SPedro Giffuni public: 62*fc9fd3f1SPedro Giffuni 63*fc9fd3f1SPedro Giffuni SalSound(); 64*fc9fd3f1SPedro Giffuni ~SalSound(); 65*fc9fd3f1SPedro Giffuni 66*fc9fd3f1SPedro Giffuni BOOL Create(); 67*fc9fd3f1SPedro Giffuni static void Release(); IsValid()68*fc9fd3f1SPedro Giffuni static BOOL IsValid() { return( SOUND_STATE_VALID == SalSound::mnSoundState ); } 69*fc9fd3f1SPedro Giffuni 70*fc9fd3f1SPedro Giffuni BOOL Init( SalFrame* pFrame, const String& rSoundName, ULONG& rSoundLen ); 71*fc9fd3f1SPedro Giffuni BOOL Init( SalFrame* pFrame, const BYTE* pSound, ULONG nDataLen, ULONG& rSoundLen ); 72*fc9fd3f1SPedro Giffuni void Play( ULONG nStartTime, ULONG nPlayTime, BOOL bLoop ); 73*fc9fd3f1SPedro Giffuni void Stop(); 74*fc9fd3f1SPedro Giffuni void Pause(); 75*fc9fd3f1SPedro Giffuni SetNotifyProc(void * pInst,SALSOUNDPROC pProc)76*fc9fd3f1SPedro Giffuni void SetNotifyProc( void* pInst, SALSOUNDPROC pProc ) 77*fc9fd3f1SPedro Giffuni { mpInst = pInst; mpProc = pProc; } 78*fc9fd3f1SPedro Giffuni }; 79*fc9fd3f1SPedro Giffuni 80*fc9fd3f1SPedro Giffuni #endif // _SV_SALSOUND_HXX 81