annotate widgets/Panner.h @ 15:4d5d9aba406b
* Fix update and play limits for play-selection mode when not looping
* Fix playback in loop mode when no selection -- but the GUI update for
this is still wrong on the flyback
* Various fixes and improvements to making selections, particularly during
playback
* Draw selection under non-opaque non-scrollable layers, so as to improve
cacheing
* Show selection limits as text when drawing selection
* Allow user to find missing audio files when loading session
* Cross-fade selections when in play-selection mode -- mostly. We don't
cross-fade on a processing block boundary, and unfortunately with short
selections the selection boundary is quite likely to coincide with a block
boundary.
author |
Chris Cannam |
date |
Wed, 25 Jan 2006 17:46:28 +0000 |
parents |
37b110168acf |
children |
38fe0ea9e46e |
rev |
line source |
Chris@0
|
1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@0
|
2
|
Chris@0
|
3 /*
|
Chris@0
|
4 A waveform viewer and audio annotation editor.
|
Chris@5
|
5 Chris Cannam, Queen Mary University of London, 2005-2006
|
Chris@0
|
6
|
Chris@0
|
7 This is experimental software. Not for distribution.
|
Chris@0
|
8 */
|
Chris@0
|
9
|
Chris@0
|
10 #ifndef _PAN_WIDGET_H_
|
Chris@0
|
11 #define _PAN_WIDGET_H_
|
Chris@0
|
12
|
Chris@0
|
13 #include "base/View.h"
|
Chris@0
|
14
|
Chris@0
|
15 #include <QPoint>
|
Chris@0
|
16
|
Chris@0
|
17 class QWidget;
|
Chris@0
|
18 class QPaintEvent;
|
Chris@0
|
19 class Layer;
|
Chris@0
|
20 class View;
|
Chris@0
|
21
|
Chris@0
|
22 #include <map>
|
Chris@0
|
23
|
Chris@0
|
24 class Panner : public View
|
Chris@0
|
25 {
|
Chris@0
|
26 Q_OBJECT
|
Chris@0
|
27
|
Chris@0
|
28 public:
|
Chris@0
|
29 Panner(QWidget *parent = 0);
|
Chris@0
|
30
|
Chris@0
|
31 void registerView(View *widget);
|
Chris@0
|
32 void unregisterView(View *widget);
|
Chris@0
|
33
|
Chris@0
|
34 virtual QString getPropertyContainerIconName() const { return "panner"; }
|
Chris@0
|
35
|
Chris@0
|
36 public slots:
|
Chris@0
|
37 virtual void modelChanged(size_t startFrame, size_t endFrame);
|
Chris@0
|
38 virtual void modelReplaced();
|
Chris@0
|
39
|
Chris@0
|
40 virtual void viewManagerCentreFrameChanged(void *, unsigned long, bool);
|
Chris@0
|
41 virtual void viewManagerZoomLevelChanged(void *, unsigned long, bool);
|
Chris@0
|
42 virtual void viewManagerPlaybackFrameChanged(unsigned long);
|
Chris@0
|
43
|
Chris@0
|
44 protected:
|
Chris@0
|
45 virtual void paintEvent(QPaintEvent *e);
|
Chris@0
|
46 virtual void mousePressEvent(QMouseEvent *e);
|
Chris@0
|
47 virtual void mouseReleaseEvent(QMouseEvent *e);
|
Chris@0
|
48 virtual void mouseMoveEvent(QMouseEvent *e);
|
Chris@15
|
49 virtual bool shouldLabelSelections() const { return false; }
|
Chris@0
|
50
|
Chris@0
|
51 QPoint m_clickPos;
|
Chris@0
|
52 QPoint m_mousePos;
|
Chris@0
|
53 bool m_clickedInRange;
|
Chris@0
|
54 size_t m_dragCentreFrame;
|
Chris@0
|
55
|
Chris@0
|
56 typedef std::pair<size_t, int> WidgetRec; // centre, zoom (-1 = invalid)
|
Chris@0
|
57 typedef std::map<void *, WidgetRec> WidgetMap;
|
Chris@0
|
58 WidgetMap m_widgets;
|
Chris@0
|
59 };
|
Chris@0
|
60
|
Chris@0
|
61 #endif
|
Chris@0
|
62
|