KShare/rendererwindow.cpp

54 lines
1.1 KiB
C++

#include "rendererwindow.hpp"
RendererWindow::RendererWindow(QRect &size, QWindow *parent) :
QWindow(*parent)
{
create();
backingStore = new QBackingStore(this);
setGeometry(size);
}
bool RasterWindow::event(QEvent *event)
{
if (event->type() == QEvent::UpdateRequest) {
renderNow();
return true;
}
return QWindow::event(event);
}
void RendererWindow::renderLater() {
requestUpdate();
}
void RasterWindow::resizeEvent(QResizeEvent *resizeEvent)
{
m_backingStore->resize(resizeEvent->size());
if (isExposed())
renderNow();
}
void RasterWindow::exposeEvent(QExposeEvent *)
{
if (isExposed())
renderNow();
}
void RasterWindow::renderNow()
{
if (!isExposed())
return;
QRect rect(0, 0, width(), height());
m_backingStore->beginPaint(rect);
QPaintDevice *device = m_backingStore->paintDevice();
QPainter painter(device);
painter.fillRect(0, 0, width(), height(), Qt::white);
render(&painter);
m_backingStore->endPaint();
m_backingStore->flush(rect);
}