svcore  1.9
TransformDescription.h
Go to the documentation of this file.
00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
00002 
00003 /*
00004     Sonic Visualiser
00005     An audio file viewer and annotation editor.
00006     Centre for Digital Music, Queen Mary, University of London.
00007     This file copyright 2006-2007 Chris Cannam and QMUL.
00008    
00009     This program is free software; you can redistribute it and/or
00010     modify it under the terms of the GNU General Public License as
00011     published by the Free Software Foundation; either version 2 of the
00012     License, or (at your option) any later version.  See the file
00013     COPYING included with this distribution for more information.
00014 */
00015 
00016 #ifndef _TRANSFORM_DESCRIPTION_H_
00017 #define _TRANSFORM_DESCRIPTION_H_
00018 
00019 #include "Transform.h"
00020 
00021 #include <QString>
00022 
00023 #include <vector>
00024 
00046 struct TransformDescription
00047 {
00048     enum Type {
00049         Analysis,    // e.g. vamp plugin output
00050         Effects,     // e.g. ladspa plugin with audio in and out
00051         EffectsData, // e.g. control output of ladspa plugin
00052         Generator,   // e.g. audio out of ladspa plugin with no audio in
00053         UnknownType
00054     };
00055 
00056     TransformDescription() : 
00057         type(UnknownType), configurable(false) { }
00058     TransformDescription(Type _type, QString _category,
00059                          TransformId _identifier, QString _name,
00060                          QString _friendlyName, QString _description,
00061                          QString _longDescription,
00062                          QString _maker, QString _units, bool _configurable) :
00063         type(_type), category(_category),
00064         identifier(_identifier), name(_name),
00065         friendlyName(_friendlyName), description(_description),
00066         longDescription(_longDescription),
00067         maker(_maker), units(_units), configurable(_configurable) { }
00068 
00069     Type type;
00070     QString category; // e.g. time > onsets
00071     TransformId identifier; // e.g. vamp:vamp-aubio:aubioonset
00072     QString name; // plugin's name if 1 output, else "name: output"
00073     QString friendlyName; // short text for layer name
00074     QString description; // sentence describing transform
00075     QString longDescription; // description "using" plugin name "by" maker
00076     QString maker;
00077     QString infoUrl;
00078     QString units;
00079     bool configurable;
00080     
00081     bool operator<(const TransformDescription &od) const {
00082         return
00083             (name <  od.name) ||
00084             (name == od.name && identifier < od.identifier);
00085     };
00086 };
00087 
00088 typedef std::vector<TransformDescription> TransformList;
00089 
00090 #endif