Mercurial > hg > svcore
view base/Selection.cpp @ 16:cc98d496d52b
* Add command history class, and basic undo/redo menus.  No actual commands
  to undo/redo yet.  Selecting the placeholders sometimes seems to cause
  a crash, so this looks a little uncertain so far.
* Add Rename Layer
* Remove models from playback when their layers are removed (and ref counts
  hit zero)
* Don't hang around waiting so much when there's work to be done in the audio
  buffer fill thread
* Put more sensible names on layers generated from transforms
* Add basic editing to time-value layer like existing editing in time-instants
  layer, and make both of them snap to the appropriate resolution during drag
| author | Chris Cannam | 
|---|---|
| date | Mon, 30 Jan 2006 17:51:56 +0000 | 
| parents | 73d85d19919f | 
| children | bb9291d84810 | 
line wrap: on
 line source
/* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */ /* A waveform viewer and audio annotation editor. Chris Cannam, Queen Mary University of London, 2005-2006 This is experimental software. Not for distribution. */ #include "Selection.h" Selection::Selection() : m_startFrame(0), m_endFrame(0) { } Selection::Selection(size_t startFrame, size_t endFrame) : m_startFrame(startFrame), m_endFrame(endFrame) { if (m_startFrame > m_endFrame) { size_t tmp = m_endFrame; m_endFrame = m_startFrame; m_startFrame = tmp; } } Selection::Selection(const Selection &s) : m_startFrame(s.m_startFrame), m_endFrame(s.m_endFrame) { } Selection & Selection::operator=(const Selection &s) { if (this != &s) { m_startFrame = s.m_startFrame; m_endFrame = s.m_endFrame; } return *this; } Selection::~Selection() { } bool Selection::isEmpty() const { return m_startFrame == m_endFrame; } size_t Selection::getStartFrame() const { return m_startFrame; } size_t Selection::getEndFrame() const { return m_endFrame; } bool Selection::contains(size_t frame) const { return (frame >= m_startFrame) && (frame < m_endFrame); } bool Selection::operator<(const Selection &s) const { if (isEmpty()) { if (s.isEmpty()) return false; else return true; } else { if (s.isEmpty()) return false; else return (m_startFrame < s.m_startFrame); } } bool Selection::operator==(const Selection &s) const { if (isEmpty()) return s.isEmpty(); return (m_startFrame == s.m_startFrame && m_endFrame == s.m_endFrame); }
