rename cairo-the-map -> draw-onto-map-surface
and make it take a surface directly, not a window
This commit is contained in:
parent
4c2bed5ef0
commit
beca254bf6
@ -180,7 +180,7 @@ label.readout {
|
|||||||
|
|
||||||
(var map-surface nil)
|
(var map-surface nil)
|
||||||
|
|
||||||
(fn cairo-the-map [window]
|
(fn draw-onto-map-surface [surface]
|
||||||
(let [{ : lat : lon : zoom } app-state
|
(let [{ : lat : lon : zoom } app-state
|
||||||
{ : num-tiles-x : num-tiles-y &as bounds } (map-bounds lat lon zoom)
|
{ : num-tiles-x : num-tiles-y &as bounds } (map-bounds lat lon zoom)
|
||||||
road-width 14
|
road-width 14
|
||||||
@ -192,13 +192,8 @@ label.readout {
|
|||||||
#(set map-surface nil)
|
#(set map-surface nil)
|
||||||
))))
|
))))
|
||||||
|
|
||||||
(let [map-surface
|
(let [seen-road-names {}
|
||||||
(window:create_similar_surface
|
g (cairo.Context.create surface)]
|
||||||
cairo.Content.COLOR
|
|
||||||
(* tile-size (+ 1 num-tiles-x))
|
|
||||||
(* tile-size (+ 1 num-tiles-y)))
|
|
||||||
seen-road-names {}
|
|
||||||
g (cairo.Context.create map-surface)]
|
|
||||||
|
|
||||||
(g:set_source_rgb 0.7 0.8 0.8)
|
(g:set_source_rgb 0.7 0.8 0.8)
|
||||||
(g:rectangle 0 0 (* tile-size num-tiles-x) (* tile-size num-tiles-y))
|
(g:rectangle 0 0 (* tile-size num-tiles-x) (* tile-size num-tiles-y))
|
||||||
@ -233,18 +228,23 @@ label.readout {
|
|||||||
(g:fill)
|
(g:fill)
|
||||||
(g:restore)))))
|
(g:restore)))))
|
||||||
|
|
||||||
map-surface)))
|
surface)))
|
||||||
|
|
||||||
|
|
||||||
(fn on-osm-draw [widget g]
|
(fn on-osm-draw [widget g]
|
||||||
(when (not map-surface)
|
|
||||||
(let [window (widget:get_window)]
|
|
||||||
(set map-surface (cairo-the-map window))))
|
|
||||||
|
|
||||||
(let [(tile-x tile-y) (tiles.latlon->tile app-state.lat app-state.lon app-state.zoom)
|
(let [(tile-x tile-y) (tiles.latlon->tile app-state.lat app-state.lon app-state.zoom)
|
||||||
bounds (map-bounds-tile tile-x tile-y)
|
bounds (map-bounds-tile tile-x tile-y)
|
||||||
offset-x (- (* tile-size (- tile-x bounds.min.x)) (/ map-width 2))
|
offset-x (- (* tile-size (- tile-x bounds.min.x)) (/ map-width 2))
|
||||||
offset-y (- (* tile-size (- tile-y bounds.min.y)) (/ map-height 2))]
|
offset-y (- (* tile-size (- tile-y bounds.min.y)) (/ map-height 2))]
|
||||||
|
(when (not map-surface)
|
||||||
|
(let [window (widget:get_window)]
|
||||||
|
(set map-surface
|
||||||
|
(doto
|
||||||
|
(window:create_similar_surface
|
||||||
|
cairo.Content.COLOR
|
||||||
|
(* tile-size bounds.num-tiles-x)
|
||||||
|
(* tile-size bounds.num-tiles-y))
|
||||||
|
draw-onto-map-surface))))
|
||||||
|
|
||||||
(g:set_source_surface map-surface (- offset-x) (- offset-y))
|
(g:set_source_surface map-surface (- offset-x) (- offset-y))
|
||||||
(g:set_operator cairo.Operator.SOURCE)
|
(g:set_operator cairo.Operator.SOURCE)
|
||||||
|
Loading…
Reference in New Issue
Block a user