Mixxx

/home/maxime/Projets/Mixxx/1.10/mixxx/src/widget/wspinny.h

Go to the documentation of this file.
00001 
00002 #ifndef _WSPINNY_H
00003 #define _WSPINNY_H
00004 
00005 #include <QGLWidget>
00006 #include "wwidget.h"
00007 #include "vinylcontrol/vinylcontrolmanager.h"
00008 #ifdef __VINYLCONTROL__
00009 #include "vinylcontrol/vinylcontrolproxy.h"
00010 #include "vinylcontrol/vinylcontrol.h"
00011 #endif
00012 
00013 class ControlObjectThreadMain;
00014 
00015 class WSpinny : public QGLWidget
00016 {
00017     Q_OBJECT
00018     public:
00019         WSpinny(QWidget* parent, VinylControlManager* pVCMan);
00020         ~WSpinny();
00021         void setup(QDomNode node, QString group);
00022         void dragEnterEvent(QDragEnterEvent *event);
00023         void dropEvent(QDropEvent *event);
00024     public slots:
00025         void updateAngle(double);
00026         void updateRate(double);
00027         void updateAngleForGhost();
00028         void updateVinylControlSpeed(double rpm);
00029         void updateVinylControlEnabled(double enabled);
00030         void invalidateVinylControl();
00031     signals:
00032         void trackDropped(QString filename, QString group);
00033     protected:
00034         //QWidget:
00035         void paintEvent(QPaintEvent*);
00036         void mouseMoveEvent(QMouseEvent * e);
00037         void mousePressEvent(QMouseEvent * e);
00038         void mouseReleaseEvent(QMouseEvent * e);
00039         void wheelEvent(QWheelEvent *e);
00040         void timerEvent(QTimerEvent* event);
00041 
00042         double calculateAngle(double playpos);
00043         int calculateFullRotations(double playpos);
00044         double calculatePositionFromAngle(double angle);
00045     private:
00046         QPixmap* m_pBG;
00047         QPixmap* m_pFG;
00048         QPixmap* m_pGhost;
00049         ControlObjectThreadMain* m_pPlay;
00050         ControlObjectThreadMain* m_pPlayPos;
00051         ControlObjectThreadMain* m_pVisualPlayPos;
00052         ControlObjectThreadMain* m_pDuration;
00053         ControlObjectThreadMain* m_pTrackSamples;
00054         ControlObjectThreadMain* m_pTrackSampleRate;
00055         ControlObjectThreadMain* m_pBPM;
00056         ControlObjectThreadMain* m_pScratch;
00057         ControlObjectThreadMain* m_pScratchToggle;
00058         ControlObjectThreadMain* m_pScratchPos;
00059         ControlObjectThreadMain* m_pRate;
00060         ControlObjectThreadMain* m_pVinylControlSpeedType;
00061         ControlObjectThreadMain* m_pVinylControlEnabled;
00062         ControlObjectThreadMain* m_pSignalEnabled;
00063 
00064 #ifdef __VINYLCONTROL__
00065         VinylControlManager* m_pVCManager;
00066         VinylControlProxy* m_pVinylControl;
00067 #endif
00068         double m_dInitialPos;
00069         bool m_bVinylActive;
00070         bool m_bSignalActive;
00071         QImage m_qImage;
00072         int m_iSize;
00073         int m_iTimerId;
00074         int m_iSignalUpdateTick;
00075         QString m_group;
00076         float m_fAngle; //Degrees
00077         float m_fGhostAngle;
00078         QTime m_time;
00079         double m_dPausedPosition;
00080         bool m_bGhostPlayback;
00081         QTimer m_ghostPaintTimer;
00082         int m_iStartMouseX;
00083         int m_iStartMouseY;
00084         int m_iFullRotations;
00085         double m_dPrevTheta;
00086         double m_dTheta;
00088         double m_dRotationsPerSecond;
00089 };
00090 
00091 #endif //_WSPINNY_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines