//Enfin la derniere phase de calcul....et la plus interessante: LE DESSIN DE LA BOULE! void chaineT(Triangle ancetre,int rang){ if (rang<0) exit(EXIT_FAILURE); Triangle *retour=NULL,*passeur=NULL; long nb=nbTriangles(rang); retour=(Triangle*)malloc(nb*sizeof(Triangle)); passeur=(Triangle*)malloc(4*sizeof(Triangle)); if (retour==NULL||passeur==NULL) exit(EXIT_FAILURE); int posAv=1,posAr=1; passeur=diviser(ancetre); *retour=ancetre; rang--; if (rang>=0){ int i; for(i=1;i<=4;i++){ *(retour+i)=*(passeur+(i-posAv)); } rang--; posAv+=4; } int i; while (rang>=0){ passeur=diviser(*(retour+posAr)); for(i=posAv;(i-posAv)<=4;i++){ *(retour+i)=*(passeur+(i-posAv)); } posAr++; posAv+=4; if(powOf4(posAv)) rang--; } if (nb==1){//s'il n'ya qu'un triangle dans la pile! dTriangle(*(retour),NOIR); free(retour); } else{ int i=0; while (i!=nb-1) { dTriangle(*(retour+i),NOIR); i++; } } }
void btn_split_click(Fl_Widget *) { // si il n'as mis aucun fichier if(!*I->fichier->value()) { fn_alert("Vous devez avant tout sélectionner un fichier..."); return; } //**** commence le split if(!fl_filename_isdir(I->chemin->value())) { fn_alert("Le répertoire \"%s\" est invalide...",I->chemin->value()); return; } if(I->rassembler->value()) rassembler(); else diviser(); }