#include "findseam.h"
#include "gradechop.h"
#include "seam.h"
#include "ndminx.h"
#include "olutil.h"
#include "plotedges.h"
#include "outlines.h"
#include "freelist.h"
Defines | |
#define | SPLIT_CLOSENESS 20 |
#define | MAX_NUM_SEAMS 150 |
#define | MAX_OLD_SEAMS 150 |
#define | NO_FULL_PRIORITY -1 |
#define | BAD_PRIORITY 9999.0 |
#define | add_seam_to_queue(seams, seam, priority) |
#define | best_seam_priority(seam_queue) |
#define | create_seam_queue(seam_queue) (seam_queue = MakeHeap (MAX_NUM_SEAMS)) |
#define | create_seam_pile(seam_pile) (seam_pile = array_new (MAX_OLD_SEAMS)) |
#define | delete_seam_queue(seam_queue) |
#define | pop_next_seam(seams, seam, priority) (HeapPop (seams,&priority,&seam) == OK) \ |
#define | seam_queue_element(seam_queue, index) |
Functions | |
void | junk_worst_seam (SEAM_QUEUE seams, SEAM *new_seam, float new_priority) |
void | choose_best_seam (SEAM_QUEUE seam_queue, SEAM_PILE *seam_pile, SPLIT *split, PRIORITY priority, SEAM **seam_result, TBLOB *blob) |
void | combine_seam (SEAM_QUEUE seam_queue, SEAM_PILE seam_pile, SEAM *seam) |
inT16 | constrained_split (SPLIT *split, TBLOB *blob) |
void | delete_seam_pile (SEAM_PILE seam_pile) |
SEAM * | pick_good_seam (TBLOB *blob) |
PRIORITY | seam_priority (SEAM *seam, inT16 xmin, inT16 xmax) |
void | try_point_pairs (EDGEPT *points[MAX_NUM_POINTS], inT16 num_points, SEAM_QUEUE seam_queue, SEAM_PILE *seam_pile, SEAM **seam, TBLOB *blob) |
void | try_vertical_splits (EDGEPT *points[MAX_NUM_POINTS], inT16 num_points, SEAM_QUEUE seam_queue, SEAM_PILE *seam_pile, SEAM **seam, TBLOB *blob) |
#define add_seam_to_queue | ( | seams, | |||
seam, | |||||
priority | ) |
if (seam)\ {\ if (HeapFull(seams))\ junk_worst_seam(seams,seam,priority);\ else\ HeapPush (seams, priority, (char*) seam);\ }
#define BAD_PRIORITY 9999.0 |
#define best_seam_priority | ( | seam_queue | ) |
(HeapEmpty (seam_queue) ? \ NO_FULL_PRIORITY : \ ((SEAM*) seam_queue_element(seam_queue, 0))->priority)
#define create_seam_pile | ( | seam_pile | ) | (seam_pile = array_new (MAX_OLD_SEAMS)) |
#define create_seam_queue | ( | seam_queue | ) | (seam_queue = MakeHeap (MAX_NUM_SEAMS)) |
#define delete_seam_queue | ( | seam_queue | ) |
(FreeHeapData (seam_queue, delete_seam), \ seam_queue = NULL) \
#define MAX_NUM_SEAMS 150 |
#define MAX_OLD_SEAMS 150 |
#define NO_FULL_PRIORITY -1 |
#define pop_next_seam | ( | seams, | |||
seam, | |||||
priority | ) | (HeapPop (seams,&priority,&seam) == OK) \ |
#define seam_queue_element | ( | seam_queue, | |||
index | ) |
((index < SizeOfHeap (seam_queue)) ? \ HeapDataFor (seam_queue, index) : \ NULL) \
#define SPLIT_CLOSENESS 20 |
void choose_best_seam | ( | SEAM_QUEUE | seam_queue, | |
SEAM_PILE * | seam_pile, | |||
SPLIT * | split, | |||
PRIORITY | priority, | |||
SEAM ** | seam_result, | |||
TBLOB * | blob | |||
) |
void combine_seam | ( | SEAM_QUEUE | seam_queue, | |
SEAM_PILE | seam_pile, | |||
SEAM * | seam | |||
) |
tessedit_fix_sideways_chops ||
void delete_seam_pile | ( | SEAM_PILE | seam_pile | ) |
void junk_worst_seam | ( | SEAM_QUEUE | seams, | |
SEAM * | new_seam, | |||
float | new_priority | |||
) |
void try_point_pairs | ( | EDGEPT * | points[MAX_NUM_POINTS], | |
inT16 | num_points, | |||
SEAM_QUEUE | seam_queue, | |||
SEAM_PILE * | seam_pile, | |||
SEAM ** | seam, | |||
TBLOB * | blob | |||
) |