int main (int argc, char *argv[] ) { DonneesImageRGB *image; int i; //char nomImage[50]; char nomFichier[50]; strcpy(nomFichier, argv[1]); strcat(nomFichier,".bmp"); printf("lecture\n"); image = lisBMPRGB(nomFichier); short int **rouge=malloc(sizeof(short int)*image->largeurImage); short int **vert=malloc(sizeof(short int)*image->largeurImage); short int **bleu=malloc(sizeof(short int)*image->largeurImage); for(i=0; i<image->largeurImage; i++) { *(rouge+i)=malloc(sizeof(int short)*image->hauteurImage); *(vert+i)=malloc(sizeof(int short)*image->hauteurImage); *(bleu+i)=malloc(sizeof(int short)*image->hauteurImage); } printf("j'ai mon fichier\n"); if (image == NULL) return 0; printf("La taille de l'image est %d de hauteur par %d de largeur mdr lol xD\n Maillot on te baise \n", image->hauteurImage, image->largeurImage); // printf("%d, %d, %d\n", sizeof(rouge), sizeof(vert), sizeof(bleu)); for(i=0; i<image->largeurImage; i++) { free(rouge[i]); // free(*(vert+i)); // free(*(bleu+i)); } free(rouge); // free(vert); // free(bleu); // libereDonneesImageRGB(image); return 0; }
void gestionEvenement(EvenementGfx evenement) { static Bouton *bouton; static bool pleinEcran = false; // Pour savoir si on est en mode plein ecran ou pas static DonneesImageRGB *image = NULL; // L'image a afficher au centre de l'ecran static int numBoutonClique=-1; static DonneesImageGris *donneesImage=NULL; static DonneesImageGris *resultat=NULL; int i; switch (evenement) { case Initialisation: // On initialise toutes les données bufferSaisie = (char*) malloc(ValeurLimite*sizeof(char)); for(i = 0; i < ValeurLimite; i++) bufferSaisie[i] = '\0'; image = lisBMPRGB(nom); bouton=declarationBouton(2); demandeAnimation_ips(1); break; case Affichage: effaceFenetre (255, 255, 255); epaisseurDeTrait(3); couleurCourante(40,140,40); afficheChaine(bufferSaisie, 25, 38, 134); donneesImage=lisBMPGris(nom); resultat=lisBMPGris(nom); donneesImage=filtreMedianRelache(donneesImage); //applicationContraste(donneesImage,donneesImage); applicationLaplacien(donneesImage,resultat); //sobelDirection(donneesImage,resultat); //negatif(resultat); if(GG) resultat=texteG(resultat); if(HH) resultat=texteH(resultat); if(JJ) resultat=texteJ(resultat); //resultat=rechercheZoneDeTexte (resultat); //resultat=RLSA_I(resultat, resultat->largeurImage*0.06, false); //resultat=filtreMedianRelache(resultat); if(ecrisBMPGris_Dans(resultat,"imageGris.bmp")) { image = lisBMPRGB("imageGris.bmp"); //ecrisImage(0,30,Lplateau,Hplateau+30, image->donneesRGB); ecrisImage((largeurFenetre()-image->largeurImage)/2,(hauteurFenetre()-image->hauteurImage)/2,image->largeurImage,image->hauteurImage, image->donneesRGB); BoutonAffichage( bouton,0,25,3); BoutonAffichage( bouton,1,25,3); libereDonneesImageGris(&donneesImage); libereDonneesImageRGB(&image); break; case Clavier: if(!saisie) switch (caractereClavier()) { case 'Q': /* Pour sortir quelque peu proprement du programme */ case 'q': libereDonneesImageRGB(&image); exit(0); break; case 'G': /* Pour sortir quelque peu proprement du programme */ case 'g': GG=true; rien=false; HH=false; JJ=false; break; case 'H': /* Pour sortir quelque peu proprement du programme */ case 'h': GG=false; rien=false; HH=true; JJ=false; break; case 'J': /* Pour sortir quelque peu proprement du programme */ case 'j': GG=false; rien=false; HH=false; JJ=true; break; case 'K': /* Pour sortir quelque peu proprement du programme */ case 'k': GG=false; rien=true; HH=false; JJ=false; break; case 'P': case 'p': pleinEcran = !pleinEcran; // Changement de mode plein ecran if (pleinEcran) modePleinEcran(); else redimensionneFenetre(LargeurFenetre, HauteurFenetre); break; } else { printf("ASCII %d\n", caractereClavier()); scanfgraph(caractereClavier()); rafraichisFenetre(); } break; case ClavierSpecial: printf("ASCII %d\n", toucheClavier()); break; case BoutonSouris: if (etatBoutonSouris() == GaucheAppuye) { } else if (etatBoutonSouris() == GaucheRelache) { // entreeCoordonneesSouris(clic(caseB,abscisseSouris(),ordonneeSouris(),NB_CASES),bouton); //TODO numBoutonClique=clic(bouton,abscisseSouris(),ordonneeSouris(),2); if(numBoutonClique==0){ saisie=true; } if(numBoutonClique==1){ saisie=false; if(bufferSaisie!=NULL) if(bufferSaisie[0]!='\0'){ i=0; do{ nom[i]=bufferSaisie[i]; printf("%c",nom[i]); i++; }while(bufferSaisie[i] != '\0'); nom[i]='\0'; for(i = 0; i < ValeurLimite; i++) bufferSaisie[i] = '\0'; } } } break; if (etatBoutonSouris() == DroiteAppuye) { } break; case Souris: // Si la souris est deplacee break; case Inactivite: // Quand aucun message n'est disponible break; case Redimensionnement: // La taille de la fenetre a ete modifie ou on est passe en plein ecran // Donc le systeme nous en informe break; } } }