00001
00021 #ifndef CHOPPER_H
00022 #define CHOPPER_H
00023
00024
00025
00026
00027 #include "choicearr.h"
00028 #include "seam.h"
00029 #include "matrix.h"
00030 #include "stopper.h"
00031 #include "states.h"
00032 #include "cutil.h"
00033
00034
00035
00036
00037 void preserve_outline(EDGEPT *start);
00038
00039 void preserve_outline_tree(TESSLINE *srcline);
00040
00041 EDGEPT *restore_outline(EDGEPT *start);
00042
00043 void restore_outline_tree(TESSLINE *srcline);
00044
00045 SEAM *attempt_blob_chop(TWERD *word, INT32 blob_number, SEAMS seam_list);
00046
00047 int any_shared_split_points(SEAMS seam_list, SEAM *seam);
00048
00049 int check_blob(TBLOB *blob);
00050
00051 CHOICES_LIST improve_one_blob(TWERD *word,
00052 CHOICES_LIST char_choices,
00053 int fx,
00054 INT32 *blob_number,
00055 SEAMS *seam_list,
00056 DANGERR *fixpt,
00057 STATE *this_state,
00058 STATE *correct_state,
00059 INT32 pass);
00060
00061 INT16 check_seam_order(TBLOB *blob, SEAM *seam);
00062
00063 CHOICES_LIST chop_word_main(register TWERD *word,
00064 int fx,
00065 A_CHOICE *best_choice,
00066 A_CHOICE *raw_choice,
00067 BOOL8 tester,
00068 BOOL8 trainer);
00069
00070 void improve_by_chopping(register TWERD *word,
00071 CHOICES_LIST *char_choices,
00072 int fx,
00073 STATE *best_state,
00074 A_CHOICE *best_choice,
00075 A_CHOICE *raw_choice,
00076 SEAMS *seam_list,
00077 DANGERR *fixpt,
00078 STATE *chop_states,
00079 INT32 *state_count,
00080 STATE *correct_state,
00081 INT32 pass);
00082
00083 INT16 select_blob_to_split(CHOICES_LIST char_choices, float rating_ceiling);
00084
00085 SEAMS start_seam_list(TBLOB *blobs);
00086
00087 INT16 total_containment(TBLOB *blob1, TBLOB *blob2);
00088
00089 MATRIX word_associator(TBLOB *blobs,
00090 SEAMS seams,
00091 STATE *state,
00092 int fxid,
00093 A_CHOICE *best_choice,
00094 A_CHOICE *raw_choice,
00095 char *correct,
00096 DANGERR *fixpt,
00097 STATE *best_state,
00098 INT32 pass);
00099 #endif