123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /*
- * VstPlugin.h - declaration of VstPlugin class
- *
- * Copyright (c) 2005-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
- *
- * This file is part of LMMS - https://lmms.io
- *
- * 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.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program (see COPYING); if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- *
- */
- #ifndef _VST_PLUGIN_H
- #define _VST_PLUGIN_H
- #include <QMap>
- #include <QMutex>
- #include <QPointer>
- #include <QString>
- #include <QTimer>
- #include <QWidget>
- #include "JournallingObject.h"
- #include "RemotePlugin.h"
- #include "vstbase_export.h"
- class vstSubWin;
- class VSTBASE_EXPORT VstPlugin : public RemotePlugin, public JournallingObject
- {
- Q_OBJECT
- public:
- VstPlugin( const QString & _plugin );
- virtual ~VstPlugin();
- void tryLoad( const QString &remoteVstPluginExecutable );
- bool processMessage( const message & _m ) override;
- inline bool hasEditor() const
- {
- return m_pluginWindowID != 0;
- }
- /// Same as pluginWidget(), but can be overwritten in sub-classes to modify
- /// behavior the UI. This is used in VstInstrumentPlugin to wrap the VST UI
- /// in a QMdiSubWindow
- virtual QWidget* editor();
- inline const QString & name() const
- {
- return m_name;
- }
- inline int version() const
- {
- return m_version;
- }
-
- inline const QString & vendorString() const
- {
- return m_vendorString;
- }
- inline const QString & productString() const
- {
- return m_productString;
- }
- inline const QString& currentProgramName() const
- {
- return m_currentProgramName;
- }
- inline const QString& allProgramNames() const
- {
- return m_allProgramNames;
- }
- int currentProgram();
- const QMap<QString, QString> & parameterDump();
- void setParameterDump( const QMap<QString, QString> & _pdump );
- QWidget * pluginWidget();
- void loadSettings( const QDomElement & _this ) override;
- void saveSettings( QDomDocument & _doc, QDomElement & _this ) override;
- virtual QString nodeName() const override
- {
- return "vstplugin";
- }
- virtual void createUI(QWidget *parent);
- bool eventFilter(QObject *obj, QEvent *event) override;
- QString embedMethod() const;
- public slots:
- void setTempo( bpm_t _bpm );
- void updateSampleRate();
- void openPreset( void );
- void setProgram( int index );
- void rotateProgram( int offset );
- void loadProgramNames();
- void savePreset( void );
- void setParam( int i, float f );
- void idleUpdate();
- void showUI() override;
- void hideUI() override;
- void toggleUI() override;
- void handleClientEmbed();
- private:
- void loadChunk( const QByteArray & _chunk );
- QByteArray saveChunk();
- void toggleEditorVisibility(int visible = -1);
- QString m_plugin;
- QPointer<QWidget> m_pluginWidget;
- int m_pluginWindowID;
- QSize m_pluginGeometry;
- const QString m_embedMethod;
- QString m_name;
- int m_version;
- QString m_vendorString;
- QString m_productString;
- QString m_currentProgramName;
- QString m_allProgramNames;
- QString p_name;
- QMap<QString, QString> m_parameterDump;
- int m_currentProgram;
- QTimer m_idleTimer;
- } ;
- #endif
|