#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__