@@ -83,15 +83,17 @@ function Arc.remove(dev) end
8383--- set state of single LED on this arc device.
8484-- @tparam integer ring : ring index (1-based!)
8585-- @tparam integer x : led index (1-based!)
86- -- @tparam integer val : LED brightness in [0, 15]
87- function Arc :led (ring , x , val )
88- _norns .arc_set_led (self .dev , ring , x , val )
86+ -- @tparam integer val : LED brightness level in [0, 15]
87+ -- @tparam bool rel: relative brightness (add to existing level)
88+ function Arc :led (ring , x , val , rel )
89+ _norns .arc_set_led (self .dev , ring , x , val , rel )
8990end
9091
9192--- set state of all LEDs on this arc device.
92- -- @tparam integer val : LED brightness in [0, 15]
93- function Arc :all (val )
94- _norns .arc_all_led (self .dev , val )
93+ -- @tparam integer val : LED brightness level in [0, 15]
94+ -- @tparam bool rel: relative brightness (add to existing level)
95+ function Arc :all (val , rel )
96+ _norns .arc_all_led (self .dev , val , rel )
9597end
9698
9799--- update any dirty quads on this arc device.
106108-- @tparam number from : from angle in radians
107109-- @tparam number to : to angle in radians
108110-- @tparam integer level : LED brightness in [0, 15]
109- function Arc :segment (ring , from , to , level )
111+ -- @tparam bool rel: relative brightness (add to existing level)
112+ function Arc :segment (ring , from , to , level , rel )
110113 local tau = math.pi * 2
111114
112115 local function overlap (a , b , c , d )
@@ -137,7 +140,7 @@ function Arc:segment(ring, from, to, level)
137140
138141 local o = overlap_segments (from , to , sa , sb )
139142 m [i ] = util .round (o / sl * level )
140- self :led (ring , i , m [i ])
143+ self :led (ring , i , m [i ], rel )
141144 end
142145end
143146
0 commit comments