Mercurial > hg > svcore
view base/Selection.h @ 49:39ae3dee27b9
* Set indent-tabs-mode to nil in Emacs mode direction
author | Chris Cannam |
---|---|
date | Mon, 20 Mar 2006 11:40:39 +0000 |
parents | 5364a9d338a2 |
children | d397ea0a79f5 |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- 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. */ #ifndef _SELECTION_H_ #define _SELECTION_H_ #include <cstddef> #include <set> #include "XmlExportable.h" class Selection { public: Selection(); Selection(size_t startFrame, size_t endFrame); Selection(const Selection &); Selection &operator=(const Selection &); virtual ~Selection(); bool isEmpty() const; size_t getStartFrame() const; size_t getEndFrame() const; bool contains(size_t frame) const; bool operator<(const Selection &) const; bool operator==(const Selection &) const; protected: size_t m_startFrame; size_t m_endFrame; }; class MultiSelection : public XmlExportable { public: MultiSelection(); virtual ~MultiSelection(); typedef std::set<Selection> SelectionList; const SelectionList &getSelections() const; void setSelection(const Selection &selection); void addSelection(const Selection &selection); void removeSelection(const Selection &selection); void clearSelections(); /** * Return the selection that contains a given frame. * If defaultToFollowing is true, and if the frame is not in a * selected area, return the next selection after the given frame. * Return the empty selection if no appropriate selection is found. */ Selection getContainingSelection(size_t frame, bool defaultToFollowing) const; virtual QString toXmlString(QString indent = "", QString extraAttributes = "") const; protected: SelectionList m_selections; }; #endif