59 lines
1.2 KiB
Python
59 lines
1.2 KiB
Python
from .font_3x5 import font_3x5
|
|
from .font_5x7 import font_5x7
|
|
from .font_5x7_opt import font_5x7 as font_5x7_opt
|
|
from .font_8x8 import font_8x8
|
|
from .font_16x16 import font_16x16
|
|
from ..emoji.emoji_5x7 import emoji_5x7
|
|
from ..emoji.emoji_8x8 import emoji_8x8
|
|
from ..emoji.emoji_16x16 import emoji_16x16
|
|
from ...utils.utils import number_to_bitarray_msb
|
|
|
|
fonts_meta_ = {
|
|
3: {'w': 3, 'h': 5},
|
|
5: {'w': 5, 'h': 7},
|
|
8: {'w': 8, 'h': 8},
|
|
16: {'w': 16, 'h': 16},
|
|
}
|
|
|
|
|
|
def fonts_meta(font):
|
|
if font == font_3x5:
|
|
return fonts_meta_[3]
|
|
elif font == font_5x7:
|
|
return fonts_meta_[5]
|
|
elif font == font_5x7_opt:
|
|
return fonts_meta_[5]
|
|
elif font == font_8x8:
|
|
return fonts_meta_[8]
|
|
elif font == font_16x16:
|
|
return fonts_meta_[16]
|
|
elif font == emoji_5x7:
|
|
return fonts_meta_[5]
|
|
elif font == emoji_8x8:
|
|
return fonts_meta_[8]
|
|
elif font == emoji_16x16:
|
|
return fonts_meta_[16]
|
|
else:
|
|
return None
|
|
|
|
|
|
def char_width(char_matrix) -> int:
|
|
"""Berechnung der Bits für die Zeichenbreite
|
|
|
|
Args:
|
|
char_matrix (int): Zeichen als Array[int]
|
|
|
|
Returns:
|
|
int: Anzahl Bits für die Zeichenbreite
|
|
"""
|
|
max_val = max(char_matrix)
|
|
|
|
val = max_val
|
|
cw = 0
|
|
while 0xFFFFFFFF & val:
|
|
"""rechts shiften, bis alles Nullen da sind"""
|
|
val >>= 1
|
|
cw += 1
|
|
|
|
return cw
|