#ifndef CFH_SIMILAR_IMAGE_H
#define CFH_SIMILAR_IMAGE_H
#line 8 "similar-image.c"
#define SIZE 9
#define DIRECTIONS 8
typedef
struct
point
{
double
average_grey_level;
int
d[DIRECTIONS];
}
point_t;
typedef
int
(*simage_error_channel_t) (
void
* s,
const
char
* format, ...);
typedef
struct
simage
{
unsigned
int
width;
unsigned
int
height;
unsigned
char
* data;
char
* signature;
int
signature_length;
unsigned
int
p;
point_t grid[SIZE*SIZE];
double
w10;
double
h10;
int
nmallocs;
simage_error_channel_t error_channel;
unsigned
int
valid_image : 1;
unsigned
int
grid_filled : 1;
}
simage_t;
typedef
enum
{
simage_ok,
simage_status_memory_failure,
simage_status_bounds,
simage_status_bad_image,
simage_status_bad_logic,
simage_status_free_underflow,
simage_status_memory_leak,
}
simage_status_t;
typedef
enum
{
much_darker = -2,
darker = -1,
same = 0,
lighter = 1,
much_lighter = 2,
}
comparison_t;
#line 77 "similar-image.c"
int
x_y_to_entry (
int
x,
int
y);
#line 95 "similar-image.c"
simage_status_t simage_dump (simage_t* s);
#line 107 "similar-image.c"
simage_status_t simage_init (simage_t* s, unsigned
int
width, unsigned
int
height);
#line 135 "similar-image.c"
simage_status_t simage_inc_nmallocs (simage_t* s,
void
* signature);
#line 143 "similar-image.c"
simage_status_t simage_dec_nmallocs (simage_t* s);
#line 155 "similar-image.c"
simage_status_t simage_free (simage_t* s);
#line 175 "similar-image.c"
simage_status_t simage_set_pixel (simage_t* s,
int
x,
int
y, unsigned
char
grey);
#line 185 "similar-image.c"
simage_status_t simage_fill_entry (simage_t* s,
int
i,
int
j);
#line 246 "similar-image.c"
simage_status_t simage_fill_entries (simage_t* s);
#line 265 "similar-image.c"
int
xo_yo_to_direction (
int
xo,
int
yo);
#line 279 "similar-image.c"
simage_status_t direction_to_xo_yo (
int
direction,
int
* xo,
int
* yo);
#line 309 "similar-image.c"
int
diff (
int
thisgrey,
int
thatgrey);
#line 338 "similar-image.c"
simage_status_t simage_make_point_diffs (simage_t* s,
int
x,
int
y);
#line 380 "similar-image.c"
simage_status_t entry_to_x_y (
int
entry,
int
* x_ptr,
int
* y_ptr);
#line 394 "similar-image.c"
simage_status_t simage_make_differences (simage_t* s);
#line 409 "similar-image.c"
simage_status_t simage_check_image (simage_t* s);
#line 421 "similar-image.c"
simage_status_t simage_fill_grid (simage_t* s);
#line 433 "similar-image.c"
simage_status_t simage_diff (simage_t* s1, simage_t* s2,
double
* total_diff);
#line 467 "similar-image.c"
int
inside (
int
cell,
int
direction);
#line 485 "similar-image.c"
simage_status_t simage_allocate_signature (simage_t* s,
int
size);
#line 495 "similar-image.c"
simage_status_t simage_signature (simage_t* s);
#line 526 "similar-image.c"
simage_status_t simage_fill_from_signature (simage_t* s,
char
* signature,
int
signature_length);
#endif /* CFH_SIMILAR_IMAGE_H */