void KScienceSaver::slotTimeout() { if( grabPixmap ) { if( !QWidget::find(winId())->isActiveWindow() ) return; grabPreviewWidget(); grabPixmap = false; initialize(); if( hideBG[mode] ) do_refresh( QRect ( 0, 0, width(), height() ) ); } signed int oldx = xcoord, oldy = ycoord; if( gravity[mode] ) { double h = double(y+1.0) / double(height()-diam); if( h > 1.0 ) h = 1.0; vy = sqrt( h ) * ( (vy > 0.0) ? moveY[mode] : -moveY[mode] ); } myAssert( abs((int)rint(vy)) <= border, "assertion violated: vy <= border" ); if( moveOn ) { x += vx; y += vy; } if( x <= 0.0 ) { vx = -vx; x = 0.0; } if( int(x) + diam >= width()) { vx = -vx; myAssert( width()-diam > 0, "assertion violated: width-diam > 0" ); x = (double) (width() - diam - 1); } if( y <= 0.0 ) { vy = -vy; y = 0.0; } if( int(y) + diam >= height() ) { vy = -vy; myAssert( height() - diam > 0, "assertion violated: height-diam > 0" ); y = (double) (height() - diam - 1); } xcoord = (int) x ; ycoord = (int) y ; signed int dx = (signed int) xcoord - oldx; signed int dy = (signed int) ycoord - oldy; signed int xs, ys, xd, yd, w, h; if( dx > 0 ) { w = diam+dx; xd = oldx; xs = border-dx; if( dy > 0 ) { h = diam+dy; yd = oldy; ys = border-dy; } else { h = diam-dy; yd = ycoord; ys = border; } } else { w = diam-dx; xd = xcoord; xs = border; if( dy > 0 ) { h = diam+dy; yd = oldy; ys = border-dy; } else { h = diam-dy; yd = ycoord; ys = border; } } if( xd + w >= width() ) w = width() - xd - 1; if( yd + h >= height() ) h = height() - yd - 1; //printf("%d: (dx: %3d, dy: %3d), diam: %3d, (xc: %3d, yc: %3d), (xs: %3d, ys: %3d), (xd: %3d, yd: %3d), (w: %3d, h: %3d)\n", mode, dx, dy, diam, xcoord, ycoord, xs, ys, xd, yd, w, h); myAssert( dx <= border && dy <=border, "assertion violated: dx or dy <= border"); myAssert( xcoord >= 0 && ycoord >= 0, "assertion violated: xcoord, ycoord >= 0 "); myAssert( xd+w < width(), "assertion violated: xd+w < width" ); myAssert( yd+h < height(), "assertion violated: yd+h < height" ); if( hideBG[mode] ) blackPixel( xcoord, ycoord ); (this->*applyLens)(xs, ys, xd, yd, w, h); XPutImage( qt_xdisplay(), winId(), d->gc, d->buffer, 0, 0, xd, yd, w, h ); if( hideBG[mode] ) blackPixelUndo( xcoord, ycoord ); }
void ImageDisplayerWidgetImpl3::reset(){ QImage blackPixel(1,1,QImage::Format_RGB888); blackPixel.fill(Qt::black); this->_renderingThread.delegateRenderImage(blackPixel); }