/* * floatimg.h * ugly code from tTh */ #define FIMG_VERSION 115 /* * in memory descriptor */ typedef struct { int width; int height; int type; float fval; int count; float *R, *G, *B, *A; int reserved; } FloatImg; /* * fimg file header */ typedef struct { char magic[8]; int w, h, t; } FimgFileHead; #define FIMG_TYPE_GRAY 1 #define FIMG_TYPE_RGB 3 #define FIMG_TYPE_RGBA 4 #define FIMG_TYPE_RGBZ 99 #define FILE_TYPE_FIMG 1 #define FILE_TYPE_PNM 2 #define FILE_TYPE_PNG 3 #define FILE_TYPE_TGA 4 #define FILE_TYPE_TIFF 5 #define FILE_TYPE_FITS 6 /* lib/contrast.c */ #define CONTRAST_NONE 0 #define CONTRAST_SQRT 1 #define CONTRAST_POW2 2 #define CONTRAST_COS01 3 #define CONTRAST_COS010 4 /* * core module */ int fimg_create(FloatImg *fimg, int w, int h, int t); int fimg_destroy(FloatImg *fimg); int fimg_clone(FloatImg *fimg, FloatImg *newpic, int flags); int fimg_copy_data(FloatImg *from, FloatImg *to); int fimg_type_is_valid(int type); int fimg_print_version(int k); void fimg_print_sizeof(void); void fimg_printhead(FloatImg *h); int fimg_describe(FloatImg *head, char *txt); char *fimg_str_type(int type); int fimg_plot_rgb (FloatImg *head, int x, int y, float r, float g, float b); int fimg_get_rgb(FloatImg *head, int x, int y, float *rgb); int fimg_put_rgb(FloatImg *head, int x, int y, float *rgb); int fimg_clear(FloatImg *fimg); int fimg_add_rgb(FloatImg *head, int x, int y, float r, float g, float b); int fimg_rgb_constant(FloatImg *head, float r, float g, float b); /* --> lib/fimg-compare.c */ int fimg_images_not_compatible(FloatImg *a, FloatImg *b); int fimg_interpolate(FloatImg *s1, FloatImg *s2, FloatImg *d, float coef); /* 'operats' module */ int fimg_add_3(FloatImg *a, FloatImg *b, FloatImg *d); int fimg_add_2(FloatImg *a, FloatImg *b); /* B+=A */ int fimg_sub_3(FloatImg *a, FloatImg *b, FloatImg *d); int fimg_mul_3(FloatImg *a, FloatImg *b, FloatImg *d); int fimg_minimum(FloatImg *a, FloatImg *b, FloatImg *d); int fimg_maximum(FloatImg *a, FloatImg *b, FloatImg *d); /* funcs/filtrage.c */ typedef struct { float matrix[9]; float mult; float offset; } FimgFilter3x3; int fimg_killborders(FloatImg *img); int fimg_lissage_2x2(FloatImg *img); int fimg_filter_3x3(FloatImg *s, FloatImg *d, FimgFilter3x3 *filtr); int fimg_contour_2x2(FloatImg *psrc, FloatImg *pdst, int reverse); /* 'sfx0' module */ int fimg_killcolors_a(FloatImg *fimg, float fval); int fimg_killcolors_b(FloatImg *fimg, float fval); int fimg_colors_mixer_a(FloatImg *fimg, float fval); /* funcs/rotate.c module */ /* #coronamaison */ int fimg_rotate_90(FloatImg *src, FloatImg *dst, int notused); /* universal exporter XXX */ int fimg_export_picture(FloatImg *pic, char *fname, int flags); /* PNM files module */ int fimg_save_as_pnm(FloatImg *head, char *fname, int flags); int fimg_load_from_pnm(char *fname, FloatImg *head, int notused); double fimg_timer_set(int whot); double fimg_timer_get(int whot); /* --> lib/contrast.c */ int fimg_id_contraste(char *name); int fimg_square_root(FloatImg *s, FloatImg *d, double maxval); int fimg_power_2(FloatImg *s, FloatImg *d, double maxval); int fimg_cos_01(FloatImg *s, FloatImg *d, double maxval); int fimg_cos_010(FloatImg *s, FloatImg *d, double maxval); int fimg_mix_rgb_gray(FloatImg *img, float mix); int fimg_shift_to_zero(FloatImg *s, FloatImg *d, float coefs[6]); /* * * * experimental ! */ int fimg_classif_trial(FloatImg *src, FloatImg*dst, float fval, int notused); int fimg_qsort_rgb_a(FloatImg *psrc, FloatImg *pdst, int notused); int fimg_qsort_rgb_b(FloatImg *psrc, FloatImg *pdst, int notused); /* module funcs/geometry.c */ int fimg_equalize_compute(FloatImg *src, void *vptr, float vmax); int fimg_mk_gray_from(FloatImg *src, FloatImg*dst, int k); int fimg_desaturate(FloatImg *src, FloatImg *dst, int notused); /* module funcs/geometry.c */ int fimg_halfsize_0(FloatImg *src, FloatImg *dst, int notused); int fimg_displacement_0(FloatImg *psrc, FloatImg *pdst, int flags); /* module funcs/rampes.c */ int fimg_hdeg_a(FloatImg *img, double dcoef); int fimg_vdeg_a(FloatImg *img, double dcoef); /* FIMG files module */ int fimg_fileinfos(char *fname, int *datas); int fimg_dump_to_file(FloatImg *head, char *fname, int notused); int fimg_load_from_dump(char *fname, FloatImg *where); int fimg_create_from_dump(char *fname, FloatImg *head); int fimg_save_R_as_fits(FloatImg *src, char *outname, int flags); int fimg_save_G_as_fits(FloatImg *src, char *outname, int flags); int fimg_save_B_as_fits(FloatImg *src, char *outname, int flags); int fimg_write_as_tiff(FloatImg *src, char *fname, int flags); /* mathematics operations */ float fimg_get_maxvalue(FloatImg *head); int fimg_get_minmax_rgb(FloatImg *head, float mmvals[6]); int fimg_meanvalues(FloatImg *head, float means[4]); int fimg_to_gray(FloatImg *head); void fimg_add_cste(FloatImg *fi, float value); void fimg_mul_cste(FloatImg *fi, float value); int fimg_ajust_from_grab(FloatImg *fi, double maxima, int notused); void fimg_drand48(FloatImg *fi, float kmul); int fimg_count_negativ(FloatImg *fi); int fimg_clamp_negativ(FloatImg *fi); /* various funcs modules */ int fimg_load_from_png(char *filename, FloatImg *fimg); int fimg_create_from_png(char *filename, FloatImg *fimg); int fimg_save_as_png(FloatImg *src, char *outname, int flags); int fimg_test_pattern(FloatImg *fimg, int type, double dval); int fimg_draw_something(FloatImg *fimg); /* file is 'funcs/utils.c' */ void fimg_print_minmax(float minmax[6], char *titre); int parse_WxH(char *str, int *pw, int *ph); int parse_double(char *str, double *dptr); int format_from_extension(char *fname);