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

Modified Files:
        AutoDuck.cpp ChangeSpeed.cpp ClickRemoval.cpp Echo.cpp 
        Effect.cpp Effect.h Equalization.cpp Generator.cpp 
        NoiseRemoval.cpp Normalize.cpp Repair.cpp Repeat.cpp 
        Reverse.cpp SBSMSEffect.cpp SimpleMono.cpp 
        SimplePairedTwoTrack.h SoundTouchEffect.cpp StereoToMono.cpp 
        TruncSilence.cpp TwoPassSimpleMono.cpp TwoPassSimpleMono.h 
Log Message:
Fixed Bugs Related with Clearing tracks inside Groups (p.e. Truncate Effect 
Bug, Clear WaveTrack between Time and Label Track)
Removed some warnings.
Added Track::All enum to match all tracks. Edited TrackListOfKindIterator to 
match Track::All meaning.

Index: Equalization.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Equalization.cpp,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -d -r1.95 -r1.96
--- Equalization.cpp    25 May 2009 11:34:58 -0000      1.95
+++ Equalization.cpp    18 Jun 2009 00:40:05 -0000      1.96
@@ -444,10 +444,10 @@
 
 bool EffectEqualization::Process()
 {
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *) iter.First();
    int count = 0;
    while (track) {
@@ -472,7 +472,7 @@
       count++;
    }
 
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: ChangeSpeed.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/ChangeSpeed.cpp,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- ChangeSpeed.cpp     30 Mar 2009 10:34:12 -0000      1.58
+++ ChangeSpeed.cpp     18 Jun 2009 00:40:05 -0000      1.59
@@ -89,10 +89,10 @@
        // Similar to EffectSoundTouch::Process()
 
    //Iterate over each track
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack* pOutWaveTrack = (WaveTrack*)(iter.First());
    mCurTrackNum = 0;
        m_maxNewLength = 0.0;
@@ -145,13 +145,13 @@
       double timeAdded = newLen - len;
       double sel = mCurT1-mCurT0;
       double percent = (sel / (timeAdded + sel)) * 100 - 100;
-      ReplaceProcessedWaveTracks(bGoodResult);
+      ReplaceProcessedTracks(bGoodResult);
       if (!(HandleGroupChangeSpeed(percent, mCurT0, mCurT1))) {
          bGoodResult = false;
       }
    }
    else {
-      ReplaceProcessedWaveTracks(bGoodResult);
+      ReplaceProcessedTracks(bGoodResult);
    }
 
    mT1 = mT0 + m_maxNewLength; // Update selection.

Index: TruncSilence.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/TruncSilence.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- TruncSilence.cpp    21 May 2009 23:33:21 -0000      1.24
+++ TruncSilence.cpp    18 Jun 2009 00:40:05 -0000      1.25
@@ -206,8 +206,9 @@
    }
 
    // Start processing
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
-   TrackListIterator iterOut(mOutputWaveTracks);
+   //Track::All is needed because this effect has clear functionality
+   this->CopyInputTracks(Track::All); // Set up mOutputTracks.
+   TrackListOfKindIterator iterOut(Track::Wave, mOutputTracks);
 
    sampleCount index = start;
    sampleCount outTrackOffset = start;
@@ -388,7 +389,7 @@
    if (!cancelled && (outTrackOffset < end)) {
       t = (WaveTrack *) iterOut.First();
       while (t) {
-         t->Clear(outTrackOffset / rate, t1);
+         t->Clear(outTrackOffset / rate, t1, mOutputTracks);
          t = (WaveTrack *) iterOut.Next();
       }
       t1 = outTrackOffset / rate;
@@ -403,7 +404,7 @@
    mT0 = t0;
    mT1 = t1;
 
-   this->ReplaceProcessedWaveTracks(!cancelled); 
+   this->ReplaceProcessedTracks(!cancelled); 
    return !cancelled;
 }
 

Index: StereoToMono.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/StereoToMono.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- StereoToMono.cpp    25 Apr 2009 00:33:42 -0000      1.14
+++ StereoToMono.cpp    18 Jun 2009 00:40:05 -0000      1.15
@@ -100,7 +100,7 @@
    mLeftTrack->SetLinked(false);
    mRightTrack->SetLinked(false);
    mLeftTrack->SetChannel(Track::MonoChannel);
-   mOutputWaveTracks->Remove(mRightTrack);
+   mOutputTracks->Remove(mRightTrack);
    delete mRightTrack;
 
    delete [] leftBuffer;
@@ -113,10 +113,10 @@
 {
    // Do not use mWaveTracks here.  We will possibly delete tracks,
    // so we must use the "real" tracklist.
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    mLeftTrack = (WaveTrack *)iter.First();
    bool refreshIter = false;
 
@@ -167,6 +167,6 @@
 
    if(mOutTrack)
       delete mOutTrack;
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }

Index: Repair.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Repair.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- Repair.cpp  29 Sep 2008 22:38:06 -0000      1.7
+++ Repair.cpp  18 Jun 2009 00:40:05 -0000      1.8
@@ -56,10 +56,10 @@
 {
    //v This may be too much copying for EffectRepair. To support Cancel, may 
be able to copy much less.
    //  But for now, Cancel isn't supported without this.
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks. //v This may be 
too much copying for EffectRepair.
+   this->CopyInputTracks(); // Set up mOutputTracks. //v This may be too much 
copying for EffectRepair.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *) iter.First();
    int count = 0;
    while (track) {
@@ -118,7 +118,7 @@
       count++;
    }
 
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: AutoDuck.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/AutoDuck.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- AutoDuck.cpp        26 May 2009 06:43:51 -0000      1.14
+++ AutoDuck.cpp        18 Jun 2009 00:40:05 -0000      1.15
@@ -338,8 +338,8 @@
 
    if (!cancel)
    {
-      this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
-      TrackListIterator iter(mOutputWaveTracks);
+      this->CopyInputTracks(); // Set up mOutputTracks.
+      TrackListIterator iter(mOutputTracks);
       Track *iterTrack = iter.First();
       
       int trackNumber = 0;
@@ -368,7 +368,7 @@
       }
    }
    
-   this->ReplaceProcessedWaveTracks(!cancel); 
+   this->ReplaceProcessedTracks(!cancel); 
    return !cancel;
 }
 

Index: Repeat.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Repeat.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- Repeat.cpp  23 Mar 2009 07:19:37 -0000      1.30
+++ Repeat.cpp  18 Jun 2009 00:40:05 -0000      1.31
@@ -108,13 +108,13 @@
 
 bool EffectRepeat::Process()
 {
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
 
    int nTrack = 0;
    bool bGoodResult = true;
        double maxDestLen = 0.0; // used to change selection to generated bit
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *)iter.First();
    for (; track && bGoodResult; track = (WaveTrack *)iter.Next(), nTrack++) {
       double trackStart = track->GetStartTime();
@@ -158,7 +158,7 @@
           mT1 = maxDestLen;
    }
 
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: TwoPassSimpleMono.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/TwoPassSimpleMono.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- TwoPassSimpleMono.h 12 Jul 2008 15:25:48 -0000      1.6
+++ TwoPassSimpleMono.h 18 Jun 2009 00:40:05 -0000      1.7
@@ -30,7 +30,7 @@
 
    // Override these methods if you need to initialize something
    // before each pass. Return None if processing should stop.
-   // These should not depend on mOutputWaveTracks having been set up via 
CopyInputWaveTracks().
+   // These should not depend on mOutputTracks having been set up via 
CopyInputTracks().
    virtual bool InitPass1();
    virtual bool InitPass2();
    

Index: Effect.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Effect.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -d -r1.44 -r1.45
--- Effect.h    20 May 2009 06:22:49 -0000      1.44
+++ Effect.h    18 Jun 2009 00:40:05 -0000      1.45
@@ -56,7 +56,6 @@
 #define SKIP_EFFECT_MILLISECOND 99999
 
 class AUDACITY_DLL_API Effect {
-   
  // 
  // public methods
  //
@@ -197,7 +196,7 @@
                                // be created with this rate...
    TrackFactory   *mFactory;
    TrackList      *mTracks;      // the complete list of all tracks
-   TrackList      *mOutputWaveTracks; // used only if CopyInputWaveTracks() is 
called.
+   TrackList      *mOutputTracks; // used only if CopyInputTracks() is called.
    double         mT0;
    double         mT1;
 
@@ -239,18 +238,21 @@
    static double sDefaultGenerateLen;
    int mFlags;
    double mLength;
+
+   // type of the tracks on mOutputTracks
+   int mOutputTracksType;
  
  //
  // private methods
  //
-   // Use these two methods to copy the input tracks to mOutputWaveTracks, if 
+   // Use these two methods to copy the input tracks to mOutputTracks, if 
    // doing the processing on them, and replacing the originals only on 
success (and not cancel).
-   void CopyInputWaveTracks();
+   void CopyInputTracks(int trackType = Track::Wave);
    
    // If bGoodResult, replace mWaveTracks tracks in mTracks with successfully 
processed 
-   // mOutputWaveTracks copies, get rid of old mWaveTracks, and set 
mWaveTracks to mOutputWaveTracks. 
-   // Else clear and delete mOutputWaveTracks copies.
-   void ReplaceProcessedWaveTracks(const bool bGoodResult);
+   // mOutputTracks copies, get rid of old mWaveTracks, and set mWaveTracks to 
mOutputTracks. 
+   // Else clear and delete mOutputTracks copies.
+   void ReplaceProcessedTracks(const bool bGoodResult);
 
  // Used only by the base Effect class
  //

Index: NoiseRemoval.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/NoiseRemoval.cpp,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- NoiseRemoval.cpp    25 May 2009 11:19:19 -0000      1.59
+++ NoiseRemoval.cpp    18 Jun 2009 00:40:05 -0000      1.60
@@ -282,10 +282,10 @@
 
    // This same code will both remove noise and profile it,
    // depending on 'mDoProfile'
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *) iter.First();
    int count = 0;
    while (track) {
@@ -317,7 +317,7 @@
 
    if (bGoodResult)
       Cleanup();
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: Reverse.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Reverse.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- Reverse.cpp 12 Jul 2008 15:25:47 -0000      1.13
+++ Reverse.cpp 18 Jun 2009 00:40:05 -0000      1.14
@@ -31,10 +31,10 @@
 
 bool EffectReverse::Process()
 {
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *) iter.First();
    int count = 0;
    while (track) {
@@ -59,7 +59,7 @@
       count++;
    }
 
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: SBSMSEffect.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/SBSMSEffect.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- SBSMSEffect.cpp     30 Mar 2009 10:34:12 -0000      1.8
+++ SBSMSEffect.cpp     18 Jun 2009 00:40:05 -0000      1.9
@@ -158,8 +158,8 @@
    bool bGoodResult = true;
    
    //Iterate over each track
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
-   TrackListIterator iter(mOutputWaveTracks);
+   this->CopyInputTracks(); // Set up mOutputTracks.
+   TrackListIterator iter(mOutputTracks);
    WaveTrack* leftTrack = (WaveTrack*)(iter.First());
    WaveTrack* saveLeft = leftTrack;
    mCurTrackNum = 0;
@@ -360,13 +360,13 @@
       double timeAdded = newLen-len;
       double sel = mCurT1-mCurT0;
       double percent = (sel/(timeAdded+sel))*100 - 100;
-      ReplaceProcessedWaveTracks(bGoodResult); 
+      ReplaceProcessedTracks(bGoodResult); 
       if (!(HandleGroupChangeSpeed(percent, mCurT0, mCurT1))) {
          bGoodResult = false;
       }
    }
    else {
-      ReplaceProcessedWaveTracks(bGoodResult); 
+      ReplaceProcessedTracks(bGoodResult); 
    }
 
    // Update selection

Index: SimpleMono.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/SimpleMono.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- SimpleMono.cpp      23 Mar 2009 08:52:16 -0000      1.19
+++ SimpleMono.cpp      18 Jun 2009 00:40:05 -0000      1.20
@@ -29,10 +29,10 @@
 bool EffectSimpleMono::Process()
 {
    //Iterate over each track
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack* pOutWaveTrack = (WaveTrack*)(iter.First());
    mCurTrackNum = 0;
    while (pOutWaveTrack != NULL)
@@ -71,7 +71,7 @@
       mCurTrackNum++;
    }
 
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: Echo.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Echo.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- Echo.cpp    24 Jan 2009 11:06:37 -0000      1.34
+++ Echo.cpp    18 Jun 2009 00:40:05 -0000      1.35
@@ -75,10 +75,10 @@
 
 bool EffectEcho::Process()
 {
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *) iter.First();
    int count = 0;
    while (track) {
@@ -103,7 +103,7 @@
       count++;
    }
 
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: Generator.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Generator.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- Generator.cpp       30 Mar 2009 08:33:56 -0000      1.2
+++ Generator.cpp       18 Jun 2009 00:40:05 -0000      1.3
@@ -23,13 +23,13 @@
 
    BeforeGenerate();
 
-   // Set up mOutputWaveTracks
-   this->CopyInputWaveTracks();
+   // Set up mOutputTracks
+   this->CopyInputTracks();
 
    // Iterate over the tracks
    bool bGoodResult = true;
    int ntrack = 0;
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *)iter.First();
    while (track) {
       if (mDuration > 0.0)
@@ -67,7 +67,7 @@
 
    Success();
 
-   this->ReplaceProcessedWaveTracks(bGoodResult);
+   this->ReplaceProcessedTracks(bGoodResult);
    HandleLinkedTracksOnGenerate(mDuration, mT0);
 
    mT1 = mT0 + mDuration; // Update selection.

Index: SoundTouchEffect.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/SoundTouchEffect.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- SoundTouchEffect.cpp        30 Mar 2009 10:34:12 -0000      1.22
+++ SoundTouchEffect.cpp        18 Jun 2009 00:40:05 -0000      1.23
@@ -29,10 +29,10 @@
    // by the subclass for subclass-specific parameters.
    
    //Iterate over each track
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack* leftTrack = (WaveTrack*)(iter.First());
    mCurTrackNum = 0;
        m_maxNewLength = 0.0;
@@ -108,13 +108,13 @@
       double timeAdded = newLen-len;
       double sel = mCurT1 - mCurT0;
       double percent = (sel / (timeAdded + sel)) * 100 - 100;
-      ReplaceProcessedWaveTracks(bGoodResult); 
+      ReplaceProcessedTracks(bGoodResult); 
       if (!(HandleGroupChangeSpeed(percent, mCurT0, mCurT1))) {
          bGoodResult = false;
       }
    }
    else {
-      ReplaceProcessedWaveTracks(bGoodResult); 
+      ReplaceProcessedTracks(bGoodResult); 
    }
 
    delete mSoundTouch;

Index: Effect.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Effect.cpp,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -d -r1.74 -r1.75
--- Effect.cpp  26 May 2009 06:43:51 -0000      1.74
+++ Effect.cpp  18 Jun 2009 00:40:05 -0000      1.75
@@ -38,6 +38,8 @@
 #include "../WaveTrack.h"
 #include "../widgets/ProgressDialog.h"
 #include "../ondemand/ODManager.h"
+
+WX_DECLARE_HASH_MAP( int, int, wxIntegerHash, wxIntegerEqual, t2bHash );
 //
 // public static methods
 //
@@ -60,7 +62,8 @@
 Effect::Effect()
 {
    mTracks = NULL;
-   mOutputWaveTracks = NULL;
+   mOutputTracks = NULL;
+   mOutputTracksType = Track::None;
    mLength = 0;
    mNumTracks = 0;
    mNumGroups = 0;
@@ -78,9 +81,9 @@
 {
    wxASSERT(*t0 <= *t1);
 
-   if (mOutputWaveTracks) {
-      delete mOutputWaveTracks;
-      mOutputWaveTracks = NULL;
+   if (mOutputTracks) {
+      delete mOutputTracks;
+      mOutputTracks = NULL;
    }
 
    mFactory = factory;
@@ -114,9 +117,9 @@
 
    End();
 
-   if (mOutputWaveTracks) {
-      delete mOutputWaveTracks;
-      mOutputWaveTracks = NULL;
+   if (mOutputTracks) {
+      delete mOutputTracks;
+      mOutputTracks = NULL;
    }
 
    if (returnVal) {
@@ -180,45 +183,64 @@
 //
 // private methods
 //
-// Use these two methods to copy the input tracks to mOutputWaveTracks, if 
+// Use these two methods to copy the input tracks to mOutputTracks, if 
 // doing the processing on them, and replacing the originals only on success 
(and not cancel).
-void Effect::CopyInputWaveTracks()
+// Copy the group tracks that have tracks selected
+void Effect::CopyInputTracks(int trackType)
 {
-   if (GetNumWaveTracks() <= 0) {
-      return;
-   }
-
    // Reset map
    mIMap.Clear();
    mOMap.Clear();
 
-   // Copy the wavetracks, to process the copies.
-   TrackListOfKindIterator iter(Track::Wave, mTracks);
-   mOutputWaveTracks = new TrackList();
-   for (Track *t = iter.First(); t; t = iter.Next()) {
-      if (!t->GetSelected()) {
+   mOutputTracks = new TrackList();
+   mOutputTracksType = trackType;
+
+   //iterate over tracks of type trackType (All types if Track::All)
+   TrackListOfKindIterator aIt(trackType, mTracks);
+   t2bHash added;
+
+   //for each track that is selected
+   for (Track *aTrack = aIt.First(); aTrack; aTrack = aIt.Next()) {
+      if (!aTrack->GetSelected()) {
          continue;
       }
 
-      Track *o = mFactory->DuplicateWaveTrack(*(WaveTrack*)t);
-      mOutputWaveTracks->Add(o);
+      TrackGroupIterator gIt(mTracks);
+      Track *gTrack = gIt.First(aTrack);
 
-      mIMap.Add(t);
-      mOMap.Add(o);
+      //if the track is part of a group
+      if (trackType == Track::All && gTrack != NULL) {
+         //go to the project tracks and add all the tracks in the same group
+         for( ; gTrack; gTrack = gIt.Next() ) {
+            // only add if the track was not added before
+            if (added.find((int)gTrack) == added.end()) {
+               added[(int)gTrack]=true;
+               Track *o = gTrack->Duplicate();
+               mOutputTracks->Add(o);
+               mIMap.Add(gTrack);
+               mOMap.Add(o);
+            }
+         }
+      }
+      //otherwise just add the track
+      else {
+         Track *o = aTrack->Duplicate();
+         mOutputTracks->Add(o);
+         mIMap.Add(aTrack);
+         mOMap.Add(o);
+      }
    }
 }
 
-
-// If bGoodResult, replace mWaveTracks tracks in mTracks with successfully 
processed 
-// mOutputWaveTracks copies, get rid of old mWaveTracks, and set mWaveTracks 
to mOutputWaveTracks. 
-// Else clear and delete mOutputWaveTracks copies.
-void Effect::ReplaceProcessedWaveTracks(const bool bGoodResult)
+// If bGoodResult, replace mTracks tracks with successfully processed 
mOutputTracks copies.
+// Else clear and delete mOutputTracks copies.
+void Effect::ReplaceProcessedTracks(const bool bGoodResult)
 {
-   wxASSERT(mOutputWaveTracks != NULL); // Make sure we at least did the 
CopyInputWaveTracks().
+   wxASSERT(mOutputTracks != NULL); // Make sure we at least did the 
CopyInputTracks().
 
    if (!bGoodResult) {
       // Processing failed or was cancelled so throw away the processed tracks.
-      mOutputWaveTracks->Clear(true); // true => delete the tracks
+      mOutputTracks->Clear(true); // true => delete the tracks
       
       // Reset map
       mIMap.Clear();
@@ -228,14 +250,14 @@
       return;
    }
 
-   TrackListIterator iterOut(mOutputWaveTracks);
+   TrackListIterator iterOut(mOutputTracks);
 
+   Track *x;
    size_t cnt = mOMap.GetCount();
    size_t i = 0;
-   Track *x;
 
    for (Track *o = iterOut.First(); o; o = x, i++) {
-      // If tracks were removed from mOutputWaveTracks, then there will be
+      // If tracks were removed from mOutputTracks, then there will be
       // tracks in the map that must be removed from mTracks.
       while (i < cnt && mOMap[i] != o) {
          mTracks->Remove((Track *)mIMap[i], true);
@@ -262,7 +284,7 @@
       delete t;
    }
 
-   // If tracks were removed from mOutputWaveTracks, then there may be tracks
+   // If tracks were removed from mOutputTracks, then there may be tracks
    // left at the end of the map that must be removed from mTracks.
    while (i < cnt) {
       mTracks->Remove((Track *)mIMap[i], true);
@@ -277,8 +299,9 @@
    wxASSERT(iterOut.First() == NULL);
    
    // The output list is no longer needed
-   delete mOutputWaveTracks;
-   mOutputWaveTracks = NULL;
+   delete mOutputTracks;
+   mOutputTracks = NULL;
+   mOutputTracksType = Track::None;
 }
 
 void Effect::CountWaveTracks()
@@ -571,8 +594,8 @@
       FocusDialog->SetFocus();
    }
 
-   delete mOutputWaveTracks;
-   mOutputWaveTracks = NULL;
+   delete mOutputTracks;
+   mOutputTracks = NULL;
 
    mTracks->Clear(true); // true => delete the tracks
    delete mTracks;

Index: SimplePairedTwoTrack.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/SimplePairedTwoTrack.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- SimplePairedTwoTrack.h      20 May 2009 06:22:49 -0000      1.13
+++ SimplePairedTwoTrack.h      18 Jun 2009 00:40:05 -0000      1.14
@@ -126,10 +126,10 @@
 template<class _DataType,sampleFormat _xxxSample>
 bool EffectSimplePairedTwoTrack<_DataType,_xxxSample>::Process()
 {
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    int count = 0;
    WaveTrack *left = (WaveTrack*)(iter.First());
    WaveTrack *right;
@@ -157,7 +157,7 @@
       count++;
    }
    
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: ClickRemoval.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/ClickRemoval.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- ClickRemoval.cpp    25 May 2009 11:17:29 -0000      1.17
+++ ClickRemoval.cpp    18 Jun 2009 00:40:05 -0000      1.18
@@ -124,10 +124,10 @@
 
 bool EffectClickRemoval::Process()
 {
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *) iter.First();
    int count = 0;
    while (track) {
@@ -151,7 +151,7 @@
       track = (WaveTrack *) iter.Next();
       count++;
    }
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 

Index: TwoPassSimpleMono.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/TwoPassSimpleMono.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- TwoPassSimpleMono.cpp       12 Jul 2008 15:25:48 -0000      1.7
+++ TwoPassSimpleMono.cpp       18 Jun 2009 00:40:05 -0000      1.8
@@ -28,7 +28,7 @@
     mSecondPassDisabled = false;
     
     InitPass1();
-    this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+    this->CopyInputTracks(); // Set up mOutputTracks.
     bool bGoodResult = ProcessPass();
         
     if (bGoodResult && !mSecondPassDisabled)
@@ -38,14 +38,14 @@
             bGoodResult = ProcessPass();
     }
     
-    this->ReplaceProcessedWaveTracks(bGoodResult); 
+    this->ReplaceProcessedTracks(bGoodResult); 
     return bGoodResult;
 }
 
 bool EffectTwoPassSimpleMono::ProcessPass()
 {
    //Iterate over each track
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
    WaveTrack *track = (WaveTrack *) iter.First();
    mCurTrackNum = 0;
    while (track) {

Index: Normalize.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/Normalize.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- Normalize.cpp       25 May 2009 11:20:07 -0000      1.29
+++ Normalize.cpp       18 Jun 2009 00:40:05 -0000      1.30
@@ -139,10 +139,10 @@
       return true;
 
    //Iterate over each track
-   this->CopyInputWaveTracks(); // Set up mOutputWaveTracks.
+   this->CopyInputTracks(); // Set up mOutputTracks.
    bool bGoodResult = true;
 
-   TrackListIterator iter(mOutputWaveTracks);
+   TrackListIterator iter(mOutputTracks);
     WaveTrack *track = (WaveTrack *) iter.First();
    mCurTrackNum = 0;
    while (track) {
@@ -179,7 +179,7 @@
       mCurTrackNum++;
    }
 
-   this->ReplaceProcessedWaveTracks(bGoodResult); 
+   this->ReplaceProcessedTracks(bGoodResult); 
    return bGoodResult;
 }
 


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to