#include "imagerenderqwidget.h"
#include "clientglobals.h"
#include "connectionprofiler.h"
#include "clientsocket.h"

#include <QPainter>
#include <QPaintEvent>
#include <QResizeEvent>
#include <QCursor>
#include <QApplication>
#include <QTime>
#include <QTimer>
#include <QDebug>

ImageRenderQWidget::ImageRenderQWidget(QWidget *parent ) :
        QWidget( parent )
{
    setAttribute(Qt::WA_NoSystemBackground);
    setFocusPolicy ( Qt::StrongFocus );
    setMouseTracking( true );
    m_image = QPixmap( width(), height() );
    m_image.fill(Qt::black);

}

ImageRenderQWidget::~ImageRenderQWidget()
{

}

void ImageRenderQWidget::paintEvent( QPaintEvent *event )
{
    QTime timer;
    timer.start();

    QPainter p(this);
    QRect dirtyRect = event->rect();
    p.drawPixmap( dirtyRect, m_image, dirtyRect );
    ConnectionProfiler::instance()->addPaintLatencyTime( timer.elapsed() );
}

void ImageRenderQWidget::handleFramebufferResize( const QSize &size )
{
    m_image = QPixmap( size );
    m_image.fill(Qt::black);
    setMinimumSize(size);
}

void ImageRenderQWidget::mergeFramebufferChange( const QRect &area, const QImage &img )
{
    QPainter p( &m_image );
    p.setCompositionMode( QPainter::CompositionMode_Source );
    p.drawImage( area, img );
    p.end();
}

