File: FilterPlugin.h

package info (click to toggle)
kwave 25.04.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,272 kB
  • sloc: cpp: 56,173; xml: 817; perl: 688; sh: 57; makefile: 11
file content (150 lines) | stat: -rw-r--r-- 4,736 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/***************************************************************************
    FilterPlugin.h  -  generic class for filter plugins with setup
                             -------------------
    begin                : Sat Jun 07 2003
    copyright            : (C) 2003 by Thomas Eschenbacher
    email                : Thomas.Eschenbacher@gmx.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef FILTER_PLUGIN_H
#define FILTER_PLUGIN_H

#include "config.h"
#include "libkwavegui_export.h"

#include <QtGlobal>
#include <QObject>
#include <QString>

#include "libkwave/Plugin.h"
#include "libkwave/PluginSetupDialog.h"

class QWidget;

namespace Kwave
{

    class SampleSource;
    class SampleSink;

    class LIBKWAVEGUI_EXPORT FilterPlugin: public Kwave::Plugin
    {
        Q_OBJECT
    public:

        /**
         * Constructor
         * @param parent pointer to the corresponding plugin manager
         * @param args argument list, containts internal meta data
         */
        FilterPlugin(QObject *parent, const QVariantList &args);

        /** Destructor */
        ~FilterPlugin() override;

        /** Reads values from the parameter list */
        virtual int interpreteParameters(QStringList & /* params */) = 0;

        /**
         * Creates a setup dialog an returns a pointer to it.
         */
        virtual Kwave::PluginSetupDialog *createDialog(QWidget *) = 0;

        /**
         * Creates a multi-track filter with the given number of tracks
         * @param tracks number of tracks that the filter should have
         * @return pointer to the filter or null if failed
         */
        virtual Kwave::SampleSource *createFilter(unsigned int tracks) = 0;

        /**
         * Shows a dialog for setting up the filter plugin
         * @see Kwave::Plugin::setup
         */
        virtual QStringList *setup(QStringList &previous_params)
            override;

        /**
         * Does the filter operation and/or pre-listen
         * @param params list of strings with parameters
         */
        void run(QStringList params) override;

        /**
         * Returns true if the parameters have changed during pre-listen.
         * @note this default implementation always returns false.
         */
        virtual bool paramsChanged();

        /**
         * Update the filter with new parameters if it has changed
         * changed during the pre-listen.
         * @param filter the Kwave::SampleSource to be updated, should be the
         *               same one as created with createFilter()
         * @param force if true, even update if no settings have changed
         */
        virtual void updateFilter(Kwave::SampleSource *filter,
                                  bool force = false);

        /**
         * Returns a verbose name of the performed action. Used for giving
         * the undo action a readable name.
         * The name must already be localized !
         */
        virtual QString actionName() = 0;

        /**
         * Returns a text for the progress dialog if enabled.
         * (should already be localized)
         */
        QString progressText() override;

    signals:

        /**
         * emitted when the user pressed the cancel button
         * of the progress dialog
         * @internal
         */
        void sigCancelPressed();

    protected slots:

        /** Start the pre-listening */
        void startPreListen();

        /** Stop the pre-listening */
        void stopPreListen();

    private:
        /** List of parameters */
        QStringList m_params;

        /** flag for indicating pre-listen mode */
        bool m_listen;

        /** flag for pausing the process */
        bool m_pause;

        /**
         * a sample sink, used either for pre-listen
         * or for normal processing
         */
        Kwave::SampleSink *m_sink;

    };
}

#endif /* FILTER_PLUGIN_H */

//***************************************************************************
//***************************************************************************