Update of /cvsroot/audacity/audacity-src/src
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv8267

Modified Files:
        Track.cpp Track.h WaveTrack.cpp 
Log Message:
Most of the effects should use an iterator over Selected Wave Tracks.
SelectedTrackListOfKindIterator created and respective files updated (I hope 
all of them).
Fix for Paste when the initial paste position is not the same as the initial 
selection (ex.: Repeat Effect).

Index: Track.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Track.h,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- Track.h     18 Jun 2009 00:40:04 -0000      1.59
+++ Track.h     25 Jun 2009 02:16:00 -0000      1.60
@@ -211,7 +211,7 @@
 };
 
 //
-// VisibleTrackIterator
+// TrackListOfKindIterator
 //
 // Based on TrackListIterator and returns only tracks of the specified type.
 //
@@ -229,6 +229,24 @@
 };
 
 //
+// SelectedTrackListOfKindIterator
+//
+// Based on TrackListOfKindIterator and returns only tracks selected.
+//
+class AUDACITY_DLL_API SelectedTrackListOfKindIterator: public 
TrackListOfKindIterator
+{
+ public:
+    SelectedTrackListOfKindIterator(int kind, TrackList * val = NULL) : 
TrackListOfKindIterator(kind, val) {};
+
+   // Iterate functions
+   Track *First(TrackList * val = NULL);
+   Track *Next(bool skiplinked = false);
+
+ private:
+   int kind;
+};
+
+//
 // VisibleTrackIterator
 //
 // Based on TrackListIterator returns only the currently visible tracks.

Index: WaveTrack.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/WaveTrack.cpp,v
retrieving revision 1.156
retrieving revision 1.157
diff -u -d -r1.156 -r1.157
--- WaveTrack.cpp       24 Jun 2009 23:55:40 -0000      1.156
+++ WaveTrack.cpp       25 Jun 2009 02:16:00 -0000      1.157
@@ -32,6 +32,7 @@
 #include <wx/debug.h>
 
 #include <math.h>
+#include <algorithm>
 
 #include "float_cast.h"
 
@@ -50,6 +51,8 @@
 
 #include "ondemand/ODManager.h"
 
+using std::max;
+
 WaveTrack* TrackFactory::DuplicateWaveTrack(WaveTrack &orig)
 {
    return (WaveTrack*)(orig.Duplicate());
@@ -808,7 +811,7 @@
    
    double length = src->GetEndTime();
    ViewInfo *info = &p->mViewInfo;
-   double sel_len = info->sel1 - info->sel0;
+   double sel_len = max(info->sel1 - max(info->sel0, t0), 0.0);
    
    TrackGroupIterator it(tracks);
    Track *t = it.First(this);

Index: Track.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Track.cpp,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- Track.cpp   18 Jun 2009 09:56:15 -0000      1.63
+++ Track.cpp   25 Jun 2009 02:16:00 -0000      1.64
@@ -360,6 +360,29 @@
    return NULL;
 }
 
+//SelectedTrackListOfKindIterator
+Track *SelectedTrackListOfKindIterator::First(TrackList * val)
+{
+   Track *t = TrackListOfKindIterator::First(val);
+
+   while (t && !t->GetSelected()) {
+      t = TrackListOfKindIterator::Next();
+   }
+
+   return t;
+}
+
+Track *SelectedTrackListOfKindIterator::Next(bool skiplinked)
+{
+   while (Track *t = TrackListOfKindIterator::Next(skiplinked)) {
+      if (t->GetSelected()) {
+         return t;
+      }
+   }
+
+   return NULL;
+}
+
 // VisibleTrackIterator
 //
 // Based on TrackListIterator returns only the currently visible tracks.


------------------------------------------------------------------------------
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to