Label
-----

    `inherited (BaseShape)`

Текст

Параметры
=========

text
    Обязательный параметр, указывающий что именно будет написано

font_name
    Название шрифта, заменяет шрифт по умолчанию.

    Этот параметр поддерживает встроенные шрифты (Tools/File to BASE64).

font_size
    Размер шрифта

text_color
    Цвет текста. Не тоже самое что параметр ``color``!

text_spacing
    Расстояние между строками для многострочного текста

zfill
    Аналог функции строки `zfill()`

lower
    Аналог функции строки `lower()`

upper
    Аналог функции строки `upper()`

title
    Аналог функции строки `title()`

truncate
    Обрезка строки на длину, не более указанной.

ltruncate
    Обрезка, аналогичная параметру `truncate`, только от начала строки.

truncate_path
    Обрезка пути. Путь разделяется по знаку слэша и остаётся только указанное количество элементов.

ltruncate_path
    Обрезка пути слева. Остаётся указанное количество последних элементов.

truncate_to_parent
    Обрезка строки чтобы она вписалась в ширину парента.

ltruncate_to_parent
    Обрезка по ширине парента с удалением текста слева.

fit_to_parent
    Вписать текст в ширину парента с переносом на новую строку.

line_splitter
    Символ для разбиение текста при переносе на новую строку. Работает только вместе с ``fit_to_parent``.

move_splitter_to_next_line
    Если ``True`` то символ разбиения переносится на новую строку, если ``False`` то остаётся на предыдущей.
    Работает только с ``fit_to_parent``.

max_lines_count
    Ограничение по количеству переносов при включенном ``fit_to_parent``. Лишние строки удаляются

lmax_lines_count
    То же что и `max_lines_count` но удалятся строки в начале текста. Работает только вместе с ``fit_to_parent``.

outline
    Обводка текста. Данный параметр можно указывать в двух вариантах

- number

    Указывая просто число (int или float) вы указываете толщину черного контура. Параметр называется ``width``.

padding
    Отступы от доступного для рендера пространства. Пишется в виде списка из 4х элементов.
    Каждый элемент обозначает свою сторону начиная с ``top`` и далее по часовой стрелке.
    То есть параметр ``[1, 2, 3, 4]`` равен ``top=1, right=2, bottom=3, left=4``

padding_top
    Указывает отступ только сверху. Имеет бОльший приоритет чем параметр ``padding``

padding_right
    Указывает отступ только справа. Имеет бОльший приоритет чем параметр ``padding``

padding_bottom
    Указывает отступ только снизу. Имеет бОльший приоритет чем параметр ``padding``

padding_left
    Указывает отступ только слева. Имеет бОльший приоритет чем параметр ``padding``


.. code-block:: json

    {"outline": 3}

- dict

    С помощью словаря можно указать еще два параметра, это цвет и жесткость.

.. code-block:: json

    {"outline": {"width": 3, "color": "red", "hardness": 1}}

backdrop
    Подложка для текста. Доступно два способа определения

- str/list

    В качестве одиночного параметра может выступать цвет в виде строки или списка из 3 или 4 чисел.

.. code-block:: json

    {"backdrop": [0, 0, 0, 100]}

- dict

    С помощью словаря можно указать дополнительный параметр смещения координат бекдропа.

.. code-block:: json

    {"backdrop": {"offset": 10, "color": "red"}}


format_date
    Форматирование даты. Позволяет вставить дату любого формата в тексте.
    Про форматирование даты можно почитать `в документации <https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes>`_.
    Дата берётся из контекста, параметр `timestamp` или текущая дата.

.. code-block:: json

    {
		"type": "label",
		"text": "Date: {:%Y/%m/%d}",
		"format_date": true
	}

Специальные символы
===================

&;
    Пустой символ. Полезно для разделения имени переменной от другого текста если между ними не нужен пробел.
    Например такая запись: ``$widthx$height`` вызовет ошибку, так как парсер будет искать переменную ``$widthx``.
    В таком случае писать нужно так: ``$width&;x&;$height``. Эта запись будет распечатана как ``800x600``

HTML
    Поддерживаются любые HTML-спец символы в формате ``&[name];``.

    Пример списка символов: https://www.whatsmyip.org/html-characters/

(`)
    Текст в фигуре label по умолчанию не воспринимается как выражение. Если вы напишете такое выражение:

    ``"text": "=int($frame/$total_frames*100)"``

    То получите в результате такой текст:

    ``int(32/200*100)``

    По умолчанию в тексте распаковываются только переменные, начинающиеся на символ **$**.
    Чтобы добавить в текст лейбла выражение его необходимо обозначить апострофом (**`**) с двух сторон.
    При этом вне этой зоны можно писать любой другой текст:

    ``"text": "Progress: `=int($frame/$total_frames*100)`%"``

    Тогда получите такой результат:

    ``Progress: 16%``

    Один лейбл может содержать несколько отдельных экспрешенов.
