[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso/src core/Sheet.cpp core/Sheet.h traver...
From: |
Nicola Doebelin |
Subject: |
[Traverso-commit] traverso/src core/Sheet.cpp core/Sheet.h traver... |
Date: |
Thu, 02 Oct 2008 19:56:40 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Nicola Doebelin <n_doebelin> 08/10/02 19:56:39
Modified files:
src/core : Sheet.cpp Sheet.h
src/traverso/widgets: TransportConsoleWidget.cpp
TransportConsoleWidget.h
Log message:
moved the code for skipping to prev/next snap position from transport
console to sheet
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Sheet.cpp?cvsroot=traverso&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Sheet.h?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/TransportConsoleWidget.cpp?cvsroot=traverso&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/TransportConsoleWidget.h?cvsroot=traverso&r1=1.7&r2=1.8
Patches:
Index: core/Sheet.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Sheet.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- core/Sheet.cpp 21 Feb 2008 20:13:42 -0000 1.9
+++ core/Sheet.cpp 2 Oct 2008 19:56:39 -0000 1.10
@@ -1443,3 +1443,117 @@
return 0;
}
+
+void Sheet::prev_snap_pos(int steps)
+{
+ if (snaplist->was_dirty()) {
+ update_skip_positions();
+ }
+
+ TimeRef p = get_transport_location();
+
+ if (p < TimeRef()) {
+ PERROR("pos < 0");
+ set_transport_pos(TimeRef());
+ return;
+ }
+
+ QListIterator<TimeRef> it(m_xposList);
+
+ it.toBack();
+
+ int i = 0;
+ while (it.hasPrevious()) {
+ TimeRef pos = it.previous();
+ if (pos < p) {
+ p = pos;
+ ++i;
+ }
+ if (i >= steps) {
+ break;
+ }
+ }
+
+ set_transport_pos(p);
+}
+
+void Sheet::next_snap_pos(int steps)
+{
+ if (snaplist->was_dirty()) {
+ update_skip_positions();
+ }
+
+ TimeRef p = get_transport_location();
+
+ if (p > m_xposList.last()) {
+ PERROR("pos > last snap position");
+ return;
+ }
+
+ QListIterator<TimeRef> it(m_xposList);
+
+ int i = 0;
+ while (it.hasNext()) {
+ TimeRef pos = it.next();
+ if (pos > p) {
+ p = pos;
+ ++i;
+ }
+ if (i >= steps) {
+ break;
+ }
+ }
+
+ set_transport_pos(p);
+}
+
+void Sheet::update_skip_positions()
+{
+ m_xposList.clear();
+
+ // store the beginning of the sheet and the work cursor
+ m_xposList << TimeRef();
+ m_xposList << get_work_location();
+
+ // store all clip borders
+ QList<AudioClip* > acList = get_audioclip_manager()->get_clip_list();
+ for (int i = 0; i < acList.size(); ++i) {
+ m_xposList << acList.at(i)->get_track_start_location();
+ m_xposList << acList.at(i)->get_track_end_location();
+ }
+
+ // store all marker positions
+ QList<Marker*> markerList = get_timeline()->get_markers();
+ for (int i = 0; i < markerList.size(); ++i) {
+ m_xposList << markerList.at(i)->get_when();
+ }
+
+ qSort(m_xposList);
+
+ // remove duplicates
+ QMutableListIterator<TimeRef> it(m_xposList);
+ while (it.hasNext()) {
+ TimeRef val = it.next();
+ if (m_xposList.count(val) > 1) {
+ it.remove();
+ }
+ }
+}
+
+void Sheet::to_start()
+{
+ set_transport_pos((TimeRef()));
+ set_work_at((TimeRef()));
+}
+
+void Sheet::to_end()
+{
+ // stop the transport, no need to play any further than the end of the
sheet
+ if (is_transport_rolling())
+ {
+ start_transport();
+ }
+ set_transport_pos(get_last_location());
+}
+
+//eof
Index: core/Sheet.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Sheet.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- core/Sheet.h 14 Feb 2008 10:32:22 -0000 1.3
+++ core/Sheet.h 2 Oct 2008 19:56:39 -0000 1.4
@@ -121,6 +121,11 @@
int set_state( const QDomNode & node );
void set_recording(bool recording, bool realtime);
+ void next_snap_pos(int steps = 1);
+ void prev_snap_pos(int steps = 1);
+ void to_start();
+ void to_end();
+
int process(nframes_t nframes);
// jackd only feature
@@ -169,6 +174,7 @@
DiskIO* m_diskio;
AudioClipManager* m_acmanager;
TimeLine* m_timeline;
+ QList<TimeRef> m_xposList;
// The following data could be read/written by multiple threads
// (gui, audio and m_diskio thread). Therefore they should have
@@ -213,6 +219,7 @@
void start_seek();
void start_transport_rolling(bool realtime);
void stop_transport_rolling();
+ void update_skip_positions();
void resize_buffer(bool updateArmStatus, nframes_t size);
Index: traverso/widgets/TransportConsoleWidget.cpp
===================================================================
RCS file:
/sources/traverso/traverso/src/traverso/widgets/TransportConsoleWidget.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- traverso/widgets/TransportConsoleWidget.cpp 2 Oct 2008 17:28:16 -0000
1.13
+++ traverso/widgets/TransportConsoleWidget.cpp 2 Oct 2008 19:56:39 -0000
1.14
@@ -101,29 +101,21 @@
void TransportConsoleWidget::to_start()
{
- m_sheet->set_transport_pos((TimeRef()));
- m_sheet->set_work_at((TimeRef()));
+ m_sheet->to_start();
}
// the timer is used to allow 'hopping' to the left from snap position to snap
position
// even during playback.
void TransportConsoleWidget::to_left()
{
- if (m_sheet->get_snap_list()->was_dirty()) {
- update_snappositions();
- }
-
- TimeRef p = m_sheet->get_transport_location();
+ int steps = 1;
if (m_skipTimer.isActive())
{
- p = m_lastSnapPosition;
+ ++steps;
}
- TimeRef newpos = prev_snap_pos(p);
- m_sheet->set_transport_pos(newpos);
-
- m_lastSnapPosition = newpos;
+ m_sheet->prev_snap_pos(steps);
m_skipTimer.start(500);
}
@@ -139,21 +131,12 @@
void TransportConsoleWidget::to_end()
{
- // stop the transport, no need to play any further than the end of the
sheet
- if (m_sheet->is_transport_rolling())
- {
- m_sheet->start_transport();
- }
- m_sheet->set_transport_pos(m_sheet->get_last_location());
+ m_sheet->to_end();
}
void TransportConsoleWidget::to_right()
{
- if (m_sheet->get_snap_list()->was_dirty()) {
- update_snappositions();
- }
-
-
m_sheet->set_transport_pos(next_snap_pos(m_sheet->get_transport_location()));
+ m_sheet->next_snap_pos();
}
void TransportConsoleWidget::transfer_started()
@@ -222,77 +205,7 @@
setIconSize(QSize(iconsize, iconsize));
}
-void TransportConsoleWidget::update_snappositions()
-{
- m_xposList.clear();
-
- // store the beginning of the sheet and the work cursor
- m_xposList << TimeRef();
- m_xposList << m_sheet->get_work_location();
-
- // store all clip borders
- QList<AudioClip* > acList =
m_sheet->get_audioclip_manager()->get_clip_list();
- for (int i = 0; i < acList.size(); ++i) {
- m_xposList << acList.at(i)->get_track_start_location();
- m_xposList << acList.at(i)->get_track_end_location();
- }
-
- // store all marker positions
- QList<Marker*> markerList = m_sheet->get_timeline()->get_markers();
- for (int i = 0; i < markerList.size(); ++i) {
- m_xposList << markerList.at(i)->get_when();
- }
-
- qSort(m_xposList);
-
- // remove duplicates
- QMutableListIterator<TimeRef> it(m_xposList);
- while (it.hasNext()) {
- TimeRef val = it.next();
- if (m_xposList.count(val) > 1) {
- it.remove();
- }
- }
-}
-
-TimeRef TransportConsoleWidget::prev_snap_pos(const TimeRef& p)
-{
- if (p < TimeRef()) {
- PERROR("pos < 0");
- return TimeRef();
- }
-
- QListIterator<TimeRef> it(m_xposList);
-
- it.toBack();
- while (it.hasPrevious()) {
- TimeRef pos = it.previous();
- if (pos < p) {
- return pos;
- }
- }
-
- return p;
-}
-
-TimeRef TransportConsoleWidget::next_snap_pos(const TimeRef& p)
-{
- if (p > m_xposList.last()) {
- PERROR("pos > last snap position");
- return p;
- }
-
- QListIterator<TimeRef> it(m_xposList);
- while (it.hasNext()) {
- TimeRef pos = it.next();
- if (pos > p) {
- return pos;
- }
- }
-
- return p;
-}
//eof
Index: traverso/widgets/TransportConsoleWidget.h
===================================================================
RCS file:
/sources/traverso/traverso/src/traverso/widgets/TransportConsoleWidget.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- traverso/widgets/TransportConsoleWidget.h 1 Oct 2008 20:26:49 -0000
1.7
+++ traverso/widgets/TransportConsoleWidget.h 2 Oct 2008 19:56:39 -0000
1.8
@@ -55,9 +55,6 @@
QTimer m_updateTimer;
QTimer m_skipTimer;
TimeRef m_lastSnapPosition;
- QList<TimeRef> m_xposList;
- TimeRef prev_snap_pos(const TimeRef&);
- TimeRef next_snap_pos(const TimeRef&);
protected slots:
void set_project(Project*);
@@ -76,7 +73,6 @@
void update_recording_state();
void update_label();
void update_layout();
- void update_snappositions();
};
#endif
- [Traverso-commit] traverso/src core/Sheet.cpp core/Sheet.h traver...,
Nicola Doebelin <=