Commit Graph

111 Commits

Author SHA1 Message Date
8637731c60 repaint map when orientation changes
this is in preparation for writing the road labels on the right way
up
2025-06-11 17:41:28 +01:00
b3f0628948 whitespace 2025-06-10 20:13:49 +01:00
d8963679d6 add compass rose 2025-06-10 20:13:41 +01:00
6c3f019ab7 only change orientation if course is > 20 degrees off
means we don't spin around quite as much, which is nice
2025-06-10 20:13:41 +01:00
eaa4ad895f calculate road label placement on fetch not on render 2025-06-10 20:13:41 +01:00
13d56d59ba remove road-width debug 2025-06-09 22:06:07 +01:00
988a30801b add with-timing macro to see why it's slow 2025-06-09 22:05:38 +01:00
4aa140c264 always use callback in tiles.fetch (formerly polylines) 2025-06-09 13:30:11 +01:00
406cedbce1 extract tile-name 2025-06-09 13:19:47 +01:00
4edf246cf6 extract bounds= function 2025-06-09 13:05:43 +01:00
d7852700a5 rename smooth-course -> orientation 2025-06-09 10:21:58 +01:00
53e377cabd widen map obunds so that rotation works
...without showing missing white bits in the corners when moving
diagonally
2025-06-08 19:10:11 +01:00
56f070ceee refresh less often 2025-06-08 18:00:56 +01:00
8ec64bb1b0 rotate the map to face direction of travel
there is a bit of smoothing so it does not instantly lurch to the
new new course, as the visual effect was quite jarring
2025-06-08 17:59:46 +01:00
8c51113d6e fix arrow to point in the right direction 2025-06-07 20:49:35 +01:00
ee286a0aef rename map-{width,height} as viewport-{width,height} 2025-06-07 12:29:28 +01:00
2d2f592d73 add pixel dimensions in bounds 2025-06-07 12:28:20 +01:00
1ee968d3a2 pass bounds to draw-onto-map-surface instead of recalculating 2025-06-07 11:50:17 +01:00
f275190538 fetch correct tile from overpass not diagonally adjacent one 2025-06-06 21:39:31 +01:00
0b22a7e538 pass lat/lon/zoom to draw-onto-map-surface
this removes dependency on global state
and will make it simpler to generate map for arbitrary co-ordinates
2025-06-06 21:33:19 +01:00
beca254bf6 rename cairo-the-map -> draw-onto-map-surface
and make it take a surface directly, not a window
2025-06-06 21:31:31 +01:00
4c2bed5ef0 rewrite map-bounds to fetch fewer off-screen tiles 2025-06-06 21:14:19 +01:00
fef52f812a add on-completion callback to tile fetcher, invalidate map-surface 2025-06-05 23:11:37 +01:00
cdd7ea3a94 add fennel-ls to shell derivation
I'm unsure whether it's actually useful or not, haven't tried it yet
2025-06-05 23:03:08 +01:00
63e592d33d first go at varying the line width based on highway classification 2025-06-05 23:02:44 +01:00
e5e1060c3f add colour/translucency to road name background
this is an experiment in making them look less like road when the
placement causes them to run off the end of the actual way
2025-06-04 00:16:58 +01:00
c53120ab2a print fewer upside down road labels 2025-06-04 00:14:43 +01:00
e728052bb6 print each road name once only 2025-06-03 22:18:05 +01:00
7195dbb2d5 make road names bigger and print white behind them 2025-06-03 22:18:05 +01:00
84a80d7c79 upgrade lgi 2025-06-03 22:18:05 +01:00
7934d5ba13 off-white background colour 2025-06-03 22:18:05 +01:00
ccb47e3a3d improve text placement 2025-06-03 22:18:05 +01:00
37767e007a render road names (badly) 2025-06-03 22:18:05 +01:00
76228bc045 parse way name as well as points 2025-06-03 22:18:05 +01:00
39f687d6f5 pass zoom level to canvas 2025-06-03 22:18:05 +01:00
f8a4788ed6 draw roads fatter and with edging 2025-06-03 22:18:05 +01:00
7c18f4442b async tile fetcher
we use cqueues, which is the async framework that lua-http is built
on. we integrate it into the glib event loop rather hackily by calling
the cqueues event stepper ever 20ms from a glib timeout function

overpass has very low rate limits so we handle a 429 response by
sleeping for a random length of time and retrying. This is, also,
a bit of a hack
2025-06-03 22:18:05 +01:00
dfbf6ac919 clobber map-surface when bounds change 2025-06-03 22:18:05 +01:00
1c065d77e4 draw map once only and copy it to screen in on_draw
This massively reduces cpu usage, however it doesn't yet work
if we've moved far enough that we'd need to fetch new tiles.
2025-06-03 22:18:05 +01:00
455c3f50c6 use register-widget more, fewer arrow widget repaints 2025-06-03 22:18:05 +01:00
0d60cc11cc invalidate map only when app-state changes 2025-06-03 22:18:05 +01:00
8357aab222 invalidate the map display each time we repaint it
really we should only need to do this when the app-state changes
2025-06-03 22:18:05 +01:00
d5e82d3427 replace in-memory cache with a persistent json cache
we just store the raw response from overpass
2025-06-03 22:18:05 +01:00
ab4e4857f3 fetch enough tiles to cover the display 2025-06-03 22:18:01 +01:00
398693bc07 hook the ui up to the overpass data 2025-05-28 18:50:12 +01:00
dc95c2252e convert lat/lon to tile x/y and back 2025-05-27 23:48:32 +01:00
1deaea2948 whitespace 2025-05-27 17:33:58 +01:00
239f897396 Merge remote-tracking branch 'origin/tninkpad' 2025-05-27 17:32:12 +01:00
ab8ca0d032 update with TODO list 2025-05-27 17:31:35 +01:00
184ba482f9 and decode 2025-05-27 13:34:09 +01:00