64 #define clone_seam(dest,source) \
66 (dest) = newseam (); \
67 (dest)->location = (source)->location; \
68 (dest)->widthp = (source)->widthp; \
69 (dest)->widthn = (source)->widthn; \
70 (dest)->priority = (source)->priority; \
71 clone_split ((dest)->split1, (source)->split1); \
72 clone_split ((dest)->split2, (source)->split2); \
73 clone_split ((dest)->split3, (source)->split3); \
76 (dest) = (SEAM*) NULL; \
87 #define exact_point(p1,p2) \
88 (! ((p1->pos.x - p2->pos.x) || (p1->pos.y - p2->pos.y)))
bool find_split_in_blob(SPLIT *split, TBLOB *blob)
void delete_seam(void *arg)
SEAMS start_seam_list(TBLOB *blobs)
void reveal_seam(SEAM *seam)
void break_pieces(TBLOB *blobs, SEAMS seams, inT16 start, inT16 end)
SEAM * join_two_seams(SEAM *seam1, SEAM *seam2)
void reveal_edge_pair(EDGEPT *pt1, EDGEPT *pt2)
int shared_split_points(SEAM *seam1, SEAM *seam2)
bool point_in_split(SPLIT *split, EDGEPT *point1, EDGEPT *point2)
void join_pieces(TBLOB *piece_blobs, SEAMS seams, inT16 start, inT16 end)
int account_splits_right(SEAM *seam, TBLOB *blob)
void hide_edge_pair(EDGEPT *pt1, EDGEPT *pt2)
void combine_seams(SEAM *dest_seam, SEAM *source_seam)
void print_seam(const char *label, SEAM *seam)
void hide_seam(SEAM *seam)
bool test_insert_seam(SEAMS seam_list, int index, TBLOB *left_blob, TBLOB *first_blob)
SEAMS add_seam(SEAMS seam_list, SEAM *seam)
void account_splits_left_helper(SEAM *seam, TBLOB *blob, TBLOB *end_blob, inT32 *depth, inT8 *width, inT8 *found_em)
SEAMS insert_seam(SEAMS seam_list, int index, SEAM *seam, TBLOB *left_blob, TBLOB *first_blob)
bool point_used_by_split(SPLIT *split, EDGEPT *point)
bool point_in_seam(SEAM *seam, SPLIT *split)
int account_splits_left(SEAM *seam, TBLOB *blob, TBLOB *end_blob)
bool point_used_by_seam(SEAM *seam, EDGEPT *point)
void print_seams(const char *label, SEAMS seams)
SEAM * new_seam(PRIORITY priority, const TPOINT &location, SPLIT *split1, SPLIT *split2, SPLIT *split3)
void free_seam_list(SEAMS seam_list)