База отчёта 4

This commit is contained in:
2026-03-30 19:27:49 +03:00
parent 6fc311139f
commit fd598cba94
14 changed files with 4375 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -0,0 +1,21 @@
@startuml
title Рабочий цикл приложения и пользовательского интерфейса
start
:Запуск приложения;
:Создание WindowContext,\nCanvas, RenderEngine;
repeat
:Обработка событий ввода\n(мышь, колесо, кнопки);
:Обновление состояния UI\n(панели, свойства, инструменты);
:Пересчёт видимой области\nи параметров масштаба;
if (Требуется перерисовка?) then (да)
:Вызов CPU-рендера документа;
:Обновление текстуры холста;
endif
:Показ статистики и кадра;
repeat while (Приложение активно?) is (да)
:Освобождение ресурсов;
stop
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

View File

@@ -0,0 +1,20 @@
@startuml
title ЛР4: общий рабочий цикл построения изображения
start
:Загрузка документа и параметров отображения;
:Инициализация окна, холста и рендер-движка;
repeat
:Обработка действий пользователя\n(инструменты, масштаб, свойства);
:Формирование набора процедурных фигур;
:Преобразование фигур в пиксельные области;
:Композиция пиксельных областей\nс учётом порядка и прозрачности;
:Кадрирование видимой области (viewport);
:Растеризация и вывод в текстуру;
:Отображение кадра на холсте;
repeat while (Продолжать работу?) is (да)
:Штатное завершение приложения;
stop
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

View File

@@ -0,0 +1,21 @@
@startuml
title Композиция пиксельных областей и решение видимости
start
:Получить упорядоченный набор объектов/слоёв;
:Создать целевой буфер кадра;
while (Есть следующий объект?) is (да)
:Подготовить локальный/временный буфер объекта;
:Нарисовать пиксельную область объекта;
if (Пиксель прозрачен?) then (да)
:Пропустить пиксель;
else (нет)
:Вычислить итоговый цвет по PMA\nsrc + (1-a)*dst;
:Записать пиксель в целевой буфер;
endif
endwhile (нет)
:Получить результирующее изображение;
stop
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@@ -0,0 +1,23 @@
@startuml
title Видимость процедурных фигур и кадрирование
start
:Взять отрезок/контур фигуры;
:Преобразовать координаты в систему viewport;
if (Полностью вне окна?) then (да)
:Отбросить примитив;
stop
else (нет)
:Выполнить отсечение Liang-Barsky;
if (После отсечения пусто?) then (да)
:Отбросить примитив;
stop
else (нет)
:Передать видимую часть на растеризацию;
endif
endif
:Вернуть видимые сегменты в общий конвейер;
stop
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -0,0 +1,22 @@
@startuml
title Растеризация и вывод графического содержимого
start
:Выбрать тип фигуры (линия/эллипс/ломаная);
if (Линия?) then (да)
:Отсечение + инкрементальная\nрастеризация + толщина;
elseif (Эллипс/дуга?) then (да)
:Аналитическая проверка пикселей\nв ограничивающем прямоугольнике;
else (Ломаная)
:Растеризация сегментов;
if (Замкнута и filled?) then (да)
:Поиск seed-точек;\nFlood Fill (4-связность);
endif
endif
:Композиция результата в общий буфер;
:Передача буфера в текстуру UI;
:Отображение на холсте;
stop
@enduml