annotate transform/TransformDescription.h @ 1376:d9511f9e04d7 dev/refactor-piper-related

Introduce some POD structs for describing an external server application and the desired libraries to load from it, and disambiguating between empty list request and invalid list request. This allows for overriding PiperVampPluginFactory behaviour for using a PluginScan to populate the list request.
author Lucas Thompson <lucas.thompson@qmul.ac.uk>
date Fri, 10 Feb 2017 11:15:19 +0000
parents 45e95de8b11d
children 9c14dee72329
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@976 56 TransformDescription() :
Chris@976 57 type(UnknownType), configurable(false) { }
Chris@487 58 TransformDescription(Type _type, QString _category,
Chris@329 59 TransformId _identifier, QString _name,
Chris@329 60 QString _friendlyName, QString _description,
Chris@443 61 QString _longDescription,
Chris@329 62 QString _maker, QString _units, bool _configurable) :
Chris@329 63 type(_type), category(_category),
Chris@329 64 identifier(_identifier), name(_name),
Chris@329 65 friendlyName(_friendlyName), description(_description),
Chris@443 66 longDescription(_longDescription),
Chris@329 67 maker(_maker), units(_units), configurable(_configurable) { }
Chris@329 68
Chris@487 69 Type type;
Chris@329 70 QString category; // e.g. time > onsets
Chris@329 71 TransformId identifier; // e.g. vamp:vamp-aubio:aubioonset
Chris@329 72 QString name; // plugin's name if 1 output, else "name: output"
Chris@329 73 QString friendlyName; // short text for layer name
Chris@329 74 QString description; // sentence describing transform
Chris@443 75 QString longDescription; // description "using" plugin name "by" maker
Chris@329 76 QString maker;
Chris@462 77 QString infoUrl;
Chris@329 78 QString units;
Chris@329 79 bool configurable;
Chris@329 80
Chris@329 81 bool operator<(const TransformDescription &od) const {
Chris@358 82 return
Chris@358 83 (name < od.name) ||
Chris@358 84 (name == od.name && identifier < od.identifier);
Chris@329 85 };
Chris@329 86 };
Chris@329 87
Chris@329 88 typedef std::vector<TransformDescription> TransformList;
Chris@329 89
Chris@329 90 #endif