Helpviewer/HelpSnap.py

changeset 634
7b84cbd2f752
child 791
9ec2ac20e54e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Helpviewer/HelpSnap.py	Sun Sep 19 14:00:57 2010 +0200
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing functions to generate page previews.
+"""
+
+from PyQt4.QtCore import QSize, Qt
+from PyQt4.QtGui import QPixmap, QPainter
+from PyQt4.QtWebKit import QWebFrame
+
+def renderTabPreview(page, w, h):
+    """
+    Public function to render a pixmap of a page.
+    
+    @param page reference to the page to be previewed (QWebPage)
+    @param w width of the preview pixmap (integer)
+    @param h height of the preview pixmap (integer)
+    @return preview pixmap (QPixmap)
+    """
+    oldSize = page.viewportSize()
+    width = page.mainFrame().contentsSize().width()
+    page.setViewportSize(QSize(width, int(width * h / w)))
+    pageImage = __render(page, page.viewportSize().width(), page.viewportSize().height())
+    page.setViewportSize(oldSize)
+    return pageImage.scaled(w, h, Qt.IgnoreAspectRatio, Qt.SmoothTransformation)
+
+def __render(page, w, h):
+    """
+    Private function to render a pixmap of given size for a web page.
+    
+    @param page reference to the page to be rendered (QWebPage)
+    @param w width of the pixmap (integer)
+    @param h height of the pixmap (integer)
+    @return rendered pixmap (QPixmap)
+    """
+    # create the page image
+    pageImage = QPixmap(w, h)
+    pageImage.fill(Qt.transparent)
+    
+    # render it
+    p = QPainter(pageImage)
+    page.mainFrame().render(p, QWebFrame.ContentsLayer)
+    p.end()
+    
+    return pageImage

eric ide

mercurial