Mercurial > hg > svgui
annotate widgets/Pane.h @ 33:651e4e868bcc
* Implement play mute, level and pan controls and a layer visibility control
* Handle swapping the buffers in AudioCallbackPlaySource more gracefully, so
  that in many cases it can be done inaudibly.  Still gets it wrong when
  playing in a noncontiguous selection.
* Fix to SV file save for non-2d sparse models
* Fixes to LED button drawing and AudioDial mouse functionality
* Add progress bar for Ogg file import
* Reshuffle PropertyContainer and its subclasses so it can be a QObject
* Add layer dormancy (invisible layer permitted to free its cache space)
* Optimisations to SpectrogramLayer, removing locks when reading/writing
  individual pixels in the cache (should be unnecessary there) -- there's
  still an issue here as we need a lock when reading from the model in
  case the model is replaced, and we don't currently have one
* Several munlock() calls to make it harder to exhaust real memory if
  running in an RT mode with mlockall() active
| author | Chris Cannam | 
|---|---|
| date | Fri, 17 Feb 2006 18:04:26 +0000 | 
| parents | 0183ebb725ca | 
| children | c43f2c4f66f2 | 
| rev | line source | 
|---|---|
| Chris@0 | 1 | 
| Chris@0 | 2 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */ | 
| Chris@0 | 3 | 
| Chris@0 | 4 /* | 
| Chris@0 | 5 A waveform viewer and audio annotation editor. | 
| Chris@5 | 6 Chris Cannam, Queen Mary University of London, 2005-2006 | 
| Chris@0 | 7 | 
| Chris@0 | 8 This is experimental software. Not for distribution. | 
| Chris@0 | 9 */ | 
| Chris@0 | 10 | 
| Chris@0 | 11 #ifndef _PANE_H_ | 
| Chris@0 | 12 #define _PANE_H_ | 
| Chris@0 | 13 | 
| Chris@0 | 14 #include <QFrame> | 
| Chris@0 | 15 #include <QPoint> | 
| Chris@0 | 16 | 
| Chris@0 | 17 #include "base/ZoomConstraint.h" | 
| Chris@0 | 18 #include "base/View.h" | 
| Chris@13 | 19 #include "base/Selection.h" | 
| Chris@0 | 20 | 
| Chris@0 | 21 class QWidget; | 
| Chris@0 | 22 class QPaintEvent; | 
| Chris@0 | 23 class Layer; | 
| Chris@0 | 24 | 
| Chris@0 | 25 class Pane : public View | 
| Chris@0 | 26 { | 
| Chris@0 | 27 Q_OBJECT | 
| Chris@0 | 28 | 
| Chris@0 | 29 public: | 
| Chris@0 | 30 Pane(QWidget *parent = 0); | 
| Chris@0 | 31 | 
| Chris@0 | 32 virtual bool shouldIlluminateLocalFeatures(const Layer *layer, QPoint &pos); | 
| Chris@0 | 33 | 
| Chris@0 | 34 void setCentreLineVisible(bool visible); | 
| Chris@0 | 35 bool getCentreLineVisible() const { return m_centreLineVisible; } | 
| Chris@0 | 36 | 
| Chris@8 | 37 virtual QString toXmlString(QString indent = "", | 
| Chris@8 | 38 QString extraAttributes = "") const; | 
| Chris@8 | 39 | 
| Chris@0 | 40 signals: | 
| Chris@0 | 41 void paneInteractedWith(); | 
| Chris@0 | 42 | 
| Chris@13 | 43 public slots: | 
| Chris@13 | 44 virtual void toolModeChanged(); | 
| Chris@13 | 45 | 
| Chris@0 | 46 protected: | 
| Chris@0 | 47 virtual void paintEvent(QPaintEvent *e); | 
| Chris@0 | 48 virtual void mousePressEvent(QMouseEvent *e); | 
| Chris@0 | 49 virtual void mouseReleaseEvent(QMouseEvent *e); | 
| Chris@0 | 50 virtual void mouseMoveEvent(QMouseEvent *e); | 
| Chris@0 | 51 virtual void mouseDoubleClickEvent(QMouseEvent *e); | 
| Chris@0 | 52 virtual void leaveEvent(QEvent *e); | 
| Chris@0 | 53 virtual void wheelEvent(QWheelEvent *e); | 
| Chris@0 | 54 | 
| Chris@17 | 55 Selection getSelectionAt(int x, bool &closeToLeft, bool &closeToRight); | 
| Chris@17 | 56 | 
| Chris@0 | 57 bool m_identifyFeatures; | 
| Chris@0 | 58 QPoint m_identifyPoint; | 
| Chris@0 | 59 QPoint m_clickPos; | 
| Chris@0 | 60 QPoint m_mousePos; | 
| Chris@0 | 61 bool m_clickedInRange; | 
| Chris@0 | 62 bool m_shiftPressed; | 
| Chris@13 | 63 bool m_ctrlPressed; | 
| Chris@17 | 64 bool m_navigating; | 
| Chris@17 | 65 bool m_resizing; | 
| Chris@0 | 66 size_t m_dragCentreFrame; | 
| Chris@0 | 67 bool m_centreLineVisible; | 
| Chris@13 | 68 size_t m_selectionStartFrame; | 
| Chris@0 | 69 }; | 
| Chris@0 | 70 | 
| Chris@0 | 71 #endif | 
| Chris@0 | 72 | 
