#ifndef UTILS_H #define UTILS_H #include #include #include #define DEBUG #define DEBUG_PRINT(fmt, ...) \ do {if (DEBUG) fprintf(stderr, fmt, __VA_ARGS__);} while(0); typedef struct { int x; int y; } Vec2i; typedef struct { double x; double y; } Vec2d; typedef struct { uint32_t w; uint32_t h; double *buf; } Matrixd; typedef struct { uint8_t r; uint8_t g; uint8_t b; } Pixel; typedef struct { uint32_t w; uint32_t h; Pixel *buf; } Matrixp; typedef struct { uint32_t w; uint32_t h; uint8_t *buf; } Matrixu8; Matrixd matrixd_create(uint32_t w, uint32_t h); size_t matrixd_size(Matrixd *m); void matrixd_print(Matrixd *m); Matrixp matrixp_create(uint32_t w, uint32_t h); Matrixp matrixp_create_from_file(const char *filename); Matrixu8 matrixu8_create_from_file(const char *filename); void matrixu8_write_to_bmp(Matrixu8 *matrix, const char *filename); size_t matrixp_size(Matrixp* m); size_t matrixu8_size(Matrixu8* m); Matrixd gauss_filter_create(uint32_t size, double sigma); const char* cl_get_error_string(int error); #endif