/***************************************************************************
 *   Copyright (C) 2022 by Santiago González                               *
 *                                                                         *
 ***( see copyright.txt file at root folder )*******************************/

#pragma once

#include "e-element.h"
#include "component.h"
#include "e-resistor.h"
#include "touchpadwidget.h"
#include "pin.h"

class LibraryItem; 
class Pin; 

class TouchPad : public Component, public eElement
{
    public:
        TouchPad( QString type, QString id ); 
        ~TouchPad(); 

        static Component* construct( QString type, QString id ); 
        static LibraryItem* libraryItem(); 

        virtual void initialize() override; 
        virtual void stamp() override; 
        virtual void updateStep() override; 

        int width() { return m_width;  }
        void setWidth( int w ); 

        int height() { return m_height;  }
        void setHeight( int h ); 

        bool transparent() { return m_transparent;  }
        void setTransparent( bool t ); 

        double RxMin() { return m_RxMin;  }
        void setRxMin( double min ); 

        double RxMax() { return m_RxMax;  }
        void setRxMax( double max ); 

        double RyMin() { return m_RyMin;  }
        void setRyMin( double min ); 

        double RyMax() { return m_RyMax;  }
        void setRyMax( double max ); 

        virtual QPainterPath shape() const override; 
        virtual void paint( QPainter* p, const QStyleOptionGraphicsItem* o, QWidget* w ) override; 

    private:
        void updateSize(); 

        bool m_transparent; 

        int m_width; 
        int m_height; 
        int m_xPos; 
        int m_yPos; 

        double m_RxMin; 
        double m_RxMax; 
        double m_RyMin; 
        double m_RyMax; 

        eNode* m_eNodeX; 
        eNode* m_eNodeY; 

        eResistor m_resXA; 
        eResistor m_resXB; 
        eResistor m_resYA; 
        eResistor m_resYB; 
        eResistor m_resTouch; 

        Pin* m_vrx_p; 
        Pin* m_vry_p; 
        Pin* m_vrx_m; 
        Pin* m_vry_m; 

        ePin m_ePinXA; 
        ePin m_ePinXB; 
        ePin m_ePinYA; 
        ePin m_ePinYB; 
        ePin m_ePinTA; 
        ePin m_ePinTB; 

        TouchPadWidget m_touchpadW; 
        QGraphicsProxyWidget* m_proxy; 
}; 
