![]() |
Mixxx
|
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