///////////////////////////////////////////////////////////
//                                                       //
//  PC MAGAZIN - Demo Projekt                            //
//                                                       //
//  Headerfile für die BMP Routinen                      //
//                                                       //
///////////////////////////////////////////////////////////
#ifndef __BMPLOAD_H
#define __BMPLOAD_H

// Fehler die beim Laden auftreten können
#define BMP_NOERROR         1
#define BMP_ERROR_FILEOPEN -1
#define BMP_ERROR_FORMAT   -2

// Struktur für ein Bitmap im Speicher
struct bitmaptype
{
    int width;         // Breite in Pixel
    int height;        // Höhe in Pixel
    int pixelbits;     // Bits pro Pixel
    int bytesperline;  // Bytes pro Scanline
    // pointer zu den bitmap-daten
    union
    {
        unsigned char   *cBitmap;  
        short           *sBitmap;  
        long            *lBitmap;  
    };
    // pointer zu den paletten (falls vorhanden)
    union
    {
        unsigned char   *cColors;
        short           *sColors;  
        long            *lColors;
    };
};
    
    
// Lädt ein (unkomprimiertes) BMP-File
int bmp_load( char *name, bitmaptype &bitmap );

// Gibt den Speicher eine geladenen bitmaptype Struktur frei
void bmp_free( bitmaptype &bitmap );

// Konvertiert, wenn vorhanden, eine Palette in das
// aktuelle 16 Bit Farbmodell.
void bmp_make16bitpalette( bitmaptype &bitmap );

#endif

