Fix up warnings about explicit base initializers in copy constructors
[melted] / mlt++ / src / MltTransition.cpp
index 544d8e2..3a194e4 100644 (file)
  * 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 );
+}