Spaces:
Running on Zero
Running on Zero
Drop the comparison slider, drag the zoom point, allow 8 steps
Browse files- geometry.py +8 -1
geometry.py
CHANGED
|
@@ -28,10 +28,17 @@ def zoom_window(img, upscale, center=(0.5, 0.5)):
|
|
| 28 |
|
| 29 |
|
| 30 |
def nested_rects(size, levels, upscale=4, center=(0.5, 0.5)):
|
| 31 |
-
"""Where each zoom step lands, in the coordinates of the first canvas.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
rects, rect = [], (0, 0, size[0], size[1])
|
| 33 |
for _ in range(levels):
|
| 34 |
side = rect[2] - rect[0]
|
|
|
|
|
|
|
| 35 |
l, t, r, b = window_rect((side, side), upscale, center)
|
| 36 |
rect = (rect[0] + l, rect[1] + t, rect[0] + r, rect[1] + b)
|
| 37 |
rects.append(rect)
|
|
|
|
| 28 |
|
| 29 |
|
| 30 |
def nested_rects(size, levels, upscale=4, center=(0.5, 0.5)):
|
| 31 |
+
"""Where each zoom step lands, in the coordinates of the first canvas.
|
| 32 |
+
|
| 33 |
+
Stops early once a window would be under a pixel wide. The recursion itself never
|
| 34 |
+
degenerates, because every step resizes its crop back up to the full canvas, but drawing
|
| 35 |
+
all those steps onto the one original canvas does run out of pixels.
|
| 36 |
+
"""
|
| 37 |
rects, rect = [], (0, 0, size[0], size[1])
|
| 38 |
for _ in range(levels):
|
| 39 |
side = rect[2] - rect[0]
|
| 40 |
+
if side // upscale < 1:
|
| 41 |
+
break
|
| 42 |
l, t, r, b = window_rect((side, side), upscale, center)
|
| 43 |
rect = (rect[0] + l, rect[1] + t, rect[0] + r, rect[1] + b)
|
| 44 |
rects.append(rect)
|