@startuml
title Рабочий цикл приложения и пользовательского интерфейса

start
:Запуск приложения;
:Создание WindowContext,\nCanvas, RenderEngine;

repeat
  :Обработка событий ввода\n(мышь, колесо, кнопки);
  :Обновление состояния UI\n(панели, свойства, инструменты);
  :Пересчёт видимой области\nи параметров масштаба;
  if (Требуется перерисовка?) then (да)
    :Вызов CPU-рендера документа;
    :Обновление текстуры холста;
  endif
  :Показ статистики и кадра;
repeat while (Приложение активно?) is (да)

:Освобождение ресурсов;
stop
@enduml
