OpenShot Video Editor  2.0.0
Functions
track.js File Reference

Track directives (droppable functionality, etc...) More...

Go to the source code of this file.

Functions

App directive ('tlTrack', function($timeout){return{restrict:'A', link:function(scope, element, attrs){scope.$watch('project.layers.length', function(val){if(val){$timeout(function(){scope.UpdateLayerIndex();scope.playhead_height=$("#track-container").height();$(".playhead-line").height(scope.playhead_height);}, 0);}});element.droppable({accept:".droppable", drop:function(event, ui){scope.enable_sorting=false;var vert_scroll_offset=$("#scrolling_tracks").scrollTop();var horz_scroll_offset=$("#scrolling_tracks").scrollLeft();var scrolling_tracks_offset_left=$("#scrolling_tracks").offset().left;var scrolling_tracks_offset_top=$("#scrolling_tracks").offset().top;var dropped_clips=[];var position_diff=0;$(".ui-selected").each(function(){var item=$(this);if($(".ui-selected").length > 1){for(var clip_index=0;clip_index< scope.project.clips.length;clip_index++){scope.project.clips[clip_index].selected=false;if(scope.Qt) timeline.removeSelection(scope.project.clips[clip_index].id.replace("clip_",""),"clip");}for(var tran_index=0;tran_index< scope.project.effects.length;tran_index++){scope.project.effects[tran_index].selected=false;if(scope.Qt) timeline.removeSelection(scope.project.effects[tran_index].id.replace("transition_",""),"transition");}}item_type=null;if(item.hasClass('clip')) item_type= 'clip';else if(item.hasClass('transition')) item_type= 'transition';elsereturn;item_id=item.attr("id");item_num=item_id.substr(item_id.indexOf("_")+1);item_middle=item.position().top+(item.height()/2);item_left=item.position().left;item_left=parseFloat(item_left+horz_scroll_offset);item_middle=parseFloat(item_middle-scrolling_tracks_offset_top+vert_scroll_offset);if(item_left< 0) item_left=0;drop_track_num=findTrackAtLocation(scope, parseInt(item_middle));if(drop_track_num!=-1){item_data=null;if(item_type== 'clip') item_data=findElement(scope.project.clips,"id", item_num);else if(item_type== 'transition') item_data=findElement(scope.project.effects,"id", item_num);if(position_diff==0.0) position_diff=(item_left/scope.pixelsPerSecond)-item_data.position;scope.$apply(function(){item_data.layer=drop_track_num;item_data.position+=position_diff;});scope.ResizeTimeline();dropped_clips.push(item_data);if(scope.Qt &&item_type== 'clip') timeline.update_clip_data(JSON.stringify(item_data));else if(scope.Qt &&item_type== 'transition') timeline.update_transition_data(JSON.stringify(item_data));}});if(dropped_clips.length==1) for(var clip_index=0;clip_index< dropped_clips.length;clip_index++){var item_data=dropped_clips[clip_index];missing_transition_details=scope.GetMissingTransitions(item_data);if(scope.Qt &&missing_transition_details!=null) timeline.add_missing_transition(JSON.stringify(missing_transition_details));}dropped_clips=[];scope.enable_sorting=true;scope.SortItems();}});}};})
 

Detailed Description

Track directives (droppable functionality, etc...)

Author
Jonathan Thomas jonat.nosp@m.han@.nosp@m.opens.nosp@m.hot..nosp@m.org
Cody Parker cody@.nosp@m.your.nosp@m.codep.nosp@m.ro.c.nosp@m.om

LICENSE

Copyright (c) 2008-2014 OpenShot Studios, LLC http://www.openshotstudios.com/. This file is part of OpenShot Video Editor, an open-source project dedicated to delivering high quality video editing and animation solutions to the world. For more information visit http://www.openshot.org/.

OpenShot Video Editor is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

OpenShot Video Editor is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with OpenShot Library. If not, see http://www.gnu.org/licenses/.

Definition in file track.js.

Function Documentation

App directive ( 'tlTrack'  ,
function($timeout){return{restrict:'A', link:function(scope, element, attrs){scope.$watch('project.layers.length', function(val){if(val){$timeout(function(){scope.UpdateLayerIndex();scope.playhead_height=$("#track-container").height();$(".playhead-line").height(scope.playhead_height);}, 0);}});element.droppable({accept:".droppable", drop:function(event, ui){scope.enable_sorting=false;var vert_scroll_offset=$("#scrolling_tracks").scrollTop();var horz_scroll_offset=$("#scrolling_tracks").scrollLeft();var scrolling_tracks_offset_left=$("#scrolling_tracks").offset().left;var scrolling_tracks_offset_top=$("#scrolling_tracks").offset().top;var dropped_clips=[];var position_diff=0;$(".ui-selected").each(function(){var item=$(this);if($(".ui-selected").length > 1){for(var clip_index=0;clip_index< scope.project.clips.length;clip_index++){scope.project.clips[clip_index].selected=false;if(scope.Qt) timeline.removeSelection(scope.project.clips[clip_index].id.replace("clip_",""),"clip");}for(var tran_index=0;tran_index< scope.project.effects.length;tran_index++){scope.project.effects[tran_index].selected=false;if(scope.Qt) timeline.removeSelection(scope.project.effects[tran_index].id.replace("transition_",""),"transition");}}item_type=null;if(item.hasClass('clip')) item_type= 'clip';else if(item.hasClass('transition')) item_type= 'transition';elsereturn;item_id=item.attr("id");item_num=item_id.substr(item_id.indexOf("_")+1);item_middle=item.position().top+(item.height()/2);item_left=item.position().left;item_left=parseFloat(item_left+horz_scroll_offset);item_middle=parseFloat(item_middle-scrolling_tracks_offset_top+vert_scroll_offset);if(item_left< 0) item_left=0;drop_track_num=findTrackAtLocation(scope, parseInt(item_middle));if(drop_track_num!=-1){item_data=null;if(item_type== 'clip') item_data=findElement(scope.project.clips,"id", item_num);else if(item_type== 'transition') item_data=findElement(scope.project.effects,"id", item_num);if(position_diff==0.0) position_diff=(item_left/scope.pixelsPerSecond)-item_data.position;scope.$apply(function(){item_data.layer=drop_track_num;item_data.position+=position_diff;});scope.ResizeTimeline();dropped_clips.push(item_data);if(scope.Qt &&item_type== 'clip') timeline.update_clip_data(JSON.stringify(item_data));else if(scope.Qt &&item_type== 'transition') timeline.update_transition_data(JSON.stringify(item_data));}});if(dropped_clips.length==1) for(var clip_index=0;clip_index< dropped_clips.length;clip_index++){var item_data=dropped_clips[clip_index];missing_transition_details=scope.GetMissingTransitions(item_data);if(scope.Qt &&missing_transition_details!=null) timeline.add_missing_transition(JSON.stringify(missing_transition_details));}dropped_clips=[];scope.enable_sorting=true;scope.SortItems();}});}};}   
)