Start at a point inside the figure and paint with a particular color. Filling continues until a boundary color is encountered.

Thjere are two ways to do this:
1. Four-connected fill where we propagate : left right up down
Procedure Four_Fill (x, y, fill_col, bound_col: integer);
var
curr_color: integer;
begin
curr_color := inquire_color(x, y)
if (curr_color <> bound color) and (curr_color <> fill_col) then
begin
set_pixel(x, y, fill_col)
Four_Fill (x+1, y, fill_col, bound_col);
Four_Fill (x-1, y, fill_col, bound_col);
Four_Fill (x, y+1, fill_col, bound_col);
Four_Fill( x, y-1, fill_col, bound_col);
end;
There is the following problem with four_fill:

Thisd leads to the 2. Eight-connected fill algorithm where we test all eight adjacent pixels.

So we add the calls:
eight_fill (x+1, y-1, ...........)
eight_fill (x+1, y+1, ..........)
eight_fill (x-1, y-1, ............)
eight_fill (x-1, y+1, ...........)
Note: above 4-fill and 8-fill algorithms involve heavy duty
recursion which may consume memory and time. Better algorithms
are faster, but more complex. They make use of pixel runs
(horizontal groups of pixels).
1. Fill in row with START pixel
2. Find RIGHTMOST pixel for line above first row - push on stack
3. Find RIGHTMOST pixel for line below first row - push on stack
4. Pop stack and goto 1
Repeat above until stack empty.
General Problem for boundary fill - requires a unique boundary color
Might do (for 2 overlapping polys)

but should be

Note: if draw front poly 1st will get:

Can use a unique color for boundary, e.g., use -- for boundary, then
1. draw boundary in --
2. fill polygon
3. redraw boundary in final color --
(requires extra color for temporary boundary color)
![]()
Solid Polygon menu
HyperGraph
Table of Contents.
HyperGraph Home
page.