#ifndef IMAGE_TRANSFORM_BMP_H
#define IMAGE_TRANSFORM_BMP_H

#include <image.h>
#include <io.h>

#include <stdint.h>
#include <stdio.h>

#define BMP 0x4D42
#define HEADER_NORMAL_SIZE 54
#define BITS_PER_PIXEL 24

struct __attribute__((packed))
bmp_header {
    uint16_t bfType;
    uint32_t bfileSize;
    uint32_t bfReserved;
    uint32_t bOffBits;
    uint32_t biSize;
    uint32_t biWidth;
    uint32_t biHeight;
    uint16_t biPlanes;
    uint16_t biBitCount;
    uint32_t biCompression;
    uint32_t biSizeImage;
    uint32_t biXPelsPerMeter;
    uint32_t biYPelsPerMeter;
    uint32_t biClrUsed;
    uint32_t biClrImportant;
};

enum read_status from_bmp(FILE* in, struct image* img);
enum write_status to_bmp(FILE* dest, struct image* img);

#endif