54 lines
1.1 KiB
C++
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);
|
|
}
|