diff options
Diffstat (limited to 'muse2/muse/part.cpp')
| -rw-r--r-- | muse2/muse/part.cpp | 61 | 
1 files changed, 41 insertions, 20 deletions
diff --git a/muse2/muse/part.cpp b/muse2/muse/part.cpp index a632bc9c..9950c362 100644 --- a/muse2/muse/part.cpp +++ b/muse2/muse/part.cpp @@ -864,17 +864,18 @@ void Song::cmdResizePart(Track* track, Part* oPart, unsigned int len, bool doClo                                unsigned event_endframe = event_startframe + e.lenFrame();                                if (event_endframe < new_partlength)                                      continue; -                              if (event_startframe > new_partlength) { // If event start was after the new length, remove it from part -                                    // Do not do port controller values and clone parts.  -                                    operations.push_back(UndoOp(UndoOp::DeleteEvent, e, nPart, false, false)); -                                    continue; -                                    } -                              if (event_endframe > new_partlength) { // If this event starts before new length and ends after, shrink it -                                    Event newEvent = e.clone(); -                                    newEvent.setLenFrame(new_partlength - event_startframe); -                                    // Do not do port controller values and clone parts.  -                                    operations.push_back(UndoOp(UndoOp::ModifyEvent, newEvent, e, nPart, false,false)); -                                    } +// REMOVE Tim.  +//                               if (event_startframe > new_partlength) { // If event start was after the new length, remove it from part +//                                     // Do not do port controller values and clone parts.  +//                                     operations.push_back(UndoOp(UndoOp::DeleteEvent, e, nPart, false, false)); +//                                     continue; +//                                     } +//                               if (event_endframe > new_partlength) { // If this event starts before new length and ends after, shrink it +//                                     Event newEvent = e.clone(); +//                                     newEvent.setLenFrame(new_partlength - event_startframe); +//                                     // Do not do port controller values and clone parts.  +//                                     operations.push_back(UndoOp(UndoOp::ModifyEvent, newEvent, e, nPart, false,false)); +//                                     }                                }                          nPart->setLenFrame(new_partlength);                          // Do not do port controller values and clone parts.  @@ -893,19 +894,20 @@ void Song::cmdResizePart(Track* track, Part* oPart, unsigned int len, bool doClo                            iEvent i = el->end();                            i--;                            Event last = i->second; -                          unsigned last_start = last.frame(); +// REMOVE Tim.              unsigned last_start = last.frame();                            MusECore::SndFileR file = last.sndFile();                            if (file.isNull())                                  return; -                          unsigned clipframes = (file.samples() - last.spos());// / file.channels(); +//                          unsigned clipframes = (file.samples() - last.spos());// / file.channels();                            Event newEvent = last.clone(); -                          unsigned new_eventlength = new_partlength - last_start; -                          if (new_eventlength > clipframes) // Shrink event length if new partlength exceeds last clip -                                new_eventlength = clipframes; -   -                          newEvent.setLenFrame(new_eventlength); +// REMOVE Tim.  +//                          unsigned new_eventlength = new_partlength - last_start; +//                           if (new_eventlength > clipframes) // Shrink event length if new partlength exceeds last clip +//                                 new_eventlength = clipframes; +//   +//                          newEvent.setLenFrame(new_eventlength);                            // Do not do port controller values and clone parts.                             operations.push_back(UndoOp(UndoOp::ModifyEvent, newEvent, last, nPart, false, false));                          }   @@ -1199,13 +1201,12 @@ WavePart* WavePart::clone() const        return new WavePart(*this);        } -  //---------------------------------------------------------  //   hasHiddenEvents  //   Returns combination of HiddenEventsType enum.  //--------------------------------------------------------- -int Part::hasHiddenEvents()  +int MidiPart::hasHiddenEvents()   {    unsigned len = lenTick(); @@ -1222,7 +1223,27 @@ int Part::hasHiddenEvents()    return _hiddenEvents;  } +//--------------------------------------------------------- +//   hasHiddenEvents +//   Returns combination of HiddenEventsType enum. +//--------------------------------------------------------- +int WavePart::hasHiddenEvents()  +{ +  unsigned len = lenFrame(); +   +  // TODO: For now, we don't support events before the left border, only events past the right border. +  for(iEvent ev=events()->begin(); ev!=events()->end(); ev++) +  { +    if(ev->second.endFrame() > len) +    { +      _hiddenEvents = RightEventsHidden;  // Cache the result for later. +      return _hiddenEvents; +    }   +  } +  _hiddenEvents = NoEventsHidden;  // Cache the result for later. +  return _hiddenEvents; +}  //---------------------------------------------------------  //   ClonePart  | 
