Exemple #1
5
void Watcher::takeTemporarySnapshot() {
    QRect screenSize = QApplication::desktop()->screenGeometry();
    if(lastScreenshotTimestamp.secsTo(QDateTime::currentDateTime()) > 2) {
        lastScreenshot = QPixmap();
#ifdef Q_OS_MAC
        CGRect screenRect;
        screenRect.origin.x    = screenSize.x();
        screenRect.origin.y    = screenSize.y();
        screenRect.size.width  = screenSize.width();
        screenRect.size.height = screenSize.height();
        CGImageRef screenshotMac = CGWindowListCreateImage(screenRect, kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageDefault);
#ifdef QT4
        lastScreenshot = QPixmap::fromMacCGImageRef(screenshotMac);
#endif
        CGImageRelease(screenshotMac);
#endif
        if(lastScreenshot.isNull())
            lastScreenshot = QPixmap::grabWindow(QApplication::desktop()->winId(), screenSize.x(), screenSize.y(), screenSize.width(), screenSize.height());
        lastScreenshotTimestamp = QDateTime::currentDateTime();
    }
    Global::temporaryScreenshot = lastScreenshot.toImage();
}
QPixmap OSXWindowCapture::Capture( int x, int y, int w, int h ) {
  CGRect captureRect = CGRectMake(
      x + Left(),
      y + Top(),
      w,
      h );

  CGImageRef image = CGWindowListCreateImage( captureRect,
      kCGWindowListOptionIncludingWindow,
      mWinId,
      kCGWindowImageNominalResolution | kCGWindowImageBoundsIgnoreFraming );

  QPixmap pixmap = QtMac::fromCGImageRef( image );
  CGImageRelease( image );

  return pixmap;
}