/***************************************************************************************************/
/*                                                                                                 */
/* file LOadBMp.H                                                                                  */
/*                                                                                                 */
/*  Structure pour le chargement des BMP                                                           */
/*                                                                                                 */
/***************************************************************************************************/
#ifndef _LOADBMP_H
#define _LOADBMP_H

#define FILE_TYPE_BMP 19778

typedef struct StrBmpHeader {

    int            Type     ;  /* type de fichier      */
    int            Taille   ;  /* taille du ficher     */
    int            Reserve1 ;  /* not used             */
    int            Reserve2 ;  /* not used             */
    int            Flags    ;  /* flags divers         */

} BmpHeader ;

typedef struct StrBmpInfo {

    long int        FTaille     ;   /* taille de la structure a lire    */
    long int        TailleW     ;   /* largeur du bitmap                */
    long int        TailleH     ;   /* hauteur du bitmap                */
    int             Plans       ;   /* nombre de plans                  */
    int             BitCount    ;   /* nombre de bit par pixel          */
    long int        Compression ;   /* type de compression              */
    long int        Taille      ;   /* taille de l'image                */
    long int        HResolution ;   /* pixel par metre sur horizontal   */
    long int        VResolution ;   /* pixel par metre sur la versticale*/
    long int        Couleurs    ;   /* nombre de couleur dans la palette*/
    long int        ICouleurs   ;   /* nbre de couleurs importantes     */
    int             BPL         ;   /* byte per line dans le fichier    */
} BmpInfo ;

/* bitmapcible vaut 8 ou 16 pour indiquer le format cible */
void LoadBMP ( char * filename , PtrObjBitmap Bitmap , char BitmapCible ) ;
int DistanceColor(int r1, int g1, int b1, int r2, int g2, int b2) ;
int ProjectionColor(int r, int g, int b, PtrPalette P ) ;
void ProjectionPalette ( PtrPalette D , PtrPalette S , int * Conversion ) ;
int ClipSimple (int dtaillew,int dtailleh, int*x, int*y, int*w , int *h);

int ClipBlit ( int dtaillew , int dtailleh , int staillew , int stailleh ,
                int *dposx , int *dposy , int *sposx , int *sposy , int *taillew , int *tailleh ) ;
int ClipStretch ( int dtaillew , int dtailleh , int staillew , int stailleh ,
                 int *dposx1 , int *dposy1 , int *dposx2 , int *dposy2 , 
                 int *sposx1 , int *sposy1 , int *sposx2 , int *sposy2 ) ;

/* renvoi 1/TRUE si il reste un rectangle valide a la fin */
/* 0/FALSE sinon */

#endif
