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); }