annotate transform/Transform.h @ 5:31c4ed2d5da6

* Hook up SV file i/o. You can now save and load sessions. Some problems -- gain is not reloaded correctly for waveforms, reloaded panes are not properly reconnected to the panner, and no doubt plenty of others.
author Chris Cannam
date Tue, 17 Jan 2006 17:45:55 +0000
parents d86891498eef
children 39ae3dee27b9
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@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