annotate transform/TransformDescription.h @ 537:3cc4b7cd2aa5

* 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 c45e6c6722e0
children 45e95de8b11d
rev   line source
Chris@329 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@329 2
Chris@329 3 /*
Chris@329 4 Sonic Visualiser
Chris@329 5 An audio file viewer and annotation editor.
Chris@329 6 Centre for Digital Music, Queen Mary, University of London.
Chris@329 7 This file copyright 2006-2007 Chris Cannam and QMUL.
Chris@329 8
Chris@329 9 This program is free software; you can redistribute it and/or
Chris@329 10 modify it under the terms of the GNU General Public License as
Chris@329 11 published by the Free Software Foundation; either version 2 of the
Chris@329 12 License, or (at your option) any later version. See the file
Chris@329 13 COPYING included with this distribution for more information.
Chris@329 14 */
Chris@329 15
Chris@329 16 #ifndef _TRANSFORM_DESCRIPTION_H_
Chris@329 17 #define _TRANSFORM_DESCRIPTION_H_
Chris@329 18
Chris@329 19 #include "Transform.h"
Chris@329 20
Chris@329 21 #include <QString>
Chris@329 22
Chris@329 23 #include <vector>
Chris@329 24
Chris@329 25 /**
Chris@329 26 * Metadata associated with a transform.
Chris@329 27 *
Chris@329 28 * The transform ID is the same as that used in the Transform class.
Chris@329 29 * It is intended to be computer-referenceable and unique within the
Chris@329 30 * application.
Chris@329 31 *
Chris@329 32 * The name is intended to be human readable. In principle it doesn't
Chris@329 33 * have to be unique, but the factory that creates these objects
Chris@329 34 * should add suffixes to ensure that it is, all the same (just to
Chris@329 35 * avoid user confusion).
Chris@329 36 *
Chris@329 37 * The friendly name is a shorter version of the name.
Chris@329 38 *
Chris@329 39 * The type is also intended to be user-readable, for use in menus.
Chris@350 40 *
Chris@350 41 * To obtain these objects, use
Chris@350 42 * TransformFactory::getAllTransformDescriptions and
Chris@350 43 * TransformFactory::getTransformDescription.
Chris@329 44 */
Chris@329 45
Chris@329 46 struct TransformDescription
Chris@329 47 {
Chris@487 48 enum Type {
Chris@487 49 Analysis, // e.g. vamp plugin output
Chris@487 50 Effects, // e.g. ladspa plugin with audio in and out
Chris@487 51 EffectsData, // e.g. control output of ladspa plugin
Chris@487 52 Generator, // e.g. audio out of ladspa plugin with no audio in
Chris@487 53 UnknownType
Chris@487 54 };
Chris@487 55
Chris@329 56 TransformDescription() { }
Chris@487 57 TransformDescription(Type _type, QString _category,
Chris@329 58 TransformId _identifier, QString _name,
Chris@329 59 QString _friendlyName, QString _description,
Chris@443 60 QString _longDescription,
Chris@329 61 QString _maker, QString _units, bool _configurable) :
Chris@329 62 type(_type), category(_category),
Chris@329 63 identifier(_identifier), name(_name),
Chris@329 64 friendlyName(_friendlyName), description(_description),
Chris@443 65 longDescription(_longDescription),
Chris@329 66 maker(_maker), units(_units), configurable(_configurable) { }
Chris@329 67
Chris@487 68 Type type;
Chris@329 69 QString category; // e.g. time > onsets
Chris@329 70 TransformId identifier; // e.g. vamp:vamp-aubio:aubioonset
Chris@329 71 QString name; // plugin's name if 1 output, else "name: output"
Chris@329 72 QString friendlyName; // short text for layer name
Chris@329 73 QString description; // sentence describing transform
Chris@443 74 QString longDescription; // description "using" plugin name "by" maker
Chris@329 75 QString maker;
Chris@462 76 QString infoUrl;
Chris@329 77 QString units;
Chris@329 78 bool configurable;
Chris@329 79
Chris@329 80 bool operator<(const TransformDescription &od) const {
Chris@358 81 return
Chris@358 82 (name < od.name) ||
Chris@358 83 (name == od.name && identifier < od.identifier);
Chris@329 84 };
Chris@329 85 };
Chris@329 86
Chris@329 87 typedef std::vector<TransformDescription> TransformList;
Chris@329 88
Chris@329 89 #endif