1253e6411deef1f4faf6ce1bc571ebbc4c89798a
[colorize.git] / lib / multigrid.h
1 #ifndef ___MULTIGRID_H___
2 #define ___MULTIGRID_H___
3 /* print error message b, if a is false */
4 #define ASSERT(a, b) \
5 { if (!(a)) { fprintf(stderr, "%s %s() Error in line %d: %s\n", __FILE__, __func__, __LINE__, (b)); abort(); } }
6
7 #define min(a, b) ((a < b) ? a : b)
8 #define max(a, b) ((a > b) ? a : b)
9
10 int shrink_z(darray_t *src, darray_t *dst, const darray_t *flow);
11 int shrink_flow_z(darray_t *src, darray_t *dst);
12 int shrink_xy(darray_t *src, darray_t *dst);
13 void quantize(const darray_t *array, double threshold, double gt, double le);
14 void multiply(const darray_t *array, double factor);
15 unsigned char *gen_neighbor(int w, int h, int k, const darray_t *flow, const darray_t *flow_i);
16 void weighten(const darray_t *luminance, unsigned char *neighbors);
17 int solve_mg(int nlevel, int iters, int ncycle, darray_t **values, darray_t **marks, const darray_t *init, unsigned char **nb_list, darray_t **flows, int scalexyz);
18 #endif
19