Blob Blame History Raw
From 0aa77e876028017c8b3eb9e512960a807b4b0545 Mon Sep 17 00:00:00 2001
From: Wilbert Berendsen <wbsoft@xs4all.nl>
Date: Mon, 8 Nov 2021 09:27:44 +0100
Subject: [PATCH] fix implicit conversions from float to int, those become
 unsupported in Python 3.10

---
 qpageview/magnifier.py  |  4 ++--
 qpageview/page.py       |  4 ++--
 qpageview/poppler.py    |  6 +++---
 qpageview/render.py     |  4 ++--
 qpageview/rubberband.py |  2 +-
 qpageview/scrollarea.py | 14 +++++++-------
 qpageview/shadow.py     |  8 ++++----
 7 files changed, 21 insertions(+), 21 deletions(-)

diff --git frescobaldi_app/qpageview/magnifier.py frescobaldi_app/qpageview/magnifier.py
index 31db533..532f0b6 100644
--- frescobaldi_app/qpageview/magnifier.py
+++ frescobaldi_app/qpageview/magnifier.py
@@ -247,8 +247,8 @@ def wheelEvent(self, ev):
                 factor = 1.1 ** (ev.angleDelta().y() / 120)
                 g = self.geometry()
                 c = g.center()
-                g.setWidth(min(max(g.width() * factor, self.MIN_SIZE), self.MAX_SIZE))
-                g.setHeight(min(max(g.height() * factor, self.MIN_SIZE), self.MAX_SIZE))
+                g.setWidth(int(min(max(g.width() * factor, self.MIN_SIZE), self.MAX_SIZE)))
+                g.setHeight(int(min(max(g.height() * factor, self.MIN_SIZE), self.MAX_SIZE)))
                 g.moveCenter(c)
                 self.setGeometry(g)
             else:
diff --git frescobaldi_app/qpageview/page.py frescobaldi_app/qpageview/page.py
index 6d26577..a2314fa 100644
--- frescobaldi_app/qpageview/page.py
+++ frescobaldi_app/qpageview/page.py
@@ -300,7 +300,7 @@ def pdf(self, filename, rect=None, resolution=72.0, paperColor=None):
 
         pdf = QPdfWriter(filename)
         pdf.setCreator("qpageview")
-        pdf.setResolution(resolution)
+        pdf.setResolution(int(resolution))
 
         layout = pdf.pageLayout()
         layout.setMode(layout.FullPageMode)
@@ -364,7 +364,7 @@ def svg(self, filename, rect=None, resolution=72.0, paperColor=None):
             svg.setFileName(filename)
         else:
             svg.setOutputDevice(filename)
-        svg.setResolution(resolution)
+        svg.setResolution(int(resolution))
         svg.setSize(targetSize.toSize())
         svg.setViewBox(QRectF(0, 0, targetSize.width(), targetSize.height()))
         return self.output(svg, source, paperColor)
diff --git frescobaldi_app/qpageview/poppler.py frescobaldi_app/qpageview/poppler.py
index 827ceb3..29122a9 100644
--- frescobaldi_app/qpageview/poppler.py
+++ frescobaldi_app/qpageview/poppler.py
@@ -208,8 +208,8 @@ def render(self, page, key, tile, paperColor=None):
             key.rotation, paperColor)
         if multiplier == 2:
             image = image.scaledToWidth(tile.w, Qt.SmoothTransformation)
-        image.setDotsPerMeterX(xres * 39.37)
-        image.setDotsPerMeterY(yres * 39.37)
+        image.setDotsPerMeterX(int(xres * 39.37))
+        image.setDotsPerMeterY(int(yres * 39.37))
         return image
 
     def setRenderHints(self, doc):
@@ -262,7 +262,7 @@ def draw(self, page, painter, key, tile, paperColor=None):
         (See AbstractPage.print().)
 
         """
-        source = self.map(key, page.pageRect()).mapRect(QRectF(*tile))
+        source = self.map(key, page.pageRect()).mapRect(QRectF(*tile)).toRect()   # rounded
         target = QRectF(0, 0, tile.w, tile.h)
         if key.rotation & 1:
             target.setSize(target.size().transposed())
diff --git frescobaldi_app/qpageview/render.py frescobaldi_app/qpageview/render.py
index 935387b..e58a8ae 100644
--- frescobaldi_app/qpageview/render.py
+++ frescobaldi_app/qpageview/render.py
@@ -250,7 +250,7 @@ def info(self, page, device, rect):
         key = self.key(page, ratio)
 
         # paint rect in tile coordinates
-        target = QRect(rect.x() * ratio, rect.y() * ratio, rect.width() * ratio, rect.height() * ratio)
+        target = QRect(int(rect.x() * ratio), int(rect.y() * ratio), int(rect.width() * ratio), int(rect.height() * ratio))
 
         # tiles to paint
         tiles = [t for t in self.tiles(key.width, key.height) if QRect(*t) & target]
@@ -327,7 +327,7 @@ def paint(self, page, painter, rect, callback=None):
                 vscale = key.height / height
                 for t in tileset:
                     # scale to our image size
-                    r = QRect(t.x * hscale, t.y * vscale, t.w * hscale, t.h * vscale) & target
+                    r = QRect(int(t.x * hscale), int(t.y * vscale), int(t.w * hscale), int(t.h * vscale)) & target
                     if r and QRegion(r).subtracted(region):
                         # we have an image that can be drawn in rect r
                         source = QRectF(r.x() / hscale - t.x, r.y() / vscale - t.y,
diff --git frescobaldi_app/qpageview/rubberband.py frescobaldi_app/qpageview/rubberband.py
index e73b3e7..0677566 100644
--- frescobaldi_app/qpageview/rubberband.py
+++ frescobaldi_app/qpageview/rubberband.py
@@ -97,7 +97,7 @@ def paintEvent(self, ev):
         color.setAlpha(150)
         painter.setPen(color)
         # XXX can this adjustment be done smarter?
-        adjust = -1 / self.devicePixelRatio()
+        adjust = int(-1 / self.devicePixelRatio())
         painter.drawRect(self.rect().adjusted(0, 0, adjust, adjust))
 
         # Pseudo-handles at the corners and sides
diff --git frescobaldi_app/qpageview/scrollarea.py frescobaldi_app/qpageview/scrollarea.py
index 7cbef83..be6d591 100644
--- frescobaldi_app/qpageview/scrollarea.py
+++ frescobaldi_app/qpageview/scrollarea.py
@@ -253,7 +253,7 @@ def startScrolling(self, scroller):
         """Begin a scrolling operation using the specified scroller."""
         self._scroller = scroller
         if self._scrollTimer is None:
-            self._scrollTimer = self.startTimer(1000 / self.scrollupdatespersec)
+            self._scrollTimer = self.startTimer(int(1000 // self.scrollupdatespersec))
 
     def stopScrolling(self):
         """Stop scrolling."""
@@ -323,9 +323,9 @@ def mouseReleaseEvent(self, ev):
                 speed = speed * 1000 / self.scrollupdatespersec / time
                 # compute diff to scroll
                 sx = abs(speed.x())
-                diffx = sx * (sx + 1) / 2
+                diffx = int(sx * (sx + 1) / 2)
                 sy = abs(speed.y())
-                diffy = sy * (sy + 1) / 2
+                diffy = int(sy * (sy + 1) / 2)
                 if speed.x() < 0: diffx = -diffx
                 if speed.y() < 0: diffy = -diffy
                 self.kineticScrollBy(QPoint(diffx, diffy))
@@ -438,8 +438,8 @@ def scrollBy(self, diff):
         dy = diff.y()
 
         # solve speed*(speed+1)/2 = delta to ensure 1+2+3+...+speed is as close as possible under delta..
-        sx = (math.sqrt(1 + 8 * abs(dx)) - 1) // 2
-        sy = (math.sqrt(1 + 8 * abs(dy)) - 1) // 2
+        sx = int(math.sqrt(1 + 8 * abs(dx)) - 1) // 2
+        sy = int(math.sqrt(1 + 8 * abs(dy)) - 1) // 2
 
         # compute the amount of displacement still needed because we're dealing with integer values.
         # Since this function is called for exact moves (not free scrolling)
diff --git frescobaldi_app/qpageview/shadow.py frescobaldi_app/qpageview/shadow.py
index 253fdd2..6e6e497 100644
--- frescobaldi_app/qpageview/shadow.py
+++ frescobaldi_app/qpageview/shadow.py
@@ -39,10 +39,10 @@ class ShadowViewMixin:
 
     def paintEvent(self, ev):
         if self.dropShadowEnabled:
-            width = self._pageLayout.spacing / 2
+            width = round(self._pageLayout.spacing / 2.0)
             # make the rect slightly larger, so we "see" shadow of pages that
             # would be outside view normally.
-            rect = ev.rect().adjusted(-width, -width, width / 2, width / 2)
+            rect = ev.rect().adjusted(-width, -width, int(width // 2), int(width // 2))
             painter = QPainter(self.viewport())
             for page, rect in self.pagesToPaint(rect, painter):
                 self.drawDropShadow(page, painter, width)
--- frescobaldi_app/qpageview/scrollarea.py~	2022-01-05 13:01:08.498518802 -0600
+++ frescobaldi_app/qpageview/scrollarea.py	2022-01-05 13:33:04.403443412 -0600
@@ -186,9 +186,9 @@
         else:
             viewport = self.viewport()
             vbar.setRange(0, h - viewport.height())
-            vbar.setPageStep(viewport.height() * .9)
+            vbar.setPageStep(int(viewport.height() * .9))
             hbar.setRange(0, w - viewport.width())
-            hbar.setPageStep(viewport.width() * .9)
+            hbar.setPageStep(int(viewport.width() * .9))
         
     def scrollOffset(self):
         """Return the current scroll offset."""
--- frescobaldi_app/qpageview/shadow.py~	2022-01-05 13:01:08.498518802 -0600
+++ frescobaldi_app/qpageview/shadow.py	2022-01-05 13:35:41.721596442 -0600
@@ -53,14 +53,14 @@
         
         """
         width = round(width)
-        rect = page.rect().adjusted(width / 2, width / 2, 0, 0)
+        rect = page.rect().adjusted(int(width // 2), int(width // 2), 0, 0)
         color = QColor(Qt.black)
         pen = QPen()
         pen.setWidth(1)
         pen.setJoinStyle(Qt.MiterJoin)
         for i in range(width):
             f = (width-i)/width
-            color.setAlpha(200**f + 55*f)
+            color.setAlpha(int(200**f + 55*f))
             pen.setColor(color)
             painter.setPen(pen)
             painter.drawRect(rect.adjusted(-i, -i, i, i))