[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)