これは再帰的アルゴリズムです。つまり、プロセス全体のより小さな部分を実行するためにそれ自体を呼び出します。
塗りつぶしは1ピクセルから始まります。次に、隣接する4つのピクセル(上、下、左、右)をチェックします。最初に使用したものと同じ色の4つのピクセルのいずれかについて、そのピクセルから始まる別のフラッドフィルを呼び出します。
小さな写真を想像してみてください。は1つの色で、Xは別の色です。数字は参考のためにありますので、7,0が右上です。(赤/黒の構文の強調表示は無視してください!)
01234567
0........
1.XXXX...
2.X..X...
3.X...X..
4.XXX..X.
5...X..X.
6...XXX..
7........
ここで、3,3でフラッドフィルを開始するとします。3,3が新しい色に変わります。次に、上、下、左、右をチェックします。上(3,2)の場合、同じ色(ドット)があるため、そこから別の塗りつぶしが開始されます。ダウン(3,4)の場合、色が異なるため、このブランチは停止します。左、(2,3)、右(4,3)も同じ(ドット)なので、そこからフラッドフィルの分岐が増えます。
新しい色がOであるとしましょう。これで、次のようになります。
01234567
0........
1.XXXX...
2.X.OX...
3.XOOOX..
4.XXX..X.
5...X..X.
6...XXX..
7........
「up」ブランチは、(3,2)から新しいフラッドフィルを開始しました。ここから上はXなので、止まります。右はXなので停止し、下はOで停止しますが、左(2,2)は同じ(ドット)なので、そこから新しいフラッドフィルを開始します。
同様に、元のフラッドフィルからの「右」ブランチは(4,3)から始まりました。使用できるブランチはdown(4,4)のみです。今、私たちはこれを持っています:
01234567
0........
1.XXXX...
2.XOOX...
3.XOOOX..
4.XXXO.X.
5...X..X.
6...XXX..
7........
したがって、フラッドフィルは(4,4)から右下に分岐することにより、継続します。これらの2つのブランチの1つは、(5,5)に分岐します。その時までに、それ以上の可能な分岐はありません。
そして、それは私のランチタイムでいっぱいです:)