00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef VISUAL_H
00021 #define VISUAL_H
00022
00023 #include <QMutex>
00024 #include <QStringList>
00025 #include <QWidget>
00026 #include <QMap>
00027
00028 class Buffer;
00029 class Decoder;
00030 class Output;
00031 class VisualFactory;
00032
00036 class Visual : public QWidget
00037 {
00038 Q_OBJECT
00039 public:
00044 Visual(QWidget *parent);
00048 virtual ~Visual();
00056 virtual void add(unsigned char *data, qint64 size, int chan) = 0;
00061 virtual void clear() = 0;
00065 QMutex *mutex();
00069 static QList<VisualFactory*> *factories();
00073 static QStringList files();
00079 static void setEnabled(VisualFactory* factory, bool enable = true);
00084 static bool isEnabled(VisualFactory* factory);
00088 static void add(Visual*visual);
00092 static void remove(Visual*);
00099 static void initialize(QWidget *parent, QObject *receiver = 0, const char *member = 0);
00103 static QList<Visual *> *visuals();
00109 static void showSettings(VisualFactory *factory, QWidget *parent);
00110
00111 signals:
00115 void closedByUser();
00116
00117 protected:
00122 virtual void closeEvent (QCloseEvent *event);
00123
00124 private:
00125 Decoder *m_decoder;
00126 Output *m_output;
00127 QMutex m_mutex;
00128
00129 static QList<VisualFactory*> *m_factories;
00130 static QStringList m_files;
00131 static void checkFactories();
00132 static QList<Visual*> m_visuals;
00133 static QMap<VisualFactory*, Visual*> m_vis_map;
00134 static QWidget *m_parentWidget;
00135 static QObject *m_receiver;
00136 static const char *m_member;
00137 };
00138
00139 #endif