* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#include <stdlib.h>
+#include <string.h>
#include "MltTransition.h"
+#include "MltProfile.h"
using namespace Mlt;
-mlt_service Transition::get_service( )
-{
- return mlt_transition_service( get_transition( ) );
-}
-
-mlt_transition TransitionInstance::get_transition( )
+Transition::Transition( Profile& profile, char *id, char *arg ) :
+ instance( NULL )
{
- return instance;
+ if ( arg != NULL )
+ {
+ instance = mlt_factory_transition( profile.get_profile(), id, arg );
+ }
+ else
+ {
+ if ( strchr( id, ':' ) )
+ {
+ char *temp = strdup( id );
+ char *arg = strchr( temp, ':' ) + 1;
+ *( arg - 1 ) = '\0';
+ instance = mlt_factory_transition( profile.get_profile(), temp, arg );
+ free( temp );
+ }
+ else
+ {
+ instance = mlt_factory_transition( profile.get_profile(), 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 ) :
+ Mlt::Service( 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 );
+}