X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=images%2Fduplicates.h;h=ddeddd5c65f8e317ce402b15c976f15ef1792908;hb=c8c688e0b06fdacb20b28b66b9b0608dae8ca0dc;hp=dd07b763cc6c4679817b2998b9db31a521cedd65;hpb=0e5c5828c3f3e1abd14bd012827e6b467075290b;p=libucw.git diff --git a/images/duplicates.h b/images/duplicates.h index dd07b763..ddeddd5c 100644 --- a/images/duplicates.h +++ b/images/duplicates.h @@ -1,8 +1,33 @@ -#ifndef _IMAGES_DUP_CMP_H -#define _IMAGES_DUP_CMP_H +#ifndef _IMAGES_DUPLICATES_H +#define _IMAGES_DUPLICATES_H + +enum image_dup_flags { + IMAGE_DUP_TRANS_ID = 0x0001, + IMAGE_DUP_FLIP_X = 0x0002, + IMAGE_DUP_FLIP_Y = 0x0004, + IMAGE_DUP_ROT_180 = 0x0008, + IMAGE_DUP_FLIP_BACK = 0x0010, + IMAGE_DUP_ROT_CCW = 0x0020, + IMAGE_DUP_ROT_CW = 0x0040, + IMAGE_DUP_FLIP_SLASH = 0x0080, + IMAGE_DUP_TRANS_ALL = 0x00ff, + IMAGE_DUP_SCALE = 0x0100, + IMAGE_DUP_WANT_ALL = 0x0200, +}; + +struct image_dup_context { + struct image_context *ic; + uns flags; + uns ratio_threshold; + uns error_threshold; + uns qtree_limit; + u64 sum_depth; + u64 sum_pixels; + uns error; +}; struct image_dup { - struct image *image; + struct image image; byte *tab_pixels; u32 tab_cols; u32 tab_rows; @@ -10,26 +35,17 @@ struct image_dup { u32 tab_size; }; -#define IMAGE_DUP_TRANS_ID 0x01 -#define IMAGE_DUP_FLIP_X 0x02 -#define IMAGE_DUP_FLIP_Y 0x04 -#define IMAGE_DUP_ROT_180 0x08 -#define IMAGE_DUP_FLIP_BACK 0x10 -#define IMAGE_DUP_ROT_CCW 0x20 -#define IMAGE_DUP_ROT_CW 0x40 -#define IMAGE_DUP_FLIP_SLASH 0x80 -#define IMAGE_DUP_TRANS_ALL 0xff -#define IMAGE_DUP_SCALE 0x100 -#define IMAGE_DUP_WANT_ALL 0x200 - /* dup-init.c */ -uns image_dup_init(struct image_context *ctx, struct image_dup *dup, struct image *image, struct mempool *pool); -uns image_dup_estimate_size(uns cols, uns rows); +void image_dup_context_init(struct image_context *ic, struct image_dup_context *ctx); +void image_dup_context_cleanup(struct image_dup_context *ctx); + +uns image_dup_estimate_size(uns cols, uns rows, uns same_size_compare, uns qtree_limit); +uns image_dup_new(struct image_dup_context *ctx, struct image *image, void *buffer, uns same_size_compare); /* dup-cmp.c */ -uns image_dup_compare(struct image_dup *dup1, struct image_dup *dup2, uns flags); +uns image_dup_compare(struct image_dup_context *ctx, struct image_dup *dup1, struct image_dup *dup2); /* internals */