annotate view/Overview.h @ 473:4f4f943bfdfc

* Merge from one-fftdataserver-per-fftmodel branch. This bit of reworking (which is not described very accurately by the title of the branch) turns the MatrixFile object into something that either reads or writes, but not both, and separates the FFT file cache reader and writer implementations separately. This allows the FFT data server to have a single thread owning writers and one reader per "customer" thread, and for all locking to be vastly simplified and concentrated in the data server alone (because none of the classes it makes use of is used in more than one thread at a time). The result is faster and more trustworthy code.
author Chris Cannam
date Tue, 27 Jan 2009 13:25:10 +0000
parents b9380f679f70
children 4c8ca536b54f
rev   line source
Chris@173 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@173 2
Chris@173 3 /*
Chris@173 4 Sonic Visualiser
Chris@173 5 An audio file viewer and annotation editor.
Chris@173 6 Centre for Digital Music, Queen Mary, University of London.
Chris@182 7 This file copyright 2006 Chris Cannam and QMUL.
Chris@173 8
Chris@173 9 This program is free software; you can redistribute it and/or
Chris@173 10 modify it under the terms of the GNU General Public License as
Chris@173 11 published by the Free Software Foundation; either version 2 of the
Chris@173 12 License, or (at your option) any later version. See the file
Chris@173 13 COPYING included with this distribution for more information.
Chris@173 14 */
Chris@173 15
Chris@173 16 #ifndef _OVERVIEW_H_
Chris@173 17 #define _OVERVIEW_H_
Chris@173 18
Chris@173 19 #include "View.h"
Chris@173 20
Chris@173 21 #include <QPoint>
Chris@274 22 #include <QTime>
Chris@173 23
Chris@173 24 class QWidget;
Chris@173 25 class QPaintEvent;
Chris@173 26 class Layer;
Chris@173 27 class View;
Chris@173 28
Chris@173 29 #include <map>
Chris@173 30
Chris@173 31 class Overview : public View
Chris@173 32 {
Chris@173 33 Q_OBJECT
Chris@173 34
Chris@173 35 public:
Chris@173 36 Overview(QWidget *parent = 0);
Chris@173 37
Chris@211 38 void registerView(View *view);
Chris@211 39 void unregisterView(View *view);
Chris@173 40
Chris@173 41 virtual QString getPropertyContainerIconName() const { return "panner"; }
Chris@173 42
Chris@173 43 public slots:
Chris@173 44 virtual void modelChanged(size_t startFrame, size_t endFrame);
Chris@173 45 virtual void modelReplaced();
Chris@173 46
Chris@211 47 virtual void globalCentreFrameChanged(unsigned long);
Chris@211 48 virtual void viewCentreFrameChanged(View *, unsigned long);
Chris@222 49 virtual void viewZoomLevelChanged(View *, unsigned long, bool);
Chris@173 50 virtual void viewManagerPlaybackFrameChanged(unsigned long);
Chris@173 51
Chris@173 52 protected:
Chris@173 53 virtual void paintEvent(QPaintEvent *e);
Chris@173 54 virtual void mousePressEvent(QMouseEvent *e);
Chris@173 55 virtual void mouseReleaseEvent(QMouseEvent *e);
Chris@173 56 virtual void mouseMoveEvent(QMouseEvent *e);
Chris@189 57 virtual void mouseDoubleClickEvent(QMouseEvent *e);
Chris@189 58 virtual void enterEvent(QEvent *);
Chris@189 59 virtual void leaveEvent(QEvent *);
Chris@173 60 virtual bool shouldLabelSelections() const { return false; }
Chris@173 61
Chris@173 62 QPoint m_clickPos;
Chris@173 63 QPoint m_mousePos;
Chris@173 64 bool m_clickedInRange;
Chris@173 65 size_t m_dragCentreFrame;
Chris@274 66 QTime m_modelTestTime;
Chris@173 67
Chris@211 68 typedef std::set<View *> ViewSet;
Chris@211 69 ViewSet m_views;
Chris@173 70 };
Chris@173 71
Chris@173 72 #endif
Chris@173 73