00001 #include "SdlArs.h"
00002
00003 namespace Ars
00004 {
00005 XMPEG::XMPEG( void )
00006 : mpeg( 0 )
00007 {
00008 }
00009
00010 XMPEG::~XMPEG( void )
00011 {
00012 if( mpeg )
00013 SMPEG_delete( mpeg );
00014 mpeg = 0;
00015 }
00016
00017 void XMPEG::Init( icstring &aStr )
00018 {
00019 XImage::Init( aStr );
00020
00021 icstring tmp = Rsrc::FindCrdOf( aStr , "mpeg" );
00022
00023 sct = Rsrc::GetStr( tmp );
00024 key = Rsrc::GetStr( tmp );
00025 fname = Rsrc::GetStr( tmp );
00026 }
00027
00028 const bool XMPEG::SetupWindow( const Message &msg )
00029 {
00030 XImage::SetupWindow( msg );
00031
00032 if( !mpeg )
00033 if( !sct.empty() || !key.empty() || !fname.empty() )
00034 {
00035 if( key.empty() )
00036 mpeg = SMPEG_new( fname.empty() ? sct.c_str() : fname.c_str() , &mpegInfo , 1 );
00037 else
00038 {
00039 if( fname.empty() )
00040 fname = Cfg::GetCfg().GetCfgFile( "Paths" , "Animate" );
00041 Cfg::Handler &h = Cfg::GetCfg( fname );
00042
00043 mpeg = SMPEG_new( h.GetCfgFile( sct , key ).c_str() , &mpegInfo , 1 );
00044 }
00045 }
00046
00047
00048 SMPEG_enablevideo( mpeg , 1 );
00049 SMPEG_setvolume( mpeg , 100 );
00050
00051 SMPEG_setdisplay( mpeg , GetGDI() , 0 , 0 );
00052 SMPEG_move( mpeg , x , y );
00053 SMPEG_scaleXY( mpeg , w , h );
00054
00055 return true;
00056 }
00057
00058
00059 const bool XMPEG::Play( void )
00060 {
00061 if( mpeg )
00062 {
00063 if( SMPEG_status( mpeg ) != SMPEG_PLAYING )
00064 SMPEG_play( mpeg );
00065 return SMPEG_status( mpeg ) == SMPEG_PLAYING;
00066 }
00067 return false;
00068 }
00069
00070 void XMPEG::EndPlay( void )
00071 {
00072 if( mpeg )
00073 {
00074 SMPEG_delete( mpeg );
00075 mpeg = 0;
00076 }
00077 }
00078
00079 }