23
23
24
24
# imports
25
25
try :
26
- from typing import Tuple , Union
26
+ from typing import Tuple , Union , List
27
27
except ImportError :
28
28
pass # No harm if the module isn't located
29
29
import displayio
@@ -476,6 +476,10 @@ def get_value_ratio(self, value: Union[int, float]) -> float:
476
476
def _get_value_sizes (cls , _old_ratio : float , _new_ratio : float ) -> Tuple [int , int ]:
477
477
return 0 , 0
478
478
479
+ @classmethod
480
+ def _get_max_fill_size (cls ) -> int :
481
+ return 0
482
+
479
483
def _get_ratios (
480
484
self , _old_value : Union [int , float ], _new_value : Union [int , float ]
481
485
) -> Tuple [float , float ]:
@@ -487,11 +491,13 @@ def _adjust_size_for_range_limits(
487
491
# If we have *ANY* value other than "zero" (minimum), we should
488
492
# have at least one element showing
489
493
if _new_value_size == 0 and _new_value > self .minimum :
494
+ print (f"Adjust 1 up for { _new_value } " )
490
495
_new_value_size = 1
491
496
492
497
# Conversely, if we have *ANY* value other than 100% (maximum),
493
498
# we should NOT show a full bar.
494
- if _new_value_size == self .fill_height () and _new_value < self .maximum :
499
+ if _new_value_size == self ._get_max_fill_size () and _new_value < self .maximum :
500
+ print (f"Adjust 1 down for { _new_value } " )
495
501
_new_value_size -= 1
496
502
497
503
return _new_value_size
@@ -549,32 +555,38 @@ def _render(
549
555
# Default values for increasing value
550
556
_color = 2
551
557
_incr = 1
552
- _start = max (_old_value_size + _render_offset , _render_offset )
553
- _end = max (_new_value_size , 0 ) + _render_offset
558
+ _start = max (_old_value_size , 0 )
559
+ _end = max (_new_value_size , 0 )
554
560
555
561
if _old_value_size >= _new_value_size :
556
562
# Override defaults to be decreasing
557
563
_color = 0 # Clear
558
564
_incr = - 1 # Iterate range downward
559
- _start = max (_old_value_size + _render_offset , _render_offset )
560
- _end = max (_new_value_size + _render_offset , _render_offset ) - 1
565
+ _start = max (_old_value_size , 0 ) - 1
566
+ _end = max (_new_value_size , 0 ) - 1
561
567
# If we're setting to minimum, make sure we're clearing by
562
- # starting one "bar" higher
568
+ # starting one "bar" further
563
569
if _new_value == self .minimum :
564
570
_start += 1
565
571
566
- if self ._invert_fill_direction ():
567
- _ref_pos = self .widget_height - 1
568
- _end = _ref_pos - _end # Those pesky "off-by-one" issues
569
- _start = _ref_pos - _start
570
- _incr = - 1 if _start > _end else 1
571
- _color = 0 if _old_value > _new_value else 2
572
+ # if self._invert_fill_direction():
573
+ # _ref_pos = self.widget_height - _render_offset
574
+ # self._debug("Ref pos: ", _ref_pos)
575
+ # _end = _ref_pos - _end # Those pesky "off-by-one" issues
576
+ # _start = _ref_pos - _start
577
+ # _incr = -1 if _start > _end else 1
578
+ # _color = 0 if _old_value > _new_value else 2
572
579
573
580
vert_start , vert_end , vert_incr = self ._get_vertical_fill (_start , _end , _incr )
574
581
horiz_start , horiz_end , horiz_incr = self ._get_horizontal_fill (
575
582
_start , _end , _incr
576
583
)
577
584
585
+ vert_start += _render_offset
586
+ vert_end += _render_offset
587
+ horiz_start += _render_offset
588
+ horiz_end += _render_offset
589
+
578
590
for vertical_position in range (vert_start , vert_end , vert_incr ):
579
591
for horizontal_position in range (horiz_start , horiz_end , horiz_incr ):
580
592
self ._bitmap [horizontal_position , vertical_position ] = _color
0 commit comments