avoid reffing g:line_to in loop

it makes a difference on the flame graph but not a noticeable one in
top
This commit is contained in:
Daniel Barlow 2025-06-11 23:11:20 +01:00
parent deedd02efd
commit 1486e5a9e0

View File

@ -150,38 +150,38 @@ label.readout {
(local cq (cqueues.new)) (local cq (cqueues.new))
(fn road-width-for [line offset] (fn road-width-for [line]
(+ (or offset 0) (case (?. line :tags :highway)
(case (?. line :tags :highway) :motorway 18
:motorway 18 :trunk 17
:trunk 17 :primary 16
:primary 16 :secondary 14
:secondary 14 :cycleway 4
:cycleway 4 :footway 4
:footway 4 other 12))
other 12)))
(fn cairo-road-path [g [[sx sy] & points] bounds width]
(g:save)
(g:set_line_width width)
(g:move_to (* tile-size (- sx bounds.min.x))
(* tile-size (- sy bounds.min.y)))
(each [_ [x y] (ipairs points)]
(let [x1 (* tile-size (- x bounds.min.x))
y1 (* tile-size (- y bounds.min.y))]
(g:line_to x1 y1)))
(g:stroke)
(g:restore))
(fn cairo-road-path [g [[sx sy] & points] bounds]
(let [min bounds.min
{ : line_to } g]
(g:move_to (* tile-size (- sx min.x))
(* tile-size (- sy min.y)))
(each [_ [x y] (ipairs points)]
(let [x1 (* tile-size (- x min.x))
y1 (* tile-size (- y min.y))]
(line_to g x1 y1)))))
(fn cairo-roads [g lines bounds] (fn cairo-roads [g lines bounds]
(let [road-width 14] (g:set_source_rgb 0 0 0)
(g:set_source_rgb 0 0 0) (each [_ line (pairs lines)]
(each [_ line (pairs lines)] (g:set_line_width (road-width-for line))
(cairo-road-path g line.points bounds (road-width-for line))) (cairo-road-path g line.points bounds )
(g:set_source_rgb 1 1 1) (g:stroke))
(each [_ line (pairs lines)] (g:set_source_rgb 1 1 1)
(cairo-road-path g line.points bounds (road-width-for line -2))))) (each [_ line (pairs lines)]
(g:set_line_width (- (road-width-for line) 2))
(cairo-road-path g line.points bounds)
(g:stroke)))
(var map-surface nil) (var map-surface nil)