Exemplo n.º 1
0
    def display_trim_clip(self,
                          path,
                          clip_start_pos,
                          patter_producer_data=None,
                          ttl=None):
        """
        Adds clip to hidden track for trim editing display.
        """
        track = self.tracks[-1]  # Always last track
        track.clear(
        )  # # TRIM INIT CRASH HACK, see clear_hidden_track there may be blank clip here
        track.clips = []

        # Display trimmmed clip on hidden track by creating copy of it.
        # File producer
        if path != None:
            clip = editorstate.get_cached_trim_clip(path)
            if clip == None:
                clip = self.create_file_producer_clip(path, None, True, ttl)
                editorstate.add_cached_trim_clip(clip)

            if clip_start_pos > 0:
                edit._insert_blank(track, 0, clip_start_pos)
                edit._insert_clip(track, clip, 1, 0, clip.get_length() - 1)
            else:
                edit._insert_clip(track, clip, 1, -clip_start_pos,
                                  clip.get_length() - 1)  # insert index 1 ?
        # Pattern producer (FIX ME: does not allow for keyframes in pattern producer)
        else:
            clip = self.create_pattern_producer(patter_producer_data)
            edit._insert_clip(track, clip, 0, 0, clip.get_length() - 1)

        self._mute_editable()
Exemplo n.º 2
0
 def display_trim_clip(self, path, clip_start_pos, patter_producer_data=None, ttl=None):
     """
     Adds clip to hidden track for trim editing display.
     """
     track = self.tracks[-1] # Always last track
     track.clear() # # TRIM INIT CRASH HACK, see clear_hidden_track there may be blank clip here
     track.clips = []
 
     # Display trimmmed clip on hidden track by creating copy of it.
     # File producer
     if path != None:
         clip = editorstate.get_cached_trim_clip(path)
         if clip == None:
             clip = self.create_file_producer_clip(path, None, True, ttl)
             editorstate.add_cached_trim_clip(clip)
 
         if clip_start_pos > 0:
             edit._insert_blank(track, 0, clip_start_pos)
             edit._insert_clip(track, clip, 1, 0, clip.get_length() - 1)
         else:
             edit._insert_clip(track, clip, 1, -clip_start_pos, clip.get_length() - 1) # insert index 1 ?
     # Pattern producer (FIX ME: does not allow for keyframes in pattern producer)
     else:
         clip = self.create_pattern_producer(patter_producer_data)
         edit._insert_clip(track, clip, 0, 0, clip.get_length() - 1)
     
     self._mute_editable()
Exemplo n.º 3
0
    def update_trim_hack_blank_length(self):
        # NEEDED FOR TRIM CRASH HACK, REMOVE IF FIXED
        self.tracks[-1].clips = []
        self.tracks[-1].clear()

        seq_len = self.seq_len
        if seq_len < 1:
            seq_len = 1

        edit._insert_blank(self.tracks[-1], 0, seq_len)
Exemplo n.º 4
0
    def update_trim_hack_blank_length(self):
        # NEEDED FOR TRIM CRASH HACK, REMOVE IF FIXED
        self.tracks[-1].clips = []
        self.tracks[-1].clear()

        seq_len = self.seq_len
        if seq_len < 1:
            seq_len = 1
            
        edit._insert_blank(self.tracks[-1], 0, seq_len)
Exemplo n.º 5
0
    def update_hidden_track(self, hidden_track, seq_len):
        if len(self.segments) == 0:
            edit._insert_blank(hidden_track, 0, seq_len)
        else:
            in_frame = 0
            index = 0
            for segment in self.segments:
                if segment.start_frame >= seq_len:
                    break

                # Blank between segments/sequence start
                if segment.start_frame > in_frame:
                    edit._insert_blank(hidden_track, index,
                                       segment.start_frame - in_frame)

                    index += 1

                segment_length = segment.end_frame - segment.start_frame

                # Segment contents
                if segment.segment_state == SEGMENT_UNRENDERED or segment.segment_state == SEGMENT_DIRTY:
                    edit._insert_blank(hidden_track, index, segment_length - 1)
                elif segment.segment_state == SEGMENT_RENDERED:
                    edit.append_clip(hidden_track, segment.producer, 0,
                                     segment_length - 1)  # -1, out incl.

                in_frame = segment.end_frame
                index += 1

            if hidden_track.get_length() < seq_len:
                edit._insert_blank(hidden_track, index,
                                   seq_len - hidden_track.get_length())
Exemplo n.º 6
0
 def redisplay_hidden_clips(self):
     """
     Called after trim mode loop playback to redisplay hidden track clips
     """
     clips = self.tracks[-1].clips
     self.tracks[-1].clips = []
     for i in range(0, len(clips)):
         clip = clips[i]
         if clip.is_blanck_clip:
             edit._insert_blank(self.tracks[-1], i,
                                clip.clip_out - clip.clip_in + 1)
         else:
             edit._insert_clip(self.tracks[-1], clip, i, clip.clip_in,
                               clip.clip_out)
     self._mute_editable()
Exemplo n.º 7
0
def _copy_track_contents(from_track, to_track, to_sequence):
    # Copy clips
    for i in range(0, len(from_track.clips)):
        clip = from_track.clips[i]
        if clip.is_blanck_clip != True:
            edit.append_clip(to_track, clip, clip.clip_in, clip.clip_out)
        else:
            edit._insert_blank(to_track, i, clip.clip_out - clip.clip_in + 1)

    from_track.clear()
    from_track.clips = []

    # Copy track attributes.
    to_sequence.set_track_mute_state(to_track.id, from_track.mute_state)
    to_track.edit_freedom = from_track.edit_freedom
Exemplo n.º 8
0
 def redisplay_hidden_clips(self):
     """
     Called after trim mode loop playback to redisplay hidden track clips
     """
     clips = self.tracks[-1].clips
     self.tracks[-1].clips = []
     for i in range(0, len(clips)):
         clip = clips[i]
         if clip.is_blanck_clip:
             edit._insert_blank(self.tracks[-1], i, 
                                clip.clip_out - clip.clip_in + 1)
         else:
             edit._insert_clip(self.tracks[-1], clip, i, 
                                clip.clip_in, clip.clip_out)
     self._mute_editable()
Exemplo n.º 9
0
def _copy_track_contents(from_track, to_track, to_sequence):
    # Copy clips
    for i in range(0, len(from_track.clips)):
        clip = from_track.clips[i]
        if clip.is_blanck_clip != True:
            edit.append_clip(to_track, clip, clip.clip_in, clip.clip_out)
        else:
            edit._insert_blank(to_track, i, clip.clip_out - clip.clip_in + 1)
    
    from_track.clear()
    from_track.clips = []

    # Copy track attributes.
    to_sequence.set_track_mute_state(to_track.id, from_track.mute_state)
    to_track.edit_freedom = from_track.edit_freedom
Exemplo n.º 10
0
    def clear_hidden_track(self):
        """
        Last track is hidden track used to display clips and trim edits.
        Here that track is cleared of any content.
        """
        self.update_edit_tracks_length()

        # Empty timeline needs blank clip of len atleast 1 because  
        # edit_insert_blank() always needs a clip to add attributes to 
        # and that method is fundamendal and cannot be changed. 
        seq_len = self.seq_len
        if seq_len < 1:
            seq_len = 1
        
        self.tracks[-1].clips = []
        self.tracks[-1].clear()

        edit._insert_blank(self.tracks[-1], 0, seq_len) # TRIM INIT CRASH HACK. This being empty crashes a lot, so far unexplained.
        
        self._unmute_editable()
Exemplo n.º 11
0
    def clear_hidden_track(self):
        """
        Last track is hidden track used to display clips and trim edits.
        Here that track is cleared of any content.
        """
        self.update_edit_tracks_length()

        # Empty timeline needs blank clip of len atleast 1 because  
        # edit_insert_blank() always needs a clip to add attributes to 
        # and that method is fundamendal and cannot be changed. 
        seq_len = self.seq_len
        if seq_len < 1:
            seq_len = 1
        
        self.tracks[-1].clips = []
        self.tracks[-1].clear()

        edit._insert_blank(self.tracks[-1], 0, seq_len) # TRIM INIT CRASH HACK. This being empty crashes a lot, so far unexplained.
        
        self._unmute_editable()
Exemplo n.º 12
0
 def append_blank(self, blank_length, track):
     """
     Used in hack for trim editing last clip of a track.
     """
     index = len(track.clips)
     edit._insert_blank(track, index, blank_length)
Exemplo n.º 13
0
 def create_and_insert_blank(self, track, index, length):
     """
     Used for persistance.
     """
     edit._insert_blank(track, index, length)
     return track.clips[index]
Exemplo n.º 14
0
 def append_blank(self, blank_length, track):
     """
     Used in hack for trim editing last clip of a track.
     """
     index = len(track.clips)
     edit._insert_blank(track, index, blank_length)
Exemplo n.º 15
0
 def create_and_insert_blank(self, track, index, length):
     """
     Used for persistance.
     """
     edit._insert_blank(track, index, length)
     return track.clips[index]
Exemplo n.º 16
0
 def update_hidden_track(self, hidden_track, seq_len):
     # This was required for some real random crashes long time ago, may not be needed anymore but we're keeping this.
     edit._insert_blank(hidden_track, 0, seq_len)