diff --git a/app/display/fonts/__init__.py b/app/display/fonts/__init__.py index 50890df..d57fbd7 100644 --- a/app/display/fonts/__init__.py +++ b/app/display/fonts/__init__.py @@ -2,6 +2,6 @@ from .font_3x5 import font_3x5 from .font_5x7 import font_5x7 from .font_8x8 import font_8x8 from .font_16x16 import font_16x16 -from .fonts_utils import * +from .fonts_utils import char_width -__all__ = ['font_3x5', 'font_5x7', 'font_8x8', 'font_16x16'] +__all__ = ['font_3x5', 'font_5x7', 'font_8x8', 'font_16x16', 'char_width'] diff --git a/app/display/fonts/fonts_utils.py b/app/display/fonts/fonts_utils.py index dc2bd5b..dc251da 100644 --- a/app/display/fonts/fonts_utils.py +++ b/app/display/fonts/fonts_utils.py @@ -1,5 +1,9 @@ import app.utils as utils +# FIXME: der Import klappt nicht !!! +# from app.display.neopixel_64x64 import NeoPixel_64x64 +# from ...display.neopixel_64x64 import NeoPixel_64x64 + def char_width(char_matrix) -> int: """Berechnung der Bits für die Zeichenbreite @@ -85,7 +89,7 @@ def align_font(font, debug=False): return f'#keys: {len(font)}' -def screen_text(text: str, font, screen_height: int, screen_width: int): +def screen_text(text: str, display: NeoPixel_64x64): """Text für einen Screen anpassen, Anzahl der Zeichen je Zeile begrenzen, ebenso wird die Höhe des Screen brücksichtigt @@ -102,17 +106,16 @@ def screen_text(text: str, font, screen_height: int, screen_width: int): pixs = 0 visible_text = '' for a in txt: - pixs += char_width(font[a]) + 1 - if pixs > screen_width: + pixs += char_width(display.selected_font[a]) + 1 + if pixs > display.MATRIX_WIDTH: # Zeilenende erreicht break visible_text += a return visible_text - f_height: int = font_height(font) # Ganzzahl Division - max_visible_rows = screen_height // f_height + max_visible_rows = display.MATRIX_HEIGHT // display.font_height print(f'rows_visible: {max_visible_rows}') text_left = text diff --git a/app/display/neopixel_64x64.py b/app/display/neopixel_64x64.py index 625395f..0ed2c60 100644 --- a/app/display/neopixel_64x64.py +++ b/app/display/neopixel_64x64.py @@ -1,6 +1,6 @@ -from machine import Pin, RTC -from neopixel import NeoPixel -from .fonts.fonts_utils import char_width as charwidth +from machine import Pin, RTC # type: ignore +from neopixel import NeoPixel # type: ignore +from .fonts import char_width as charwidth from .fonts.font_5x7 import font_5x7 from ..utils.colors import GRAY, RAINBOW, BLACK, WHITE, LIME @@ -104,7 +104,9 @@ class NeoPixel_64x64(NeoPixel): [ # print(xpos, ypos) self.set_pixel(xpos, ypos, GRAY) - for xpos in range(x, x + char_width) # 8 because full with of character representation + for xpos in range( + x, x + char_width + ) # 8 because full with of character representation for ypos in range(y, y + self.font_height) ] @@ -149,7 +151,9 @@ class NeoPixel_64x64(NeoPixel): self.write() - def vertical_floating_text(self, text, x, color=RAINBOW[0], float_range=3, speed=0.2, duration=10): + def vertical_floating_text( + self, text, x, color=RAINBOW[0], float_range=3, speed=0.2, duration=10 + ): """ Vertical floating text animation @@ -180,7 +184,9 @@ class NeoPixel_64x64(NeoPixel): self.write() time.sleep(0.05) - def horizontal_floating_text(self, text, y, color=RAINBOW[0], float_range=3, speed=0.2, duration=10): + def horizontal_floating_text( + self, text, y, color=RAINBOW[0], float_range=3, speed=0.2, duration=10 + ): """ Horizontal floating text animation diff --git a/app/tryout/fonts.py b/app/tryout/fonts.py index 0086ac7..e962316 100644 --- a/app/tryout/fonts.py +++ b/app/tryout/fonts.py @@ -19,7 +19,7 @@ def fonts_check(display: NeoPixel_64x64, font, pretty=False) -> None: text_left = alphanum while text_left: # Text entsprechend des Display splitten - scr_txt_dict = screen_text(text=text_left, screen_width=display.MATRIX_WIDTH, screen_height=display.MATRIX_HEIGHT, font=font) + scr_txt_dict = screen_text(text=text_left, display=display) print(f'scr_txt: {scr_txt_dict}') display.clear() diff --git a/main.py b/main.py index 7cc76ef..20351f3 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,4 @@ -# from machine import Pin, ADC # type: ignore +from machine import Pin, ADC # type: ignore from app.display.neopixel_64x64 import NeoPixel_64x64 import app.display.fonts as fonts import app.utils as utils @@ -8,6 +8,6 @@ if __name__ == '__main__': display = NeoPixel_64x64() # tryout.emojis_check(display) - # tryout.fonts_check(display, fonts.font_8x8, pretty=False) + tryout.fonts_check(display, fonts.font_8x8, pretty=False) tryout.weather_check(display, test_mode=False) utils.show_system_load()