/***************************************************************************
 *   Copyright (C) 2020 by Jan K. S.                                       *
 *                                                                         *
 ***( see copyright.txt file at root folder )*******************************/

/*   Modified 2020 by Santiago González                                    *
 *   santigoro@gmail.com                                                   *
 *                                                                         */

#pragma once

#include <QWidget>

class JoystickWidget : public QWidget
{
    public:
        JoystickWidget(); 
        ~JoystickWidget(); 

        void setupWidget(); 
        
        double getXValue() { return m_xValue;  }
        double getYValue() { return m_yValue;  }
        bool   changed()   { return m_changed;  }
        
        void mousePressEvent( QMouseEvent* event ); 
        void mouseMoveEvent( QMouseEvent* event ); 
        void mouseReleaseEvent( QMouseEvent* event ); 
        void paintEvent( QPaintEvent* event ); 

    private:
        bool eventFilter(QObject *object, QEvent *event) override; 

        double m_xValue; 
        double m_yValue; 

        bool m_changed; 
        
        QPointF m_movingOffset; 
        bool m_grabCenter; 
        
        QRectF centerEllipse(); 
        QPointF center(); 
        void updateOutputValues(); 
}; 
