DOS mode 13h! image BMP-PCX!??????

Signaler
Messages postés
16
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
29 juillet 2004
-
Messages postés
31
Date d'inscription
dimanche 30 décembre 2001
Statut
Membre
Dernière intervention
3 septembre 2003
-
On peux pas me donner un code simple !
d'une fonction afficheImage(X,Y);
sanchant que c'est en mode 13h! Que j'ai fais la fonction ecriredans la pallette et lire la pallette!!
et la fonction putpixel! Bien sur sur l'ecran reel!
Et dites pas y'en a d'autre qui vont lui repondre!
MERCI! (je suis un peu stressé je sais)! LOL

3 réponses

Messages postés
31
Date d'inscription
dimanche 30 décembre 2001
Statut
Membre
Dernière intervention
3 septembre 2003

//----------------------------------------------------------------------//
// loadbmp - Charge en memoire un fichier .BMP //
//----------------------------------------------------------------------//
int loadbmp(char *nomfich,int largeur,int hauteur,char *image)
{
unsigned char palette[256][4];
FILE *fichbmp;

if(!(fichbmp = fopen(nomfich, "rb"))) return 0;
fseek(fichbmp,54, SEEK_SET);
fread(&palette, 1024, 1, fichbmp);
for(int coul=0;coul<=255;coul++)
setpal(coul,palette[coul][2]>>2,palette[coul][1]>>2,palette[coul][0]>>2);

unsigned int offset = 64000;
for (int ligne=0;ligne<hauteur;ligne++)
{
fread (image+offset,largeur,1,fichbmp);
offset -= 320;
}
fclose (fichbmp);
return 1;
}

si t'as des questions fced42@aol.com
Messages postés
31
Date d'inscription
dimanche 30 décembre 2001
Statut
Membre
Dernière intervention
3 septembre 2003

//----------------------------------------------------------------------//
// loadpcx - Charge en memoire un fichier .PCX //
//----------------------------------------------------------------------//
int loadpcx(char *nomfich,unsigned long taille,char *image)
{
unsigned char data, nb_octets, palette[768];
unsigned long index = 0;
unsigned int indexrle;
FILE *fichpcx;

if (!(fichpcx = fopen(nomfich, "rb"))) return 0;
fseek(fichpcx, -768, SEEK_END);
fread(&palette, 768, 1, fichpcx);
for (int coul=0;coul<=255;coul++)
setpal(coul,palette[coul*3]>>2,palette[coul*3+1]>>2,palette[coul*3+2]>>2);
fseek(fichpcx, 128, SEEK_SET);

do
{
fread(&data, 1, 1, fichpcx);
if ((data & 0xC0) == 0xC0)
{
nb_octets = (data & 0x3F);
fread(&data,1,1,fichpcx);
for (indexrle=1;indexrle<=nb_octets;indexrle++) image[index++]=data;
}
else image[index++] = data;
} while(index < taille);

fclose(fichpcx);
return 1;
}
Messages postés
31
Date d'inscription
dimanche 30 décembre 2001
Statut
Membre
Dernière intervention
3 septembre 2003

une petite precision tout de meme!
//----------------------------------------------------------------------//
// setpal - Modifie la palette //
//----------------------------------------------------------------------//
void setpal(unsigned char coul,unsigned char r,unsigned char g,unsigned char b)
{
outp (0x03C8,coul);
outp (0x03C9,r);
outp (0x03C9,g);
outp (0x03C9,b);
}
ca va avec!
le parametre char * image dans les deux fonctions represente l'espace memoire ou sera stocker l'image(l'ecran par exemple).