paysages: Fixed previews for win32.
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@300 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
c3348b93f4
commit
ca1e74c843
3 changed files with 25 additions and 34 deletions
|
@ -19,6 +19,10 @@ public:
|
||||||
{
|
{
|
||||||
_running = false;
|
_running = false;
|
||||||
}
|
}
|
||||||
|
static inline void usleep(int us)
|
||||||
|
{
|
||||||
|
QThread::usleep(us);
|
||||||
|
}
|
||||||
protected:
|
protected:
|
||||||
void run()
|
void run()
|
||||||
{
|
{
|
||||||
|
@ -56,16 +60,15 @@ BasePreview::BasePreview(QWidget* parent) :
|
||||||
this->pixbuf->fill(0x00000000);
|
this->pixbuf->fill(0x00000000);
|
||||||
|
|
||||||
this->alive = true;
|
this->alive = true;
|
||||||
this->need_rerender = false;
|
|
||||||
this->need_render = true;
|
this->need_render = true;
|
||||||
|
|
||||||
|
QObject::connect(this, SIGNAL(contentChange()), this, SLOT(update()));
|
||||||
|
QObject::connect(this, SIGNAL(redrawRequested()), this, SLOT(handleRedraw()));
|
||||||
|
|
||||||
this->setMinimumSize(256, 256);
|
this->setMinimumSize(256, 256);
|
||||||
this->setMaximumSize(256, 256);
|
this->setMaximumSize(256, 256);
|
||||||
this->resize(256, 256);
|
this->resize(256, 256);
|
||||||
|
|
||||||
QObject::connect(this, SIGNAL(contentChange()), this, SLOT(update()));
|
|
||||||
QObject::connect(this, SIGNAL(redrawRequested()), this, SLOT(handleRedraw()));
|
|
||||||
|
|
||||||
this->updater = new PreviewDrawer(this);
|
this->updater = new PreviewDrawer(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,10 +130,6 @@ void BasePreview::doRender()
|
||||||
{
|
{
|
||||||
if (this->alive)
|
if (this->alive)
|
||||||
{
|
{
|
||||||
if (this->need_rerender)
|
|
||||||
{
|
|
||||||
this->forceRender();
|
|
||||||
}
|
|
||||||
if (this->need_render)
|
if (this->need_render)
|
||||||
{
|
{
|
||||||
this->need_render = false;
|
this->need_render = false;
|
||||||
|
@ -147,10 +146,16 @@ void BasePreview::redraw()
|
||||||
|
|
||||||
void BasePreview::handleRedraw()
|
void BasePreview::handleRedraw()
|
||||||
{
|
{
|
||||||
need_rerender = true;
|
|
||||||
lock_drawing->lock();
|
lock_drawing->lock();
|
||||||
|
|
||||||
updateData();
|
updateData();
|
||||||
need_rerender = true;
|
|
||||||
|
QImage part = pixbuf->copy();
|
||||||
|
pixbuf->fill(0x00000000);
|
||||||
|
QPainter painter(pixbuf);
|
||||||
|
painter.setOpacity(0.99);
|
||||||
|
painter.drawImage(0, 0, part);
|
||||||
|
|
||||||
lock_drawing->unlock();
|
lock_drawing->unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,7 +170,6 @@ void BasePreview::resizeEvent(QResizeEvent* event)
|
||||||
this->pixbuf = new QImage(this->size(), QImage::Format_ARGB32);
|
this->pixbuf = new QImage(this->size(), QImage::Format_ARGB32);
|
||||||
|
|
||||||
this->pixbuf->fill(0x00000000);
|
this->pixbuf->fill(0x00000000);
|
||||||
this->need_rerender = true;
|
|
||||||
this->need_render = true;
|
this->need_render = true;
|
||||||
|
|
||||||
delete image;
|
delete image;
|
||||||
|
@ -179,36 +183,22 @@ void BasePreview::paintEvent(QPaintEvent* event)
|
||||||
painter.drawImage(0, 0, *this->pixbuf);
|
painter.drawImage(0, 0, *this->pixbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BasePreview::forceRender()
|
|
||||||
{
|
|
||||||
this->lock_drawing->lock();
|
|
||||||
|
|
||||||
QImage part = pixbuf->copy();
|
|
||||||
pixbuf->fill(0x00000000);
|
|
||||||
QPainter painter(pixbuf);
|
|
||||||
painter.setOpacity(0.99);
|
|
||||||
painter.drawImage(0, 0, part);
|
|
||||||
|
|
||||||
this->need_rerender = false;
|
|
||||||
this->need_render = true;
|
|
||||||
|
|
||||||
this->lock_drawing->unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void BasePreview::renderPixbuf()
|
void BasePreview::renderPixbuf()
|
||||||
{
|
{
|
||||||
QColor col;
|
QColor col;
|
||||||
bool done;
|
bool done;
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
QImage* current_pixbuf;
|
||||||
|
|
||||||
w = this->pixbuf->width();
|
w = this->pixbuf->width();
|
||||||
h = this->pixbuf->height();
|
h = this->pixbuf->height();
|
||||||
|
current_pixbuf = this->pixbuf;
|
||||||
|
|
||||||
for (x = 0; x < w; x++)
|
for (x = 0; x < w; x++)
|
||||||
{
|
{
|
||||||
this->lock_drawing->lock();
|
this->lock_drawing->lock();
|
||||||
|
|
||||||
if (this->need_rerender || !this->alive)
|
if (!this->alive || this->pixbuf != current_pixbuf)
|
||||||
{
|
{
|
||||||
this->lock_drawing->unlock();
|
this->lock_drawing->unlock();
|
||||||
return;
|
return;
|
||||||
|
@ -217,7 +207,7 @@ void BasePreview::renderPixbuf()
|
||||||
done = false;
|
done = false;
|
||||||
for (y = 0; y < h; y++)
|
for (y = 0; y < h; y++)
|
||||||
{
|
{
|
||||||
if (this->need_rerender || !this->alive)
|
if (!this->alive || this->pixbuf != current_pixbuf)
|
||||||
{
|
{
|
||||||
this->lock_drawing->unlock();
|
this->lock_drawing->unlock();
|
||||||
return;
|
return;
|
||||||
|
@ -236,7 +226,7 @@ void BasePreview::renderPixbuf()
|
||||||
emit contentChange();
|
emit contentChange();
|
||||||
}
|
}
|
||||||
this->lock_drawing->unlock();
|
this->lock_drawing->unlock();
|
||||||
usleep(1);
|
PreviewDrawer::usleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,7 +278,10 @@ void BasePreview::mouseMoveEvent(QMouseEvent* event)
|
||||||
xoffset -= (double)ndx * scaling;
|
xoffset -= (double)ndx * scaling;
|
||||||
yoffset -= (double)ndy * scaling;
|
yoffset -= (double)ndy * scaling;
|
||||||
|
|
||||||
forceRender();
|
lock_drawing->lock();
|
||||||
|
pixbuf->fill(0x00000000);
|
||||||
|
need_render = true;
|
||||||
|
lock_drawing->unlock();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,7 +30,6 @@ protected:
|
||||||
double scaling;
|
double scaling;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void forceRender();
|
|
||||||
void renderPixbuf();
|
void renderPixbuf();
|
||||||
|
|
||||||
void resizeEvent(QResizeEvent* event);
|
void resizeEvent(QResizeEvent* event);
|
||||||
|
@ -49,7 +48,6 @@ private:
|
||||||
int mousey;
|
int mousey;
|
||||||
|
|
||||||
bool alive;
|
bool alive;
|
||||||
bool need_rerender;
|
|
||||||
bool need_render;
|
bool need_render;
|
||||||
|
|
||||||
double conf_scroll_xmin;
|
double conf_scroll_xmin;
|
||||||
|
|
|
@ -12,7 +12,7 @@ QMAKE_CXXFLAGS_DEBUG += -pg
|
||||||
QMAKE_LFLAGS_DEBUG += -pg
|
QMAKE_LFLAGS_DEBUG += -pg
|
||||||
|
|
||||||
unix:LIBS += -L$$DESTDIR -lpaysages
|
unix:LIBS += -L$$DESTDIR -lpaysages
|
||||||
win32:LIBS += $$DESTDIR/libpaysages.a -lDevIL -lILU -lILUT -lglib-2.0 -lgthread-2.0
|
win32:LIBS += ../libpaysages.a -lDevIL -lILU -lILUT -lglib-2.0 -lgthread-2.0
|
||||||
|
|
||||||
HEADERS += $$files(*.h) $$files(../lib_paysages/*.h) $$files(../lib_paysages/shared/*.h)
|
HEADERS += $$files(*.h) $$files(../lib_paysages/*.h) $$files(../lib_paysages/shared/*.h)
|
||||||
SOURCES += $$files(*.cpp)
|
SOURCES += $$files(*.cpp)
|
||||||
|
|
Loading…
Reference in a new issue