#include "xywidget.h"

XYWidget::XYWidget(QWidget *parent)
    : QWidget(parent)
{

	this->setMinimumSize( 10, 10);
	xpos = ypos = this->width()/2;
	this->min = 0;
        this->max = this->width();
	this->fact = 1;
}

XYWidget::~XYWidget()
{
}

void XYWidget::paintEvent(QPaintEvent *event)
{

	QPainter painter(this);

	this->setFactor();

	painter.setBrush(QBrush(Qt::white, Qt::SolidPattern));
	painter.drawRect(0, 0, this->width(), this->height());

	painter.setPen(QPen(Qt::black, 2, Qt::SolidLine, Qt::RoundCap, Qt::MiterJoin));
	painter.drawLine( xpos-5, ypos, xpos+5, ypos );
	painter.drawLine( xpos, ypos-5, xpos, ypos+5 );

	painter.setPen(QPen(Qt::black, 1, Qt::SolidLine));
//, Qt::RoundCap, Qt::MiterJoin));
	painter.drawEllipse( xpos-3, ypos-3, 5, 5 );

}

void XYWidget::setFactor( void )
{


	int s_range = (this->max - this->min);
        int d_range = this->width();

	fact = (float)d_range / (float)s_range;
	
}

void XYWidget::setMinimum( int min ) { this->min = min; }
void XYWidget::setMaximum( int max ) { this->max = max; }
int XYWidget::minimum( void ) { return this->min; }
int XYWidget::maximum( void ) { return this->max; }
int XYWidget::x( void ) { return this->xval; }
int XYWidget::y( void ) { return this->yval; }

void XYWidget::setX(int value)
{
	if ( (value >= min) && ( value <= max))
	{
		xpos = (fact)*(value - this->min);
	}
	this->xval = value;
	this->update();
}

void XYWidget::setY(int value)
{
	if ( (value >= min) && ( value <= max))
	{
		ypos = (fact)*(value - this->min);
	}
	this->yval = value;
	this->update();
}

void XYWidget::setValues( int x, int y )
{
	this->setFactor();
	this->setX(x);
	this->setY(y);
	qDebug() << fact << xpos << ypos;
}
