[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso resources/keymap.xml src/commands/Move...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso resources/keymap.xml src/commands/Move... |
Date: |
Fri, 06 Apr 2007 09:29:03 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/04/06 09:29:03
Modified files:
resources : keymap.xml
src/commands : MoveClip.cpp MoveClip.h
src/core : SnapList.cpp SnapList.h
src/traverso/songcanvas: TimeLineView.cpp
Log message:
* Added (rather naive) implementation for snap to next/prev snap point
during audioclip move.
Keys: S, F, left/right arrow, mousewheel.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/resources/keymap.xml?cvsroot=traverso&r1=1.46&r2=1.47
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/MoveClip.cpp?cvsroot=traverso&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/MoveClip.h?cvsroot=traverso&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/SnapList.cpp?cvsroot=traverso&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/SnapList.h?cvsroot=traverso&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineView.cpp?cvsroot=traverso&r1=1.13&r2=1.14
Patches:
Index: resources/keymap.xml
===================================================================
RCS file: /sources/traverso/traverso/resources/keymap.xml,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- resources/keymap.xml 5 Apr 2007 22:56:43 -0000 1.46
+++ resources/keymap.xml 6 Apr 2007 09:29:03 -0000 1.47
@@ -41,11 +41,13 @@
<keyfact type="FKEY" key1="LARROW" >
<Objects>
<Object objectname="SongView"
slotsignature="scroll_left" modes="All" sortorder="1" submenu="Scroll"
instantanious="0" />
+ <Object objectname="MoveClip"
slotsignature="prev_snap_pos" modes="All" sortorder="1" instantanious="1" />
</Objects>
</keyfact>
<keyfact type="FKEY" key1="RARROW" >
<Objects>
<Object objectname="SongView"
slotsignature="scroll_right" modes="All" sortorder="2" submenu="Scroll"
instantanious="0" />
+ <Object objectname="MoveClip"
slotsignature="next_snap_pos" modes="All" sortorder="1" instantanious="1" />
</Objects>
</keyfact>
<keyfact type="FKEY" key1="UARROW" >
@@ -92,6 +94,7 @@
<Objects>
<Object objectname="Project"
slotsignature="select" modes="All" instantanious="0" />
<Object objectname="AudioClip" modes="All"
sortorder="5" submenu="Selection" pluginname="TraversoCommands"
commandname="ClipSelectionSelect" arguments="select_clip" />
+ <Object objectname="MoveClip"
slotsignature="prev_snap_pos" modes="All" sortorder="1" instantanious="1" />
</Objects>
</keyfact>
<keyfact type="FKEY" key1="SPACE" >
@@ -223,6 +226,7 @@
<keyfact type="FKEY" key1="F" >
<Objects>
<Object objectname="AudioClipView"
slotsignature="select_fade_shape" modes="All" sortorder="32" submenu="Fade
In/Out" instantanious="0" />
+ <Object objectname="MoveClip"
slotsignature="next_snap_pos" modes="All" sortorder="1" instantanious="1" />
</Objects>
</keyfact>
Index: src/commands/MoveClip.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/commands/MoveClip.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- src/commands/MoveClip.cpp 5 Apr 2007 17:53:48 -0000 1.28
+++ src/commands/MoveClip.cpp 6 Apr 2007 09:29:03 -0000 1.29
@@ -146,7 +146,7 @@
}
m_originTrack = m_targetTrack = m_clip->get_track();
- m_originalTrackFirstFrame = m_clip->get_track_start_frame();
+ m_originalTrackFirstFrame = d->snappos =
m_clip->get_track_start_frame();
m_posDiff = 0;
d->origXPos = cpointer().on_first_input_event_x();
d->origPos = QPoint(d->origXPos, cpointer().on_first_input_event_y());
@@ -386,14 +386,18 @@
void MoveClip::next_snap_pos(bool autorepeat)
{
- Q_UNUSED(autorepeat)
- // TODO implement me!
+ Q_UNUSED(autorepeat);
+ d->snappos = m_song->get_snap_list()->next_snap_pos(d->snappos);
+ m_posDiff = d->snappos - m_originalTrackFirstFrame;
+ m_clip->set_track_start_frame(d->snappos);
}
void MoveClip::prev_snap_pos(bool autorepeat)
{
- Q_UNUSED(autorepeat)
- // TODO implement me!
+ Q_UNUSED(autorepeat);
+ d->snappos = m_song->get_snap_list()->prev_snap_pos(d->snappos);
+ m_posDiff = d->snappos - m_originalTrackFirstFrame;
+ m_clip->set_track_start_frame(d->snappos);
}
void MoveClip::move_to_start(bool autorepeat)
Index: src/commands/MoveClip.h
===================================================================
RCS file: /sources/traverso/traverso/src/commands/MoveClip.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- src/commands/MoveClip.h 5 Apr 2007 17:53:48 -0000 1.14
+++ src/commands/MoveClip.h 6 Apr 2007 09:29:03 -0000 1.15
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- $Id: MoveClip.h,v 1.14 2007/04/05 17:53:48 r_sijrier Exp $
+ $Id: MoveClip.h,v 1.15 2007/04/06 09:29:03 r_sijrier Exp $
*/
#ifndef MOVECLIPACTION_H
@@ -72,6 +72,7 @@
nframes_t origTrackStartFrame;
nframes_t origTrackEndFrame;
bool resync;
+ nframes_t snappos;
};
Index: src/core/SnapList.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/SnapList.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- src/core/SnapList.cpp 2 Apr 2007 04:52:49 -0000 1.11
+++ src/core/SnapList.cpp 6 Apr 2007 09:29:03 -0000 1.12
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: SnapList.cpp,v 1.11 2007/04/02 04:52:49 benjie Exp $
+$Id: SnapList.cpp,v 1.12 2007/04/06 09:29:03 r_sijrier Exp $
*/
#include "SnapList.h"
@@ -33,6 +33,14 @@
#include <Debugger.h>
+#define debugsnaplist
+
+#if defined (debugsnaplist)
+#define SLPRINT(args...) printf(args)
+#else
+#define SLPRINT(args...)
+#endif
+
static const int SNAP_WIDTH = 10;
SnapList::SnapList(Song* song)
@@ -61,7 +69,7 @@
// collects all clip boundaries and adds them to the snap list
QList<AudioClip* >* acList =
m_song->get_audioclip_manager()->get_clip_list();
-// printf("acList size is %d\n", acList->size());
+ SLPRINT("acList size is %d\n", acList->size());
// Be able to snap to trackstart
if (m_rangeStart == 0) {
@@ -117,8 +125,8 @@
xposBool.push_back(false);
}
- int lastVal = -1;
- int lastIndex = -1;
+ long lastVal = -1;
+ long lastIndex = -1;
// now modify the regions around snap points in the lookup table
for (int i = 0; i < xposList.size(); i++) {
if (xposList.at(i) == lastVal) {
@@ -167,33 +175,34 @@
}
int i = (pos - m_rangeStart) / m_scalefactor;
-// printf("get_snap_value:: i is %d\n", i);
+ SLPRINT("get_snap_value:: i is %d\n", i);
// catch dangerous values:
if (i < 0) {
-// printf("get_snap_value:: i < 0\n");
+ SLPRINT("get_snap_value:: i < 0\n");
return pos;
}
if (xposLut.isEmpty()) {
-// printf("get_snap_value:: empty lut\n");
+ SLPRINT("get_snap_value:: empty lut\n");
return pos;
}
if (i >= xposLut.size()) {
-// printf("get_snap_value:: i > xposLut.size()\n");
+ SLPRINT("get_snap_value:: i > xposLut.size()\n");
return pos;
}
if (is_snap_value(pos)) {
-// printf("get_snap_value returns: %d (was %d)\n", xposLut.at(i),
pos);
+ SLPRINT("get_snap_value returns: %d (was %d)\n", xposLut.at(i),
pos);
return xposLut.at(i);
}
-// printf("get_snap_value returns: %d (was %d)\n", pos, pos);
+ SLPRINT("get_snap_value returns: %d (was %d)\n", pos, pos);
return pos;
}
+
// returns true if i is inside a snap area, else returns false
bool SnapList::is_snap_value(nframes_t pos)
{
@@ -202,7 +211,7 @@
}
int i = (pos - m_rangeStart) / m_scalefactor;
-// printf("is_snap_value:: i is %d\n", i);
+ SLPRINT("is_snap_value:: i is %d\n", i);
// need to catch values outside the LUT. Return false in that case
if (i < 0) {
@@ -213,7 +222,7 @@
return false;
}
-// printf("is_snap_value returns: %d\n", xposBool.at(i));
+ SLPRINT("is_snap_value returns: %d\n", xposBool.at(i));
return xposBool.at(i);
}
@@ -226,7 +235,7 @@
}
int i = (pos - m_rangeStart) / m_scalefactor;
-// printf("get_snap_diff:: i is %d\n", i);
+ SLPRINT("get_snap_diff:: i is %d\n", i);
// need to catch values outside the LUT. Return 0 in that case
if (i < 0) {
@@ -237,13 +246,13 @@
return 0;
}
-// printf("get_snap_diff returns: %d\n", xposLut.at(i));
+ SLPRINT("get_snap_diff returns: %d\n", xposLut.at(i));
return pos - xposLut.at(i);
}
void SnapList::set_range(nframes_t start, nframes_t end, int scalefactor)
{
- //printf("setting xstart %d, xend %d scalefactor %d\n", start, end,
scalefactor);
+ SLPRINT("setting xstart %d, xend %d scalefactor %d\n", start, end,
scalefactor);
if (m_rangeStart == start && m_rangeEnd == end && m_scalefactor ==
scalefactor) {
return;
@@ -255,4 +264,59 @@
m_isDirty = true;
};
+nframes_t SnapList::next_snap_pos(nframes_t pos)
+{
+ int index = pos / m_scalefactor;
+
+ nframes_t newpos = pos;
+
+ if (index > xposLut.size()) {
+ index = xposLut.size() - 1;
+ }
+
+ for (; index<xposLut.size(); ++index) {
+ nframes_t snap = xposLut.at(index);
+ if (snap > pos) {
+ newpos = snap;
+ break;
+ }
+ }
+
+ return newpos;
+}
+
+nframes_t SnapList::prev_snap_pos(nframes_t pos)
+{
+ if (! xposLut.size()) {
+ return pos;
+ }
+
+ nframes_t newpos = pos;
+
+ int index = pos / m_scalefactor;
+ if (index > xposLut.size()) {
+ index = xposLut.size() - 1;
+ }
+
+ do {
+ nframes_t snap = xposLut.at(index);
+ if (snap < pos && snap != 0) {
+ newpos = snap;
+ break;
+ }
+ index--;
+ } while (index >= 0);
+
+ if (index == -1) {
+ return 0;
+ }
+
+ if (newpos == pos) {
+ return pos;
+ }
+
+ return newpos;
+}
+
/* EOF */
+
Index: src/core/SnapList.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/SnapList.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- src/core/SnapList.h 2 Apr 2007 04:52:49 -0000 1.9
+++ src/core/SnapList.h 6 Apr 2007 09:29:03 -0000 1.10
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: SnapList.h,v 1.9 2007/04/02 04:52:49 benjie Exp $
+$Id: SnapList.h,v 1.10 2007/04/06 09:29:03 r_sijrier Exp $
*/
#ifndef SNAPLIST_H
@@ -43,6 +43,8 @@
int get_snap_value(nframes_t);
bool is_snap_value(nframes_t);
int get_snap_diff(nframes_t);
+ nframes_t next_snap_pos(nframes_t pos);
+ nframes_t prev_snap_pos(nframes_t pos);
void set_range(nframes_t start, nframes_t end, int scalefactor);
Index: src/traverso/songcanvas/TimeLineView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TimeLineView.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- src/traverso/songcanvas/TimeLineView.cpp 6 Apr 2007 07:43:30 -0000
1.13
+++ src/traverso/songcanvas/TimeLineView.cpp 6 Apr 2007 09:29:03 -0000
1.14
@@ -135,8 +135,8 @@
{
m_newWhen = (uint) (cpointer().scene_x() * m_scalefactor);
- if (m_mview->get_marker()->get_timeline()->get_song()->is_snap_on()) {
- SnapList* slist =
m_mview->get_marker()->get_timeline()->get_song()->get_snap_list();
+ if (m_marker->get_timeline()->get_song()->is_snap_on()) {
+ SnapList* slist =
m_marker->get_timeline()->get_song()->get_snap_list();
m_newWhen = slist->get_snap_value(m_newWhen);
}
- [Traverso-commit] traverso resources/keymap.xml src/commands/Move...,
Remon Sijrier <=