Дерево страниц

resources/gui_and_objects/figures.py

Модуль предназначен для отображения фигур на канале.

Отображение фигур работает только для локальных каналов. Т.е. скриптом нельзя отображать каналы на удаленном сервере.

Для того, чтобы увидеть фигуры обязательно необходимо включить "отображение фигур и субтитров из скриптов" в настройках отображения вида. Подробнее в руководстве оператора: Настройка внешнего вида окна камеры

Для отображения используется метод draw(channel_guid, *figures), где:

  • channel_guid (str): Guid канала
  • *figures - Список фигур, которые необходимо отобразить на канале.

Для большинства фигур необходимо задать координаты, которые задаются в диапазоне [0, 100].
При этом [0, 0] - координаты левого верхнего угла, а [100, 100] - координаты нижнего правого угла.

Для очистки всех фигур на канале используйте метод host.figure_remove(channel_guid)

Список возможных фигур с примерами:

line(xy_1, xy_2, color="#1FC619", width=2)

  • xy_1 (List[int, int]) - Координаты начала линии
  • xy_2 (List[int, int]) - Координаты конца линии
  • color (str, optional): Цвет линии, по умолчанию #1FC619
  • width (int, optional): Ширина линии, по умолчанию 2.0
import figures

channel_guid = "uR76TlcA"  # Замените на guid Вашего канала

figures.draw(
    channel_guid,

    figures.line([0, 0], [100, 100], color="#FF0000", width=30),
    figures.line([100, 0], [0, 100], color="#FF0000", width=30),

    figures.line([0, 50], [100, 50], color="#00FF00"),
    figures.line([50, 0], [50, 100], color="#00FF00"),
)

rect(xy_1, xy_2, color="#1FC619")

  • xy_1 (List[int, int]) - Координаты верхнего левого угла
  • xy_2 (List[int, int]) -  Координаты нижнего правого угла
  • color (str, optional) - Цвет линии, по умолчанию #1FC619
import figures

channel_guid = "uR76TlcA"  # Замените на guid Вашего канала

figures.draw(
    channel_guid,

    figures.rect([16, 16], [76, 76], color="#FFEFB0"),
    figures.rect([17, 17], [77, 77], color="#E3F7AB"),
    figures.rect([18, 18], [78, 78], color="#DB97C7"),
    figures.rect([19, 19], [79, 79], color="#A199D2"),

    figures.rect([20, 20], [80, 80], color="#FFEFB0"),
    figures.rect([21, 21], [81, 81], color="#E3F7AB"),
    figures.rect([22, 22], [82, 82], color="#DB97C7"),
    figures.rect([23, 23], [83, 83], color="#A199D2"),

    figures.rect([24, 24], [84, 84], color="#FFEFB0"),
    figures.rect([25, 25], [85, 85], color="#E3F7AB"),
    figures.rect([26, 26], [86, 86], color="#DB97C7"),
    figures.rect([27, 27], [87, 87], color="#A199D2"),
)

fillrect(xy_1, xy_2, color="#1FC619")

  • xy_1 (List[int, int]) - Координаты верхнего левого угла
  • xy_2 (List[int, int]) -  Координаты нижнего правого угла
  • color (str, optional) - Цвет линии, по умолчанию #1FC619
import figures

channel_guid = "uR76TlcA"  # Замените на guid Вашего канала

figures.draw(
    channel_guid,

    figures.fillrect([00, 00], [25, 25], color="#00FF00"),
    figures.fillrect([50, 00], [75, 25], color="#00FF00"),

    figures.fillrect([25, 25], [50, 50], color="#00FF00"),
    figures.fillrect([75, 25], [100, 50], color="#00FF00"),

    figures.fillrect([0, 50], [25, 75], color="#00FF00"),
    figures.fillrect([50, 50], [75, 75], color="#00FF00"),

    figures.fillrect([25, 75], [50, 100], color="#00FF00"),
    figures.fillrect([75, 75], [100, 100], color="#00FF00"),
)

textbox(text, align="TL", fill=True, color="#1FC619")

  • text (str): Текст
  • align (str, optional): Положение текста, по умолчанию TL
    • TL - Top Left
    • TR - Top Right
    • BL - Bottom Left
    • BR - Bottm Right
  • fill (bool, optional): Заполняет фон цветом если True, по умолчанию True
  • color (str, optional): Цвет текста, по умолчанию #1FC619
import figures

channel_guid = "uR76TlcA"  # Замените на guid Вашего канала

figures.draw(
    channel_guid,

    figures.textbox("Top Left", align="TL", fill=False, color="#00FF00"),
    figures.textbox("Top Right", align="TR", fill=True, color="#FFFFFF"),
    figures.textbox("Bottom Left", align="BL", fill=True, color="#FFFFFF"),
    figures.textbox("Bottom Right", align="BR", fill=False, color="#00FF00"),
)

text_ext(xy, text, bg_color="#C5CEC4", font_color="#000000", font_size_px=12)

В Trassir версии 4.1.1120512 и ниже может не работать изменение размера текста

  • xy (List[int, int]): Координаты начала текста
  • text (str): Текст
  • bg_color (str, optional): Цвет фона
  • font_color (str, optional): Цвет текста
  • font_size_px (int, optional): Размер шрифта
import figures

channel_guid = "uR76TlcA"  # Замените на guid Вашего канала

figures.draw(
    channel_guid,

    figures.text_ext(
        [10, 10],
        "The space suit is technically ancient.",
        bg_color="#FFFFFF",
        font_color="#000000",
    ),
    figures.text_ext(
        [10, 20],
        "Planets yell on assimilation at earth!",
        bg_color="#FFFFFF",
        font_color="#000000",
    ),
    figures.text_ext(
        [10, 30],
        "Procedure, mankind, and powerdrain.",
        bg_color="#FFFFFF",
        font_color="#000000",
    ),
    figures.text_ext(
        [10, 40], "Rudely, indeed, alignment!", bg_color="#FFFFFF", font_color="#000000"
    ),
    figures.text_ext(
        [10, 50],
        "I destroy this flight, it's called chemical mystery.",
        bg_color="#FFFFFF",
        font_color="#000000",
    ),
)

polyline(*points, color="#1FC619", width=2)

  • points (List[List[int, int]]): Списоок координат точек ломанной
  • color (str, optional): Цвет линии, по умолчанию #1FC619
  • width (int, optional): Толщина линии, по умолчанию
import figures

channel_guid = "uR76TlcA"  # Замените на guid Вашего канала

snake_coordinates = [
    [13, 10], [20, 10], [20, 40], [25, 40], [25, 15],
    [40, 15], [40, 40], [45, 40], [45, 20], [60, 20],
    [60, 40], [80, 40], [90, 45], [57, 45], [57, 25],
    [49, 25], [49, 45], [37, 45], [37, 20], [28, 20],
    [28, 45], [17, 45], [17, 20], [13, 15], [13, 10],
]

figures.draw(
    channel_guid,
    figures.polyline(
        *snake_coordinates,
        color="#00FF00",
        width=10
    )
)

poly(*points, color="#1FC619", width=2, fill=False)

В отличии от ломанной линии первая и последняя точки области автоматически соединяются между собой.

  • points (List[List[int, int]]): Списоок координат точек ломанной
  • color (str, optional): Цвет линии, по умолчанию #1FC619
  • width (int, optional): Толщина линии, по умолчанию
  • fill (bool, optional): Заливает прозрачным фоном врутренюю область
import figures

channel_guid = "uR76TlcA"  # Замените на guid Вашего канала

figures.draw(
    channel_guid,
    figures.poly(
        [10, 90], [30, 10], [50, 70], [70, 10], [90, 90],
        color="#FF0000",
        width=7,
        fill=False  # True
    )
)