aboutsummaryrefslogtreecommitdiff
path: root/src/mainvisual.h
diff options
context:
space:
mode:
authorvovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38>2007-06-23 16:48:01 +0000
committervovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38>2007-06-23 16:48:01 +0000
commit2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12 (patch)
treef92135e6cb831e46336dfd4ade47e03ef3a19ac5 /src/mainvisual.h
parent4b6a6720805c585c89f44fd276b3ace8670514d9 (diff)
downloadqmmp-2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12.tar.gz
qmmp-2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12.tar.bz2
qmmp-2d622fd9bcb8da9dd3f3206e296cd6a701fc9d12.zip
moved into qmmp dir
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@12 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/mainvisual.h')
-rw-r--r--src/mainvisual.h179
1 files changed, 179 insertions, 0 deletions
diff --git a/src/mainvisual.h b/src/mainvisual.h
new file mode 100644
index 000000000..043a0154b
--- /dev/null
+++ b/src/mainvisual.h
@@ -0,0 +1,179 @@
+/***************************************************************************
+ * Copyright (C) 2006 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * 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; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef MAINVISUAL_H
+#define MAINVISUAL_H
+
+#include <QWidget>
+#include <QResizeEvent>
+#include <visualization.h>
+#include <constants.h>
+
+#include "logscale.h"
+
+class QSettings;
+class QTimer;
+class Buffer;
+
+
+class VisualNode
+{
+public:
+ VisualNode(short *l, short *r, unsigned long n, unsigned long o)
+ : left(l), right(r), length(n), offset(o)
+ {
+ // left and right are allocated and then passed to this class
+ // the code that allocated left and right should give up all ownership
+ }
+
+ ~VisualNode()
+ {
+ delete [] left;
+ delete [] right;
+ }
+
+ short *left, *right;
+ long length, offset;
+};
+
+class VisualBase
+{
+public:
+ virtual ~VisualBase() {}
+ // return true if the output should stop
+ virtual bool process( VisualNode *node ) = 0;
+ virtual void draw( QPainter *, const QColor & ) = 0;
+ virtual void resize( const QSize &size ) = 0;
+ virtual void configChanged( QSettings & ) = 0;
+};
+
+class StereoScope : public VisualBase
+{
+public:
+ StereoScope();
+ virtual ~StereoScope();
+
+ void resize( const QSize &size );
+ void configChanged(QSettings &settings);
+ bool process( VisualNode *node );
+ void draw( QPainter *p, const QColor &back );
+
+protected:
+ QColor startColor, targetColor;
+ //QMemArray<double> magnitudes;
+ QVector <double> magnitudes;
+ QSize size;
+ bool rubberband;
+ double falloff;
+ int fps;
+};
+
+class MonoScope : public StereoScope
+{
+public:
+ MonoScope();
+ virtual ~MonoScope();
+
+ bool process( VisualNode *node );
+ void draw( QPainter *p, const QColor &back );
+};
+
+
+
+
+class MainVisual : public QWidget, public Visualization
+{
+ Q_OBJECT
+
+public:
+ MainVisual( QWidget *parent = 0, const char * = 0 );
+ virtual ~MainVisual();
+
+ //static Prefs *createPrefs( const QString &visualname,
+ // QWidget *parent, const char *name );
+ static MainVisual *getPointer();
+
+ VisualBase *visual() const { return vis; }
+ void setVisual( VisualBase *newvis );
+ //void setVisual( const QString &visualname );
+
+ void add(Buffer *, unsigned long, int, int);
+ void prepare();
+
+ void configChanged(QSettings &settings);
+
+ QSize minimumSizeHint() const { return sizeHint(); }
+ QSize sizeHint() const { return QSize(4*4*4*2, 3*3*3*2); }
+
+ void paintEvent( QPaintEvent * );
+ void resizeEvent( QResizeEvent * );
+ //void customEvent( QCustomEvent * );
+
+ static QStringList visuals();
+
+ void setFrameRate( int newfps );
+ int frameRate() const { return fps; }
+
+public slots:
+void timeout();
+
+private:
+ static MainVisual *pointer;
+ VisualBase *vis;
+ QPixmap pixmap;
+ //QPtrList<VisualNode> nodes;
+ QList <VisualNode*> nodes;
+ QTimer *timer;
+ bool playing;
+ int fps;
+};
+
+class Skin;
+
+class StereoAnalyzer : public VisualBase
+{
+public:
+ StereoAnalyzer();
+ virtual ~StereoAnalyzer();
+
+
+ void resize( const QSize &size );
+ void configChanged(QSettings &settings);
+ bool process( VisualNode *node );
+ void draw( QPainter *p, const QColor &back );
+
+protected:
+ QColor startColor, targetColor;
+ //QMemArray<QRect> rects;
+ QVector <QRect> rects;
+ QVector <double> magnitudes;
+ //QMemArray<double> magnitudes;
+ QSize size;
+ LogScale scale;
+ double scaleFactor, falloff;
+ int analyzerBarWidth, fps;
+ //rfftw_plan plan;
+ //fftw_real lin[512], rin[512], lout[1024], rout[1024];
+ int intern_vis_data[19];
+
+private:
+ Skin *m_skin;
+};
+
+#endif