1*fc9fd3f1SPedro Giffuni /************************************************************************* 2*fc9fd3f1SPedro Giffuni * 3*fc9fd3f1SPedro Giffuni * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*fc9fd3f1SPedro Giffuni * 5*fc9fd3f1SPedro Giffuni * Copyright 2000, 2010 Oracle and/or its affiliates. 6*fc9fd3f1SPedro Giffuni * 7*fc9fd3f1SPedro Giffuni * OpenOffice.org - a multi-platform office productivity suite 8*fc9fd3f1SPedro Giffuni * 9*fc9fd3f1SPedro Giffuni * This file is part of OpenOffice.org. 10*fc9fd3f1SPedro Giffuni * 11*fc9fd3f1SPedro Giffuni * OpenOffice.org is free software: you can redistribute it and/or modify 12*fc9fd3f1SPedro Giffuni * it under the terms of the GNU Lesser General Public License version 3 13*fc9fd3f1SPedro Giffuni * only, as published by the Free Software Foundation. 14*fc9fd3f1SPedro Giffuni * 15*fc9fd3f1SPedro Giffuni * OpenOffice.org is distributed in the hope that it will be useful, 16*fc9fd3f1SPedro Giffuni * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*fc9fd3f1SPedro Giffuni * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*fc9fd3f1SPedro Giffuni * GNU Lesser General Public License version 3 for more details 19*fc9fd3f1SPedro Giffuni * (a copy is included in the LICENSE file that accompanied this code). 20*fc9fd3f1SPedro Giffuni * 21*fc9fd3f1SPedro Giffuni * You should have received a copy of the GNU Lesser General Public License 22*fc9fd3f1SPedro Giffuni * version 3 along with OpenOffice.org. If not, see 23*fc9fd3f1SPedro Giffuni * <http://www.openoffice.org/license.html> 24*fc9fd3f1SPedro Giffuni * for a copy of the LGPLv3 License. 25*fc9fd3f1SPedro Giffuni * 26*fc9fd3f1SPedro Giffuni ************************************************************************/ 27*fc9fd3f1SPedro Giffuni 28*fc9fd3f1SPedro Giffuni #ifndef _SV_SALSOUND_H 29*fc9fd3f1SPedro Giffuni #define _SV_SALSOUND_H 30*fc9fd3f1SPedro Giffuni 31*fc9fd3f1SPedro Giffuni #include <tools/gen.hxx> 32*fc9fd3f1SPedro Giffuni #include <sv.h> 33*fc9fd3f1SPedro Giffuni #include <tools/string.hxx> 34*fc9fd3f1SPedro Giffuni #include <vcl/salframe.hxx> 35*fc9fd3f1SPedro Giffuni #ifndef _SV_SALSTYPE_HXX 36*fc9fd3f1SPedro Giffuni #include <vcl/salstype.hxx> 37*fc9fd3f1SPedro Giffuni #endif 38*fc9fd3f1SPedro Giffuni #include <vcl/salsound.hxx> 39*fc9fd3f1SPedro Giffuni 40*fc9fd3f1SPedro Giffuni // ------------ 41*fc9fd3f1SPedro Giffuni // - SalSound - 42*fc9fd3f1SPedro Giffuni // ------------ 43*fc9fd3f1SPedro Giffuni 44*fc9fd3f1SPedro Giffuni //class SalSound 45*fc9fd3f1SPedro Giffuni class Os2SalSound : public SalSound 46*fc9fd3f1SPedro Giffuni { 47*fc9fd3f1SPedro Giffuni private: 48*fc9fd3f1SPedro Giffuni 49*fc9fd3f1SPedro Giffuni static HMODULE mhMCILib; 50*fc9fd3f1SPedro Giffuni static ULONG mnSoundState; 51*fc9fd3f1SPedro Giffuni static void* mpMCIFnc; 52*fc9fd3f1SPedro Giffuni SALSOUNDPROC mpProc; 53*fc9fd3f1SPedro Giffuni void* mpInst; 54*fc9fd3f1SPedro Giffuni ULONG mnStartTime; 55*fc9fd3f1SPedro Giffuni ULONG mnPlayLen; 56*fc9fd3f1SPedro Giffuni HWND mhSoundWnd; 57*fc9fd3f1SPedro Giffuni USHORT mnDeviceId; 58*fc9fd3f1SPedro Giffuni BOOL mbLoop; 59*fc9fd3f1SPedro Giffuni BOOL mbPaused; 60*fc9fd3f1SPedro Giffuni 61*fc9fd3f1SPedro Giffuni public: 62*fc9fd3f1SPedro Giffuni 63*fc9fd3f1SPedro Giffuni void ImplSetError( ULONG nMciErr ); 64*fc9fd3f1SPedro Giffuni void ImplNotify( SoundNotification eNotification, ULONG nError ); 65*fc9fd3f1SPedro Giffuni 66*fc9fd3f1SPedro Giffuni public: 67*fc9fd3f1SPedro Giffuni 68*fc9fd3f1SPedro Giffuni BOOL Create(); 69*fc9fd3f1SPedro Giffuni //static BOOL IsValid() { return( SOUND_STATE_VALID == Os2SalSound::mnSoundState ); } 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 73*fc9fd3f1SPedro Giffuni void SetNotifyProc( void* pInst, SALSOUNDPROC pProc ) 74*fc9fd3f1SPedro Giffuni { mpInst = pInst; mpProc = pProc; } 75*fc9fd3f1SPedro Giffuni public: 76*fc9fd3f1SPedro Giffuni Os2SalSound(); 77*fc9fd3f1SPedro Giffuni virtual ~Os2SalSound(); 78*fc9fd3f1SPedro Giffuni 79*fc9fd3f1SPedro Giffuni virtual bool IsValid(); 80*fc9fd3f1SPedro Giffuni virtual bool Init( const String& rSoundName, ULONG& rSoundLen ); 81*fc9fd3f1SPedro Giffuni virtual void Play( ULONG nStartTime, ULONG nPlayTime, bool bLoop ); 82*fc9fd3f1SPedro Giffuni virtual void Stop(); 83*fc9fd3f1SPedro Giffuni virtual void Pause(); 84*fc9fd3f1SPedro Giffuni virtual void Continue(); 85*fc9fd3f1SPedro Giffuni virtual bool IsLoopMode() const; 86*fc9fd3f1SPedro Giffuni virtual bool IsPlaying() const; 87*fc9fd3f1SPedro Giffuni virtual bool IsPaused() const; 88*fc9fd3f1SPedro Giffuni 89*fc9fd3f1SPedro Giffuni bool ImplCreate(); 90*fc9fd3f1SPedro Giffuni void ImplDestroy(); 91*fc9fd3f1SPedro Giffuni static void Release(); 92*fc9fd3f1SPedro Giffuni }; 93*fc9fd3f1SPedro Giffuni 94*fc9fd3f1SPedro Giffuni #endif // _SV_SALSOUND_H 95