@startuml
title Ломаная + заливка: 3-фазный алгоритм

start
:Input points[], closed, filled;
if (points < 2?) then (yes)
  stop
endif

:Create temporary buffer + copy context;
if (closed and filled?) then (yes)
  :Enable FillCanvas (startFill);
endif

:Draw all segments Pi->Pi+1;
if (closed?) then (yes)
  :Draw segment Pn->P0;
endif

if (fill enabled?) then (yes)
  :Phase 1:\nBorder pixels already collected in hash-set;
  :Phase 2:\nSort border keys by (y,x),\nfind row segments,\nchoose interior seeds;
  :Phase 3:\nStack flood fill (4-neighbors),\nskip border/visited,\npaint fill color;
endif

:Composite temporary buffer to target once;
stop

@enduml
