view plugin/transform/TransformDescription.h @ 339:ba30f4a3e3be

* Some work on correct alignment when moving panes during playback * Overhaul alignment for playback frame values (view manager now always refers to reference-timeline values, only the play source deals in playback model timeline values) * When making a selection, ensure the selection regions shown in other panes (and used for playback constraints if appropriate) are aligned correctly. This may be the coolest feature ever implemented in any program ever.
author Chris Cannam
date Thu, 22 Nov 2007 14:17:19 +0000
parents 3179d8b29336
children d7c41483af8f 94fc0591ea43
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*
    Sonic Visualiser
    An audio file viewer and annotation editor.
    Centre for Digital Music, Queen Mary, University of London.
    This file copyright 2006-2007 Chris Cannam and QMUL.
   
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of the
    License, or (at your option) any later version.  See the file
    COPYING included with this distribution for more information.
*/

#ifndef _TRANSFORM_DESCRIPTION_H_
#define _TRANSFORM_DESCRIPTION_H_

#include "Transform.h"

#include <QString>

#include <vector>

/**
 * Metadata associated with a transform.
 *
 * The transform ID is the same as that used in the Transform class.
 * It is intended to be computer-referenceable and unique within the
 * application.
 * 
 * The name is intended to be human readable.  In principle it doesn't
 * have to be unique, but the factory that creates these objects
 * should add suffixes to ensure that it is, all the same (just to
 * avoid user confusion).
 *
 * The friendly name is a shorter version of the name.
 *
 * The type is also intended to be user-readable, for use in menus.
 */

struct TransformDescription
{
    TransformDescription() { }
    TransformDescription(QString _type, QString _category,
                         TransformId _identifier, QString _name,
                         QString _friendlyName, QString _description,
                         QString _maker, QString _units, bool _configurable) :
        type(_type), category(_category),
        identifier(_identifier), name(_name),
        friendlyName(_friendlyName), description(_description),
        maker(_maker), units(_units), configurable(_configurable) { }

    QString type; // e.g. feature extraction plugin
    QString category; // e.g. time > onsets
    TransformId identifier; // e.g. vamp:vamp-aubio:aubioonset
    QString name; // plugin's name if 1 output, else "name: output"
    QString friendlyName; // short text for layer name
    QString description; // sentence describing transform
    QString maker;
    QString units;
    bool configurable;
    
    bool operator<(const TransformDescription &od) const {
        return (name < od.name);
    };
};

typedef std::vector<TransformDescription> TransformList;

#endif