Отчёт
This commit is contained in:
BIN
Report/lab2/uml/lr2-container-serialization.png
Normal file
BIN
Report/lab2/uml/lr2-container-serialization.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 78 KiB |
42
Report/lab2/uml/lr2-container-serialization.puml
Normal file
42
Report/lab2/uml/lr2-container-serialization.puml
Normal file
@@ -0,0 +1,42 @@
|
||||
@startuml
|
||||
title ЛР2 ИВ1: структура контейнера и сериализация
|
||||
|
||||
rectangle "Файл .minint" {
|
||||
rectangle "Header" as H
|
||||
rectangle "Documents[]" as D
|
||||
}
|
||||
|
||||
rectangle "Header" {
|
||||
card "Signature: MININT"
|
||||
card "Version"
|
||||
card "Width, Height"
|
||||
card "DocumentCount"
|
||||
card "Reserved[8]"
|
||||
}
|
||||
|
||||
rectangle "Document" {
|
||||
card "Name"
|
||||
card "FrameDelayMs"
|
||||
card "PaletteCount"
|
||||
card "Palette RGBA[]"
|
||||
card "LayerCount"
|
||||
card "Layers[]"
|
||||
}
|
||||
|
||||
rectangle "Layer" {
|
||||
card "Name"
|
||||
card "IsVisible"
|
||||
card "Opacity"
|
||||
card "PixelIndices[]"
|
||||
}
|
||||
|
||||
H --> D
|
||||
D --> "Document"
|
||||
"Document" --> "Layer"
|
||||
|
||||
note bottom
|
||||
PixelIndices хранят индексы палитры.
|
||||
Ширина индекса в файле: 1..4 байта
|
||||
в зависимости от размера палитры.
|
||||
end note
|
||||
@enduml
|
||||
BIN
Report/lab2/uml/lr2-editor-workflow.png
Normal file
BIN
Report/lab2/uml/lr2-editor-workflow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
28
Report/lab2/uml/lr2-editor-workflow.puml
Normal file
28
Report/lab2/uml/lr2-editor-workflow.puml
Normal file
@@ -0,0 +1,28 @@
|
||||
@startuml
|
||||
title ЛР2 ИВ1: основной рабочий цикл растрового редактора
|
||||
|
||||
start
|
||||
:Запуск приложения;
|
||||
:Инициализация EditorViewModel и PixelCanvas;
|
||||
|
||||
repeat
|
||||
:Ожидание действий пользователя;
|
||||
if (Выбран файл контейнера?) then (да)
|
||||
:Чтение .minint через MinintSerializer;
|
||||
:Построение модели документа;
|
||||
endif
|
||||
|
||||
if (Режим редактирования?) then (да)
|
||||
:Инструмент Brush/Eraser/Fill/Select;
|
||||
:Изменение пикселей активного слоя;
|
||||
:Обновление холста (composite);
|
||||
endif
|
||||
|
||||
if (Сохранить?) then (да)
|
||||
:Запись контейнера в .minint;
|
||||
endif
|
||||
repeat while (Продолжать работу?) is (да)
|
||||
|
||||
:Штатное завершение;
|
||||
stop
|
||||
@enduml
|
||||
BIN
Report/lab2/uml/lr2-selection-copy-paste.png
Normal file
BIN
Report/lab2/uml/lr2-selection-copy-paste.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
26
Report/lab2/uml/lr2-selection-copy-paste.puml
Normal file
26
Report/lab2/uml/lr2-selection-copy-paste.puml
Normal file
@@ -0,0 +1,26 @@
|
||||
@startuml
|
||||
title ЛР2 ИВ1: выделение, копирование и вставка
|
||||
|
||||
start
|
||||
:Пользователь выбирает Select;
|
||||
:Формирование прямоугольника выделения;
|
||||
|
||||
if (Copy/Cut?) then (да)
|
||||
:Пройти выделенную область;
|
||||
:Преобразовать индексы в RGBA;
|
||||
:Сохранить ClipboardFragment;
|
||||
if (Cut?) then (да)
|
||||
:Очистить выделенную область (индекс 0);
|
||||
endif
|
||||
endif
|
||||
|
||||
if (Paste?) then (да)
|
||||
:Показать "плавающий" фрагмент;
|
||||
:Пользователь задаёт позицию;
|
||||
:CommitPaste -> запись в слой;
|
||||
:Прозрачные пиксели пропустить;
|
||||
endif
|
||||
|
||||
:Обновить холст;
|
||||
stop
|
||||
@enduml
|
||||
BIN
Report/lab2/uml/lr2-tools-and-fill.png
Normal file
BIN
Report/lab2/uml/lr2-tools-and-fill.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 83 KiB |
24
Report/lab2/uml/lr2-tools-and-fill.puml
Normal file
24
Report/lab2/uml/lr2-tools-and-fill.puml
Normal file
@@ -0,0 +1,24 @@
|
||||
@startuml
|
||||
title ЛР2 ИВ1: обработка инструментов рисования
|
||||
|
||||
start
|
||||
:Событие мыши в PixelCanvas;
|
||||
:Преобразование координат экрана -> пиксель;
|
||||
|
||||
if (Инструмент == Brush?) then (да)
|
||||
:Вычислить маску кисти (круг);
|
||||
:Записать выбранный индекс цвета;
|
||||
elseif (Инструмент == Eraser?) then (да)
|
||||
:Вычислить маску кисти (круг);
|
||||
:Записать индекс 0 (прозрачный);
|
||||
elseif (Инструмент == Fill?) then (да)
|
||||
:Запустить FloodFillService.Fill;
|
||||
:BFS по 4-связным соседям;
|
||||
:Перекрасить только область target-индекса;
|
||||
else (Select)
|
||||
:Передать управление блоку выделения;
|
||||
endif
|
||||
|
||||
:Обновить итоговый буфер и холст;
|
||||
stop
|
||||
@enduml
|
||||
Reference in New Issue
Block a user