X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltTransition.cpp;h=5a18c8eb54e83942671cb8d1ef2bfdd68d311a73;hb=009596ca20a3c4b77e6fc6d8355a509be81f9897;hp=544d8e22a26895758e2bc18b4c6a3fb8efac7972;hpb=01c1d44e8df201c3061cf20addf5421d21d8bcb0;p=melted diff --git a/mlt++/src/MltTransition.cpp b/mlt++/src/MltTransition.cpp index 544d8e2..5a18c8e 100644 --- a/mlt++/src/MltTransition.cpp +++ b/mlt++/src/MltTransition.cpp @@ -18,42 +18,73 @@ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include +#include #include "MltTransition.h" using namespace Mlt; -mlt_service Transition::get_service( ) -{ - return mlt_transition_service( get_transition( ) ); -} - -mlt_transition TransitionInstance::get_transition( ) +Transition::Transition( char *id, char *arg ) : + instance( NULL ) { - return instance; + if ( arg != NULL ) + { + instance = mlt_factory_transition( id, arg ); + } + else + { + if ( strchr( id, ':' ) ) + { + char *temp = strdup( id ); + char *arg = strchr( temp, ':' ) + 1; + *( arg - 1 ) = '\0'; + instance = mlt_factory_transition( temp, arg ); + free( temp ); + } + else + { + instance = mlt_factory_transition( id, NULL ); + } + } } -TransitionInstance::TransitionInstance( char *id, char *arg ) : - destroy( true ), +Transition::Transition( Service &transition ) : instance( NULL ) { - instance = mlt_factory_transition( id, arg ); + if ( transition.type( ) == transition_type ) + { + instance = ( mlt_transition )transition.get_service( ); + inc_ref( ); + } } -TransitionInstance::TransitionInstance( Transition &transition ) : - destroy( false ), +Transition::Transition( Transition &transition ) : instance( transition.get_transition( ) ) { + inc_ref( ); } -TransitionInstance::TransitionInstance( mlt_transition transition ) : - destroy( false ), +Transition::Transition( mlt_transition transition ) : instance( transition ) { + inc_ref( ); } -TransitionInstance::~TransitionInstance( ) +Transition::~Transition( ) { - if ( destroy ) - mlt_transition_close( instance ); + mlt_transition_close( instance ); } +mlt_transition Transition::get_transition( ) +{ + return instance; +} + +mlt_service Transition::get_service( ) +{ + return mlt_transition_service( get_transition( ) ); +} +void Transition::set_in_and_out( int in, int out ) +{ + mlt_transition_set_in_and_out( get_transition( ), in, out ); +}