File indexing completed on 2024-05-19 04:55:07
0001 /* 0002 SPDX-FileCopyrightText: 2013-2015 Meltytech LLC 0003 SPDX-FileCopyrightText: 2013-2015 Dan Dennedy <dan@dennedy.org> 0004 0005 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 function scrollIfNeeded() { 0009 if (!scrollView) return; 0010 var x = root.consumerPosition * timeline.scaleFactor; 0011 if (x > scrollView.contentX + scrollView.width - 50) 0012 scrollView.contentX = x - scrollView.width + 50; 0013 else if (x < 50) 0014 scrollView.contentX = 0; 0015 else if (x < scrollView.contentX + 50) 0016 scrollView.contentX = x - 50; 0017 } 0018 0019 function getTrackIndexFromPos(pos) { 0020 if (tracksRepeater.count > 0) { 0021 for (var i = 0; i < tracksRepeater.count; i++) { 0022 var trackY = tracksRepeater.itemAt(i).y 0023 var trackH = tracksRepeater.itemAt(i).height 0024 if (pos >= trackY && (pos < trackY + trackH || i == tracksRepeater.count - 1)) { 0025 return i 0026 } 0027 } 0028 } 0029 return -1 0030 } 0031 0032 function getTrackIdFromPos(pos) { 0033 var index = getTrackIndexFromPos(pos); 0034 if (index !== -1) { 0035 return tracksRepeater.itemAt(index).trackInternalId 0036 } 0037 return -1 0038 } 0039 0040 function getTrackYFromId(id) { 0041 var result = 0 0042 for (var i = 0; i < trackHeaderRepeater.count; i++) { 0043 if (trackHeaderRepeater.itemAt(i).trackId === id) { 0044 break; 0045 } 0046 result += trackHeaderRepeater.itemAt(i).height 0047 } 0048 return result 0049 } 0050 0051 function getTrackIndexFromId(id) { 0052 var i = 0; 0053 for (; i < trackHeaderRepeater.count; i++) { 0054 if (trackHeaderRepeater.itemAt(i).trackId === id) { 0055 break; 0056 } 0057 } 0058 return i 0059 } 0060 0061 function getTrackHeaderById(id) { 0062 var i = 0; 0063 for (; i < trackHeaderRepeater.count; i++) { 0064 if (trackHeaderRepeater.itemAt(i).trackId === id) { 0065 return trackHeaderRepeater.itemAt(i); 0066 } 0067 } 0068 return 0 0069 } 0070 0071 function getTrackById(id) { 0072 var i = 0; 0073 for (; i < tracksRepeater.count; i++) { 0074 if (tracksRepeater.itemAt(i).trackInternalId === id) { 0075 return tracksRepeater.itemAt(i); 0076 } 0077 } 0078 return 0 0079 } 0080 0081 function getTrackHeightByPos(pos) { 0082 if (pos >= 0 && pos < tracksRepeater.count) { 0083 return tracksRepeater.itemAt(pos).height 0084 } 0085 return 0 0086 } 0087 0088 function getTrackYFromMltIndex(id) { 0089 if (id <= 0) { 0090 return 0 0091 } 0092 var result = - scrollView.contentY 0093 for (var i = 0; i < trackHeaderRepeater.count - id; i++) { 0094 result += trackHeaderRepeater.itemAt(i).height 0095 } 0096 return result 0097 } 0098 0099 function getTracksList() { 0100 var result = new Array(2); 0101 var aTracks = 0 0102 var vTracks = 0 0103 for (var i = 0; i < trackHeaderRepeater.count; i++) { 0104 if (trackHeaderRepeater.itemAt(i).isAudio) { 0105 aTracks ++; 0106 } else { 0107 vTracks ++; 0108 } 0109 } 0110 result[0] = aTracks; 0111 result[1] = vTracks; 0112 return result 0113 } 0114 0115 function acceptDrop(xml) { 0116 var position = Math.round((dropTarget.x + scrollView.contentX - headerWidth) / timeline.scaleFactor) 0117 timeline.insertClip(currentTrack, position, xml) 0118 /*if (timeline.ripple) 0119 timeline.insert(currentTrack, position, xml) 0120 else 0121 timeline.overwrite(currentTrack, position, xml)*/ 0122 } 0123 0124 function trackHeight(isAudio) { 0125 return isAudio? Math.max(40, timeline.trackHeight) : timeline.trackHeight * 2 0126 } 0127