Mercurial > hg > svgui
view layer/LayerFactory.h @ 67:c4fff27cd651
* Add auto-normalize option to waveform layer
* Various fixes to display of dB/metered levels in waveform layer. Still need
to fix to ensure they don't waste half the display
* Add mix channels option to waveform layer
* Use multiple transforms menus, one per transform type -- not sure about this
* Give centroid plugin two outputs, for log and linear frequency weightings
* Show scale units from plugin in time-value display
author | Chris Cannam |
---|---|
date | Wed, 29 Mar 2006 12:35:17 +0000 |
parents | 705f05ab42e3 |
children | 999ae0f7d10c |
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 Chris Cannam. 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 _LAYER_FACTORY_H_ #define _LAYER_FACTORY_H_ #include <QString> #include <set> class Layer; class Model; class LayerFactory { public: enum LayerType { // Standard layers Waveform, Spectrogram, TimeRuler, TimeInstants, TimeValues, Notes, Text, Colour3DPlot, // Layers with different initial parameters MelodicRangeSpectrogram, PeakFrequencySpectrogram, // Not-a-layer-type UnknownLayer = 255 }; static LayerFactory *instance(); virtual ~LayerFactory(); typedef std::set<LayerType> LayerTypeSet; LayerTypeSet getValidLayerTypes(Model *model); LayerTypeSet getValidEmptyLayerTypes(); LayerType getLayerType(const Layer *); Layer *createLayer(LayerType type); QString getLayerPresentationName(LayerType type); void setModel(Layer *layer, Model *model); Model *createEmptyModel(LayerType type, Model *baseModel); int getChannel(Layer *layer); void setChannel(Layer *layer, int channel); QString getLayerIconName(LayerType); QString getLayerTypeName(LayerType); LayerType getLayerTypeForName(QString); protected: template <typename LayerClass, typename ModelClass> bool trySetModel(Layer *layerBase, Model *modelBase) { LayerClass *layer = dynamic_cast<LayerClass *>(layerBase); if (!layer) return false; ModelClass *model = dynamic_cast<ModelClass *>(modelBase); if (!model) return false; layer->setModel(model); return true; } static LayerFactory *m_instance; }; #endif