void volume::peindre (int i, int j, int k, unsigned int couleurDepart, unsigned int couleurFin)
{
if (i<0 || i>=largeur)
return;
if (j<0 || j>=hauteur)
return;
if (k<0 || k>=nbr)
return;
if (getValeurPixel(k,i,j) == couleurDepart)
{
setValeurPixel(k,i,j,couleurFin);
for (int x=-1; x<=1; x++)
for (int y=-1; y<=1; y++)
for (int z=-1; z<=1; z++)
peindre(i+x,j+y,k+z,couleurDepart,couleurFin);
}
}
unsigned int volume::getValeurPixel (int num, int l, int h)
{
/* donnees est un char ** qui est rempli au chargement du fichier */
return getValeurPixel(donnees,num,l,h);
}
unsigned int volume::getValeurPixel (unsigned char **tab, int num, int l, int h)
{
int val = 0;
if (num<0)
num = 0;
else if (num >= nbr)
num = nbr-1;
if (l<0)
l = 0;
else if (l >= largeur)
l = largeur-1;
if (h<0)
h = 0;
else if (h >= hauteur)
h = hauteur-1;
for (int i=0; i!=nbrBytes; i++)
val = 255*val + (int)getValeurOctet(tab,num,l,h,i);
return (unsigned int)val;
}
unsigned int volume::getValeurOctet (unsigned char **tab, int num, int l, int h, int octet)
{
return (unsigned int)tab[num][(h*largeur+l)*nbrBytes+(nbrBytes-octet-1)];
}