annotate base/Selection.h @ 34:aaf73f7309f2

* Add "Export Audio File" option * Make note layer align in frequency with any spectrogram layer on the same view (if it's set to frequency mode) * Start to implement mouse editing for ranges of points by dragging the selection * First scrappy attempt at a vertical scale for time value layer
author Chris Cannam
date Mon, 27 Feb 2006 17:34:41 +0000
parents bb9291d84810
children 935a2419a77c
rev   line source
Chris@8 1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */
Chris@8 2
Chris@8 3 /*
Chris@8 4 A waveform viewer and audio annotation editor.
Chris@8 5 Chris Cannam, Queen Mary University of London, 2005-2006
Chris@8 6
Chris@8 7 This is experimental software. Not for distribution.
Chris@8 8 */
Chris@8 9
Chris@8 10 #ifndef _SELECTION_H_
Chris@8 11 #define _SELECTION_H_
Chris@8 12
Chris@8 13 #include <cstddef>
Chris@24 14 #include <set>
Chris@8 15
Chris@8 16 class Selection
Chris@8 17 {
Chris@8 18 public:
Chris@8 19 Selection();
Chris@8 20 Selection(size_t startFrame, size_t endFrame);
Chris@8 21 Selection(const Selection &);
Chris@8 22 Selection &operator=(const Selection &);
Chris@8 23 virtual ~Selection();
Chris@8 24
Chris@8 25 bool isEmpty() const;
Chris@8 26 size_t getStartFrame() const;
Chris@8 27 size_t getEndFrame() const;
Chris@9 28 bool contains(size_t frame) const;
Chris@8 29
Chris@8 30 bool operator<(const Selection &) const;
Chris@8 31 bool operator==(const Selection &) const;
Chris@8 32
Chris@8 33 protected:
Chris@8 34 size_t m_startFrame;
Chris@8 35 size_t m_endFrame;
Chris@8 36 };
Chris@8 37
Chris@24 38 class MultiSelection
Chris@24 39 {
Chris@24 40 public:
Chris@24 41 MultiSelection();
Chris@24 42 virtual ~MultiSelection();
Chris@24 43
Chris@24 44 typedef std::set<Selection> SelectionList;
Chris@24 45
Chris@24 46 const SelectionList &getSelections() const;
Chris@24 47 void setSelection(const Selection &selection);
Chris@24 48 void addSelection(const Selection &selection);
Chris@24 49 void removeSelection(const Selection &selection);
Chris@24 50 void clearSelections();
Chris@24 51
Chris@24 52 /**
Chris@24 53 * Return the selection that contains a given frame.
Chris@24 54 * If defaultToFollowing is true, and if the frame is not in a
Chris@24 55 * selected area, return the next selection after the given frame.
Chris@24 56 * Return the empty selection if no appropriate selection is found.
Chris@24 57 */
Chris@24 58 Selection getContainingSelection(size_t frame, bool defaultToFollowing);
Chris@24 59
Chris@24 60 protected:
Chris@24 61 SelectionList m_selections;
Chris@24 62 };
Chris@24 63
Chris@24 64
Chris@8 65 #endif