/*
Title: Flood Filling Algorithm
Author: Kasun Ranga Wijeweera
Email: krw19870829@gmail.com
Date: 20150323
*/
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include"D:/GP/header/grap.h"
double x[]={20,40,40,20};
double y[]={20,20,40,40};
int points=4;
int boundaryColor=15;
int fillColor=10;
int newColor=7;
void drawPolygon()
{
int i,j;
for(i=0;i<points;i++)
{
j=(i+1)%points;
line(x[i],y[i],x[j],y[j]);
}
}
void bfill4(int x,int y)
{
int currentColor=getpixel(x,y);
if((currentColor!=boundaryColor) && (currentColor!=fillColor))
{
putpixel(x,y,fillColor);
bfill4(x+1,y);
bfill4(x-1,y);
bfill4(x,y+1);
bfill4(x,y-1);
}
}
void bfill8(int x,int y)
{
int currentColor=getpixel(x,y);
if((currentColor!=boundaryColor) && (currentColor!=fillColor))
{
putpixel(x,y,fillColor);
bfill8(x+1,y);
bfill8(x-1,y);
bfill8(x,y+1);
bfill8(x,y-1);
bfill8(x+1,y+1);
bfill8(x-1,y+1);
bfill8(x+1,y-1);
bfill8(x-1,y-1);
}
}
void ffill4(int x,int y)
{
int currentColor=getpixel(x,y);
if(currentColor==fillColor)
{
putpixel(x,y,newColor);
ffill4(x+1,y);
ffill4(x-1,y);
ffill4(x,y+1);
ffill4(x,y-1);
}
}
void ffill8(int x,int y)
{
int currentColor=getpixel(x,y);
if(currentColor==fillColor)
{
putpixel(x,y,newColor);
ffill8(x+1,y);
ffill8(x-1,y);
ffill8(x,y+1);
ffill8(x,y-1);
ffill8(x+1,y+1);
ffill8(x-1,y+1);
ffill8(x+1,y-1);
ffill8(x-1,y-1);
}
}
void main()
{
ginit();
setcolor(15);
drawPolygon();
/*boundary filling algorithm*/
//bfill4(30,30);
bfill8(30,30);
/*flood filling algorithm*/
//ffill4(30,30);
ffill8(30,30);
getch();
gexit();
}

Flood Filling Algorithm in C