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

cs_idk Messages postés 16 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 29 juillet 2004 - 10 janv. 2002 à 23:39
fced42 Messages postés 31 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 3 septembre 2003 - 12 janv. 2002 à 22:51
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

fced42 Messages postés 31 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 3 septembre 2003
12 janv. 2002 à 22:42
//----------------------------------------------------------------------//
// 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
0
fced42 Messages postés 31 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 3 septembre 2003
12 janv. 2002 à 22:44
//----------------------------------------------------------------------//
// 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;
}
0
fced42 Messages postés 31 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 3 septembre 2003
12 janv. 2002 à 22:51
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).
0
Rejoignez-nous