34 for (var i=0; i < arr.length; i++)
35 if (arr[i][propName] == propValue)
44 if ($(
".track").length)
45 if ($(
".track").css(
"margin-bottom"))
46 track_margin = parseInt($(
".track").css(
"margin-bottom").replace(
"px",
""));
48 return $(
"#track-container").
height() - track_margin;
57 element = $(
"#clip_"+clip_id);
60 var samples_per_second = 20;
61 var start_sample =
clip.start * samples_per_second;
62 var end_sample =
clip.end * samples_per_second;
65 var sample_divisor = samples_per_second / scope.pixelsPerSecond;
68 element.find(
".audio-container").show();
71 var audio_canvas = element.find(
".audio");
72 var ctx = audio_canvas[0].getContext(
'2d');
75 ctx.canvas.width = ctx.canvas.width;
78 ctx.translate(0.5, 0.5);
82 var mid_point = audio_canvas.height() - 8;
87 ctx.moveTo(0, mid_point);
88 ctx.lineTo(audio_canvas.width(), mid_point);
89 ctx.strokeStyle =
"#2a82da";
94 for (var i = 1; i < audio_canvas.width(); i+=1) {
98 ctx.moveTo(line_spot, mid_point);
99 sample_index = Math.round(start_sample + (sample_divisor * i));
100 var audio_point =
clip.audio_data[sample_index];
102 var draw_to = (audio_point * mid_point);
104 if (audio_point >= 0.0) draw_to = mid_point - draw_to;
105 if (audio_point < 0.0) draw_to = mid_point + (draw_to * -1.0);
107 ctx.lineTo(line_spot, draw_to);
116 return (
"10000"+value).slice(-1* pad_length);
123 var milliseconds = secs * 1000;
124 var sec = Math.floor(milliseconds/1000);
125 var milli = milliseconds % 1000;
126 var min = Math.floor(sec/60);
128 var hour = Math.floor(min/60);
130 var day = Math.floor(hour/24);
131 var hour = hour % 24;
132 var week = Math.floor(day/7);
135 var frame = Math.round((milli / 1000.0) * (fps_num / fps_den)) + 1;
136 return {
"week":
padNumber(week,2),
"day":
padNumber(day,2),
"hour":
padNumber(hour,2),
"min":
padNumber(min,2),
"sec":
padNumber(sec,2),
"milli":
padNumber(milli,2),
"frame":
padNumber(frame,2) };
143 var track_position = 0;
144 var track_number = 0;
145 for (var layer_index = scope.project.layers.length - 1; layer_index >= 0 ; layer_index--) {
146 var layer = scope.project.layers[layer_index];
150 if ((top < layer.y && top > track_position) || track_position==0) {
152 track_position = layer.y;
153 track_number = layer.number;
164 var track_position = 0;
165 var track_number = 0;
166 for (var layer_index = scope.project.layers.length - 1; layer_index >= 0 ; layer_index--) {
167 var layer = scope.project.layers[layer_index];
170 if (layer.lock && layer.y >= top && layer.y <= bottom) {
183 var vert_scroll_offset = $(
"#scrolling_tracks").
scrollTop();
184 var horz_scroll_offset = $(
"#scrolling_tracks").scrollLeft();
186 var item_bottom = item.position().top + item.height() + vert_scroll_offset;
187 var item_top = item.position().top + vert_scroll_offset;
188 var item_left = item.position().left + horz_scroll_offset;
189 var item_right = item.position().left + horz_scroll_offset + item.width();
214 function moveBoundingBox(scope, previous_x, previous_y, x_offset, y_offset, left, top) {
216 var snapping_result = Object();
217 snapping_result.left = left;
218 snapping_result.top = top;
221 if (scope.shift_pressed) {
224 snapping_result.left = previous_x;
239 snapping_result.left = previous_x + x_offset;
246 snapping_result.top = previous_y + y_offset;
253 snapping_result.top = previous_y + y_offset;
258 $(
".ui-selected").
each(
function() {
259 var item_id = $(
this).attr(
'id');
260 selected_ids[item_id.substr(item_id.indexOf(
"_") + 1)] =
true;
264 var bounding_box_padding = 3;
265 var results = scope.GetNearbyPosition([
bounding_box.left,
bounding_box.right + bounding_box_padding], 1.0, selected_ids);
266 var nearby_offset = results[0] * scope.pixelsPerSecond;
267 var snapline_position = results[1];
269 if (snapline_position) {
271 scope.ShowSnapline(snapline_position);
273 if (scope.enable_snapping) {
277 x_offset -= nearby_offset;
280 snapping_result.left -= nearby_offset;
285 scope.HideSnapline();
288 return {
'position': snapping_result,
'x_offset' : x_offset,
'y_offset' : y_offset };
jQuery(function(){if(!jQuery.support.reliableMarginRight){jQuery.cssHooks.marginRight={get:function(elem, computed){if(computed){return jQuery.swap(elem,{"display":"inline-block"}, curCSS, [elem,"marginRight"]);}}};}if(!jQuery.support.pixelPosition &&jQuery.fn.position){jQuery.each(["top","left"], function(i, prop){jQuery.cssHooks[prop]={get:function(elem, computed){if(computed){computed=curCSS(elem, prop);return rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed;}}};});}})
function getTrackContainerHeight()
function findElement(arr, propName, propValue)
function moveBoundingBox(scope, previous_x, previous_y, x_offset, y_offset, left, top)
function setBoundingBox(item)
function padNumber(value, pad_length)
Tween propHooks scrollTop
function drawAudio(scope, clip_id)
jQuery each(["height","width"], function(i, name){jQuery.cssHooks[name]={get:function(elem, computed, extra){if(computed){return elem.offsetWidth===0 &&rdisplayswap.test(jQuery.css(elem,"display"))?jQuery.swap(elem, cssShow, function(){return getWidthOrHeight(elem, name, extra);}):getWidthOrHeight(elem, name, extra);}}, set:function(elem, value, extra){var styles=extra &&getStyles(elem);return setPositiveNumber(elem, value, extra?augmentWidthOrHeight(elem, name, extra, jQuery.support.boxSizing &&jQuery.css(elem,"boxSizing", false, styles)==="border-box", styles):0);}};})
function hasLockedTrack(scope, top, bottom)
function findTrackAtLocation(scope, top)
function secondsToTime(secs, fps_num, fps_den)
var track_container_height