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)]; }