invalidate map only when app-state changes
This commit is contained in:
parent
cb0314d1d6
commit
f64bfeb7fd
@ -76,11 +76,9 @@ label.readout {
|
|||||||
;; to fill the width of the screen plus a bit
|
;; to fill the width of the screen plus a bit
|
||||||
|
|
||||||
(fn cairo-the-map [self g]
|
(fn cairo-the-map [self g]
|
||||||
(: (self:get_window) :invalidate_rect nil)
|
|
||||||
(let [{ : lat : lon : zoom } app-state
|
(let [{ : lat : lon : zoom } app-state
|
||||||
num-tiles-x (+ 0 (math.ceil (/ map-width tile-size)))
|
num-tiles-x (+ 0 (math.ceil (/ map-width tile-size)))
|
||||||
num-tiles-y (+ 0 (math.ceil (/ map-height tile-size)))
|
num-tiles-y (+ 0 (math.ceil (/ map-height tile-size)))
|
||||||
; _ (print app-state.lat app-state.lon)
|
|
||||||
(tile-x tile-y) (tiles.latlon->tile app-state.lat app-state.lon app-state.zoom)
|
(tile-x tile-y) (tiles.latlon->tile app-state.lat app-state.lon app-state.zoom)
|
||||||
min-tile-x (math.floor (- tile-x (/ num-tiles-x 2)))
|
min-tile-x (math.floor (- tile-x (/ num-tiles-x 2)))
|
||||||
max-tile-x (math.ceil (+ tile-x (/ num-tiles-x 2)))
|
max-tile-x (math.ceil (+ tile-x (/ num-tiles-x 2)))
|
||||||
@ -115,12 +113,17 @@ label.readout {
|
|||||||
(g:stroke)
|
(g:stroke)
|
||||||
true))
|
true))
|
||||||
|
|
||||||
|
(fn register-widget [name widget]
|
||||||
|
(tset state-widgets name widget)
|
||||||
|
widget)
|
||||||
|
|
||||||
(fn osm-widget []
|
(fn osm-widget []
|
||||||
(Gtk.DrawingArea {
|
(register-widget
|
||||||
:width map-width :height map-height
|
:osm
|
||||||
:on_draw cairo-the-map
|
(Gtk.DrawingArea {
|
||||||
}))
|
:width map-width :height map-height
|
||||||
|
:on_draw cairo-the-map
|
||||||
|
})))
|
||||||
|
|
||||||
(fn readout [name text]
|
(fn readout [name text]
|
||||||
(let [w
|
(let [w
|
||||||
@ -153,7 +156,7 @@ label.readout {
|
|||||||
(case name
|
(case name
|
||||||
:speed (widget:set_label
|
:speed (widget:set_label
|
||||||
(string.format "%.1f km/h" (* app-state.speed 3.6)))
|
(string.format "%.1f km/h" (* app-state.speed 3.6)))
|
||||||
:osm (widget:set_center app-state.lat app-state.lon)
|
:osm (: (widget:get_window) :invalidate_rect nil)
|
||||||
:time (widget:set_label
|
:time (widget:set_label
|
||||||
(hhmmss (+ utc-offset app-state.time-of-day)))
|
(hhmmss (+ utc-offset app-state.time-of-day)))
|
||||||
)))
|
)))
|
||||||
|
Loading…
Reference in New Issue
Block a user