This commit is contained in:
Kovid Goyal 2012-12-31 15:51:59 +05:30
parent 88a13dc8ee
commit c84fa4bf80

View File

@ -17,14 +17,7 @@ QBrush, QColor, QPoint, QPixmap, QPainterPath, QRectF, Qt, QPointF
from calibre.ebooks.pdf.render.engine import PdfDevice from calibre.ebooks.pdf.render.engine import PdfDevice
def full(dev): def full(p, xmax, ymax):
p = QPainter(dev)
if isinstance(dev, PdfDevice):
dev.init_page()
xmax, ymax = p.viewport().width(), p.viewport().height()
b = p.brush()
try:
p.drawRect(0, 0, xmax, ymax) p.drawRect(0, 0, xmax, ymax)
p.drawPolyline(QPoint(0, 0), QPoint(xmax, 0), QPoint(xmax, ymax), p.drawPolyline(QPoint(0, 0), QPoint(xmax, 0), QPoint(xmax, ymax),
QPoint(0, ymax), QPoint(0, 0)) QPoint(0, ymax), QPoint(0, 0))
@ -73,8 +66,16 @@ def full(dev):
x, y = 1, ymax/1.9 x, y = 1, ymax/1.9
g = QLinearGradient(QPointF(x, y), QPointF(x+w, y+w)) g = QLinearGradient(QPointF(x, y), QPointF(x+w, y+w))
g.setColorAt(0, QColor('#00f')) g.setColorAt(0, QColor('#00f'))
g.setColorAt(1, QColor('#006')) g.setColorAt(1, QColor('#fff'))
p.fillRect(x, y, w, w, QBrush(g)) p.fillRect(x, y, w, w, QBrush(g))
def run(dev, func):
p = QPainter(dev)
if isinstance(dev, PdfDevice):
dev.init_page()
xmax, ymax = p.viewport().width(), p.viewport().height()
try:
func(p, xmax, ymax)
finally: finally:
p.end() p.end()
if isinstance(dev, PdfDevice): if isinstance(dev, PdfDevice):
@ -94,8 +95,8 @@ def main():
img.setDotsPerMeterX(100*39.37) img.setDotsPerMeterX(100*39.37)
img.setDotsPerMeterY(100*39.37) img.setDotsPerMeterY(100*39.37)
img.fill(Qt.white) img.fill(Qt.white)
func(dev) run(dev, func)
func(img) run(img, func)
path = os.path.join(tdir, 'painter.png') path = os.path.join(tdir, 'painter.png')
img.save(path) img.save(path)
print ('PDF written to:', pdf) print ('PDF written to:', pdf)