Code source du fichier src/entete-bmp.c

/*
    Fichier entete-bmp.c
    Auteur Bernard Chardonneau

    Logiciel libre diffusé dans le domaine public.


    Entête de fichier bmp pour image de 3 à 16
    couleurs et fonction pour l'initialiser.
*/


// entête bmp partiellement pré-calculée
short entete [] = {0x4D42, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 1,
                   4, 0, 0, 0, 0, 10000, 0, 10000, 0, 0, 0, 0, 0};


// initialisation de l'entête d'une image bmp 3 à 16 couleurs

void gen_entete_bmp (int largeur, int hauteur, int nb_coul)
{
    // variables locales pour des calculs
    long  szimage, taillefic;
    short deplacement, larg2, manque;


    // calcul des valeurs de certains champs de l'entête bmp

    // pixels en largeur utilisés ou non (doit être multiple de 8)
    manque = largeur % 8;

    if (manque)
        larg2 = largeur + 8 - manque;
    else
        larg2 = largeur;

    // taille de la partie image du fichier
    szimage = larg2 * hauteur / 2;

    // position du premier octet de la partie image du fichier
    deplacement = sizeof (entete) + (nb_coul * 4);


    // mise à jour des parties variables de l'entête

    // taille du fichier
    taillefic   = szimage + deplacement;
    entete [1]  = taillefic & 0xFFFF;
    entete [2]  = taillefic << 16;

    // position du début de la partie image
    entete [5]  = deplacement;

    // pixels en largeur
    entete [9]  = largeur;

    // pixels en hauteur
    entete [11] = hauteur;

    // nombre d'octets de la zone image
    entete [17] = szimage & 0xFFFF;
    entete [18] = szimage << 16;

    // nombre de couleurs
    entete [23] = nb_coul;
    entete [25] = nb_coul;
}