diff --git a/pkgs/maps/main.fnl b/pkgs/maps/main.fnl index c725ee6..2e203f6 100644 --- a/pkgs/maps/main.fnl +++ b/pkgs/maps/main.fnl @@ -339,6 +339,7 @@ label.readout { (string.format "%.1f km/h" (* app-state.speed 3.6))) :osm (: (widget:get_window) :invalidate_rect nil) :arrow (: (widget:get_window) :invalidate_rect nil) + :rose (: (widget:get_window) :invalidate_rect nil) :time (widget:set_label (hhmmss (+ utc-offset app-state.time-of-day))) )))) @@ -378,6 +379,48 @@ label.readout { true) })))) +(fn deg->rad [degrees] + (* math.pi (/ degrees 180))) + +(fn rose [] + (let [height 60] + (register-widget + :rose + (Gtk.Label { + :halign Gtk.Align.START + :valign Gtk.Align.START + :width height :height height + :on_draw + (fn [self g] + (g:save) + (g:set_line_width 1) + (g:set_source_rgb 0.4 0.0 0.1) + (g:arc (// height 2) (// height 2) 15 + 0 (* 2 math.pi)) + (g:stroke) + + (g:translate (// height 2) (// height 2)) + (g:rotate (- (deg->rad app-state.orientation.actual))) + (g:translate (// height -2) (// height -2)) + + (g:set_line_width 2) + (g:move_to (// height 2) height) + (g:line_to (// height 2) 0) + + (g:move_to 10 20) + (g:line_to (// height 2) 0) + (g:line_to (- height 10) 20) + (g:stroke) + + (g:set_source_rgb 1 1 0) + (g:move_to (// height -2) (// height -2)) + (g:text_path "N") + (g:fill) + + (g:restore) + true) + })))) + (local socket-path (or (. arg 1) "/var/run/gnss-share.sock")) @@ -434,6 +477,7 @@ label.readout { (: :add (osm-widget)) (: :add_overlay (readouts)) (: :add_overlay (arrow)) + (: :add_overlay (rose)) )) (window:show_all)