Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion example/example.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
"Name2": "black",
"Name3": [255, 0, 0, 255],
"Name4": [245, 40, 145, 0.4],
"Name5": "#00FF00"
"Name5": "#00FF00",
"Name6": ""
},
"height": 800,
"width": 1920,
"font_size": 150,
"default_name_color": "",
"color_main_text": "",
"color_background": "",
"first_part": "Спокойной ночи, ",
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "scrolltext_gif"
version = "0.9.4.5"
version = "0.9.5"
description = "Module for generating gif-s with scrolling vertical text"
authors = ["Artemii <angap4@gmail.com>"]
license = "MIT"
Expand Down
30 changes: 21 additions & 9 deletions scrolltext_gif/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,12 @@ def is_valid_color(color: str |
raise TypeError("Неверное наименование цвета в кавычках")

elif isinstance(color, list):
if all((isinstance(color_element, int) and 0 <= color_element <= 255) for color_element in color[0:3]):
if all((isinstance(color_element, int) and 0 <= color_element <= max_color_val) for color_element in color[0:3]):
if len(color) == 3:
return tuple(color)

elif len(color) == 4:
if isinstance(color[3], int) and 0 <= color[3] <= 255:
if isinstance(color[3], int) and 0 <= color[3] <= max_color_val:
return tuple(color)
elif isinstance(color[3], float) and 0 <= color[3] <= 1:
color[3] = int(color[3] * max_color_val)
Expand Down Expand Up @@ -180,6 +180,17 @@ def is_valid_color(color: str |
else:
color_main_text = is_valid_color(color_main_text)

try:
default_name_color = data['default_name_color']
if default_name_color != "" and default_name_color != []:
default_name_color = is_valid_color(default_name_color)
else:
default_name_color = None
except:
default_name_color = None

# Обработка людей

# Обработка цветов людей
count_colorless = 0
"""Количество людей без цвета"""
Expand All @@ -188,25 +199,27 @@ def is_valid_color(color: str |
for human_name in data['people']:
color = data['people'][human_name]
if color == "" or color == []:
count_colorless += 1
color = None
color = is_valid_color(color)
if default_name_color is not None:
color = default_name_color
else:
count_colorless += 1
color = None
else:
color = is_valid_color(color)
name_list.append([human_name.encode("windows-1251").decode("utf-8"), color])
max_len_name = max([global_font.getlength(human[0]) for human in name_list])
"""Длина самого длинного имени"""

# Генерация палитры
rgb_values = []
"""RGB-значения для людей без указанного цвета"""
if color_background != 0:
if default_name_color is None:
color_palette = "magma"
if data['color_palette'] != "" and data['color_palette'] != []:
color_palette = data['color_palette']
rgb_values = [tuple(int(layer * 255) for layer in color) for color in
sns.color_palette(color_palette, n_colors=(count_colorless // 2 + 1 if count_colorless % 2 != 0
else count_colorless // 2) + 1)]
# TODO: Сделать возможность вводить "Стандартный цвет". Такой цвет, который будет использован для людей без цвета.
# Если такой параметр включён, не генерировать цвета.

# Создание людей
people_list: list[Person] = []
Expand All @@ -227,7 +240,6 @@ def is_valid_color(color: str |
else:
for human in name_list:
people_list.append(Person(human[0], human[1], global_font, start_pos_x, max_len_name))
# TODO: Сделать задаваемую центровку (кому достанется "выделенный начальный цвет")
# for person in people_list: print(person)
# ! DEBUG

Expand Down