@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
