bonjour à tous,
j'ai la fonction de lecture de bmp suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
struct ImageBMP LoadBMP(char *File)
{
	unsigned char	*Data;
	FILE			*fichier;
 
	unsigned char	Header[0x36];
	GLuint			DataPos,DataSize;
	GLsizei			Width,Height;
	struct ImageBMP Resultat ;
 
    // Lit le fichier et son header
	fichier = fopen(File,"rb");
    if (!fichier) {
       return Resultat ;
    }
	if (fread(Header,1,0x36,fichier)!=0x36) EXIT;
	if (Header[0]!='B' || Header[1]!='M')	EXIT;
	if (CTOI(Header[0x1E])!=0)				EXIT;
	if (CTOI(Header[0x1C])!=24)				EXIT;
 
    // Récupère les infos du fichier
	DataPos			= CTOI(Header[0x0A]);
	DataSize		= CTOI(Header[0x22]);
    // Récupère les infos de l'image
	Width			= CTOI(Header[0x12]);
	Height			= CTOI(Header[0x16]);	
 
    // Charge l'image
	fseek(fichier,DataPos,0);
	Data = new unsigned char[DataSize];   //    ***********  c'est là
	//Data = (unsigned char*) malloc((DataSize+1)* sizeof(char));  //remplacement non fructueux
 
    if (!Data) EXIT;
 
	if (fread(Data,1,DataSize,fichier)!=DataSize) 
	{
		delete Data;  // *********** et c'est aussi là
		//free(Data);  // remplacement non fructueux
		fclose(fichier);
		return Resultat ;
	}
 
	fclose(fichier);
 
    // Inverse R et B
	unsigned char t;
	int x;
    for (x=0;x<Width*Height;x++) 
	{
		t=Data[x*3];
		Data[x*3]=Data[x*3+2];
		Data[x*3+2]=t;
	}
 
    // On prépare l'ImageBMP à renvoyer
    Resultat.imagebytes = Data ;
    Resultat.hauteur = Height ;
    Resultat.largeur = Width ;
 
	return Resultat ;
}
pour info,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
struct ImageBMP{
   unsigned char *imagebytes ;
   GLsizei hauteur,largeur;
};
j'ai déniché ce code sur internet et la compilation ne se passe pas comme il faudrait :
il me dit que "new" et "delete" n'ont pas été déclarés. jusque là, je veux bien.

ne sachant pas trop bien à quoi servent ces deux instructions, j'ai tenté de les remplacer par des instructions acceptées (du moins, qui compilent), mais je ne dois pas avoir eu les bonnes intuitions. (repérées par les **** ) car le résultat est qu'il ne me lit aucune donnée. avouez que c'est pas cool.

pourriez-vous me dire comment corriger ce code pour que la lecture se fasse correctement ?

merci