traverso-commit
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]