Helpviewer/HelpSnap.py

Thu, 29 Jun 2017 18:51:03 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 29 Jun 2017 18:51:03 +0200
branch
maintenance
changeset 5776
49ba4a9f0421
parent 5389
9b1c800daff3
child 6048
82ad8ec9548c
permissions
-rw-r--r--

Fixed an issue in the single application client.
(grafted from 3a8bedba97ab2185b912f3e0614c8b3bb9074b3f)

# -*- coding: utf-8 -*-

# Copyright (c) 2010 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing functions to generate page previews.
"""

from __future__ import unicode_literals

from PyQt5.QtCore import QSize, Qt
from PyQt5.QtGui import QPixmap, QPainter
from PyQt5.QtWebKitWidgets 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