1############################################################################# 2## 3## Copyright (C) 2013 Riverbank Computing Limited. 4## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 5## All rights reserved. 6## 7## This file is part of the examples of PyQt. 8## 9## $QT_BEGIN_LICENSE:LGPL$ 10## Commercial Usage 11## Licensees holding valid Qt Commercial licenses may use this file in 12## accordance with the Qt Commercial License Agreement provided with the 13## Software or, alternatively, in accordance with the terms contained in 14## a written agreement between you and Nokia. 15## 16## GNU Lesser General Public License Usage 17## Alternatively, this file may be used under the terms of the GNU Lesser 18## General Public License version 2.1 as published by the Free Software 19## Foundation and appearing in the file LICENSE.LGPL included in the 20## packaging of this file. Please review the following information to 21## ensure the GNU Lesser General Public License version 2.1 requirements 22## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 23## 24## In addition, as a special exception, Nokia gives you certain additional 25## rights. These rights are described in the Nokia Qt LGPL Exception 26## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27## 28## GNU General Public License Usage 29## Alternatively, this file may be used under the terms of the GNU 30## General Public License version 3.0 as published by the Free Software 31## Foundation and appearing in the file LICENSE.GPL included in the 32## packaging of this file. Please review the following information to 33## ensure the GNU General Public License version 3.0 requirements will be 34## met: http://www.gnu.org/copyleft/gpl.html. 35## 36## If you have questions regarding the use of this file, please contact 37## Nokia at qt-info@nokia.com. 38## $QT_END_LICENSE$ 39## 40############################################################################# 41 42 43from PyQt5.QtCore import QRect, Qt 44from PyQt5.QtGui import QColor, QImage, QLinearGradient, QPainter 45 46from colors import Colors 47from demoitem import DemoItem 48 49 50class LetterItem(DemoItem): 51 def __init__(self, letter, parent=None): 52 super(LetterItem, self).__init__(parent) 53 54 self.letter = letter 55 56 self.useSharedImage(__file__ + letter) 57 58 def createImage(self, transform): 59 scaledRect = transform.mapRect(QRect(0, 0, 25, 25)) 60 image = QImage(scaledRect.width(), scaledRect.height(), 61 QImage.Format_ARGB32_Premultiplied) 62 image.fill(0) 63 painter = QPainter(image) 64 painter.scale(transform.m11(), transform.m22()) 65 painter.setRenderHints(QPainter.TextAntialiasing | QPainter.Antialiasing | QPainter.SmoothPixmapTransform) 66 painter.setPen(Qt.NoPen) 67 68 if Colors.useEightBitPalette: 69 painter.setBrush(QColor(102, 175, 54)) 70 painter.drawEllipse(0, 0, 25, 25) 71 painter.setFont(Colors.tickerFont()) 72 painter.setPen(QColor(255, 255, 255)) 73 painter.drawText(10, 15, self.letter) 74 else: 75 brush = QLinearGradient(0, 0, 0, 25) 76 brush.setSpread(QLinearGradient.PadSpread) 77 brush.setColorAt(0.0, QColor(102, 175, 54, 200)) 78 brush.setColorAt(1.0, QColor(102, 175, 54, 60)) 79 painter.setBrush(brush) 80 painter.drawEllipse(0, 0, 25, 25) 81 painter.setFont(Colors.tickerFont()) 82 painter.setPen(QColor(255, 255, 255, 255)) 83 painter.drawText(10, 15, self.letter) 84 85 return image 86