Helpviewer/HelpSnap.py

changeset 634
7b84cbd2f752
child 791
9ec2ac20e54e
equal deleted inserted replaced
633:4bda1d24b8a7 634:7b84cbd2f752
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing functions to generate page previews.
8 """
9
10 from PyQt4.QtCore import QSize, Qt
11 from PyQt4.QtGui import QPixmap, QPainter
12 from PyQt4.QtWebKit import QWebFrame
13
14 def renderTabPreview(page, w, h):
15 """
16 Public function to render a pixmap of a page.
17
18 @param page reference to the page to be previewed (QWebPage)
19 @param w width of the preview pixmap (integer)
20 @param h height of the preview pixmap (integer)
21 @return preview pixmap (QPixmap)
22 """
23 oldSize = page.viewportSize()
24 width = page.mainFrame().contentsSize().width()
25 page.setViewportSize(QSize(width, int(width * h / w)))
26 pageImage = __render(page, page.viewportSize().width(), page.viewportSize().height())
27 page.setViewportSize(oldSize)
28 return pageImage.scaled(w, h, Qt.IgnoreAspectRatio, Qt.SmoothTransformation)
29
30 def __render(page, w, h):
31 """
32 Private function to render a pixmap of given size for a web page.
33
34 @param page reference to the page to be rendered (QWebPage)
35 @param w width of the pixmap (integer)
36 @param h height of the pixmap (integer)
37 @return rendered pixmap (QPixmap)
38 """
39 # create the page image
40 pageImage = QPixmap(w, h)
41 pageImage.fill(Qt.transparent)
42
43 # render it
44 p = QPainter(pageImage)
45 page.mainFrame().render(p, QWebFrame.ContentsLayer)
46 p.end()
47
48 return pageImage

eric ide

mercurial