emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/osm c38ab4f400 1/2: Preserve transient pin when zooming


From: ELPA Syncer
Subject: [elpa] externals/osm c38ab4f400 1/2: Preserve transient pin when zooming
Date: Sun, 20 Mar 2022 13:57:38 -0400 (EDT)

branch: externals/osm
commit c38ab4f400fa6c2fad75c57ac075e16b5b71d64c
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Preserve transient pin when zooming
---
 osm.el | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/osm.el b/osm.el
index cfb98b3188..423366b38c 100644
--- a/osm.el
+++ b/osm.el
@@ -600,17 +600,26 @@ Should be at least 7 days according to the server usage 
policies."
   "Zoom N times into the map."
   (interactive "p")
   (osm--barf-unless-osm)
-  (setq n (or n 1))
-  (cl-loop for i from n above 0
-           if (< osm--zoom (osm--server-property :max-zoom)) do
-           (setq osm--zoom (1+ osm--zoom)
-                 osm--x (* osm--x 2)
-                 osm--y (* osm--y 2)))
-  (cl-loop for i from n below 0
-           if (> osm--zoom (osm--server-property :min-zoom)) do
-           (setq osm--zoom (1- osm--zoom)
-                 osm--x (/ osm--x 2)
-                 osm--y (/ osm--y 2)))
+  (setq n (- (max (osm--server-property :min-zoom)
+                  (min (osm--server-property :max-zoom)
+                       (+ osm--zoom (or n 1))))
+             osm--zoom)
+        osm--zoom (+ osm--zoom n))
+  (cond
+   ((< n 0)
+    (setq n (lsh 1 (- n)))
+    (when osm--transient-pin
+      (setf (car osm--transient-pin) (/ (car osm--transient-pin) n)
+            (cadr osm--transient-pin) (/ (cadr osm--transient-pin) n)))
+    (setq osm--x (/ osm--x n)
+          osm--y (/ osm--y n)))
+   ((> n 0)
+    (setq n (lsh 1 n))
+    (when osm--transient-pin
+      (setf (car osm--transient-pin) (* (car osm--transient-pin) n)
+            (cadr osm--transient-pin) (* (cadr osm--transient-pin) n)))
+    (setq osm--x (* osm--x n)
+          osm--y (* osm--y n))))
   (osm--update))
 
 (defun osm-zoom-out (&optional n)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]