#ifndef __IMAGE_LOADER_H__
#define __IMAGE_LOADER_H__
#include "image.h"
typedef void (*image_load_callback)(void *state, double process);
/**
 * @brief Load image from any supported types
 * 
 * @param image 
 * @param callback 
 * @param state 
 * @return image_error_t 
 */
image_error_t image_loader_load(image_t *image, image_load_callback callback, void *state);
/**
 * @brief Load image from ppm format
 * 
 * @param image 
 * @param callback 
 * @param state 
 * @return image_error_t 
 */
image_error_t image_loader_load_ppm(image_t *image,
                                    image_load_callback callback, void *state);
/**
 * @brief Load image from jpeg format
 * 
 * @param image 
 * @param callback 
 * @param state 
 * @return image_error_t 
 */
image_error_t image_loader_load_jpeg(image_t *image,
                                     image_load_callback callback, void *state);
/**
 * @brief Load image from png
 * 
 * @param image 
 * @param callback 
 * @param state 
 * @return image_error_t 
 */
image_error_t image_loader_load_png(image_t *image,
                                    image_load_callback callback, void *state);
/**
 * @brief Deduce image type from magic number
 * 
 * @param image 
 * @return image_error_t 
 */
image_error_t image_deduce_type(image_t *image);
#endif // __IMAGE_LOADER_H__