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@2
|
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 _TRANSFORM_H_
|
Chris@0
|
11 #define _TRANSFORM_H_
|
Chris@0
|
12
|
Chris@0
|
13 #include <QThread>
|
Chris@0
|
14
|
Chris@0
|
15 #include "base/Model.h"
|
Chris@0
|
16
|
Chris@0
|
17 typedef QString TransformName;
|
Chris@0
|
18
|
Chris@0
|
19 /**
|
Chris@0
|
20 * A Transform turns one data model into another.
|
Chris@0
|
21 *
|
Chris@0
|
22 * Typically in this application, a Transform might have a
|
Chris@0
|
23 * DenseTimeValueModel as its input (e.g. an audio waveform) and a
|
Chris@0
|
24 * SparseOneDimensionalModel (e.g. detected beats) as its output.
|
Chris@0
|
25 *
|
Chris@0
|
26 * The Transform typically runs in the background, as a separate
|
Chris@0
|
27 * thread populating the output model. The model is available to the
|
Chris@0
|
28 * user of the Transform immediately, but may be initially empty until
|
Chris@0
|
29 * the background thread has populated it.
|
Chris@0
|
30 */
|
Chris@0
|
31
|
Chris@0
|
32 class Transform : public QThread
|
Chris@0
|
33 {
|
Chris@0
|
34 public:
|
Chris@0
|
35 virtual ~Transform();
|
Chris@0
|
36
|
Chris@0
|
37 Model *getInputModel() { return m_input; }
|
Chris@0
|
38 Model *getOutputModel() { return m_output; }
|
Chris@0
|
39 Model *detachOutputModel() { m_detached = true; return m_output; }
|
Chris@0
|
40
|
Chris@0
|
41 protected:
|
Chris@0
|
42 Transform(Model *m);
|
Chris@0
|
43
|
Chris@0
|
44 Model *m_input; // I don't own this
|
Chris@0
|
45 Model *m_output; // I own this, unless...
|
Chris@0
|
46 bool m_detached; // ... this is true.
|
Chris@0
|
47 bool m_deleting;
|
Chris@0
|
48 };
|
Chris@0
|
49
|
Chris@0
|
50 #endif
|