23 #ifndef TESSERACT_CLASSIFY_SHAPETABLE_H_ 24 #define TESSERACT_CLASSIFY_SHAPETABLE_H_ 50 tprintf(
"Unichar-id=%d, rating=%g, adapted=%d, config=%d, misses=%d," 95 : shape_id(0),
rating(0.0f), raw(0.0f), font(0.0f),
96 joined(false), broken(false) {}
98 : shape_id(s),
rating(r), raw(1.0f), font(0.0f),
99 joined(false), broken(false) {}
141 : result(rating), level(level0) {}
147 return level > other.
level;
164 font_ids.push_back(font_id);
168 bool Serialize(FILE* fp)
const;
170 bool DeSerialize(
TFile* fp);
173 static int SortByUnicharId(
const void* v1,
const void* v2);
190 bool Serialize(FILE* fp)
const;
192 bool DeSerialize(
TFile* fp);
195 return destination_index_;
198 destination_index_ = index;
201 return unichars_.size();
206 return unichars_[index];
216 void AddShape(
const Shape& other);
218 bool ContainsUnicharAndFont(
int unichar_id,
int font_id)
const;
220 bool ContainsUnichar(
int unichar_id)
const;
222 bool ContainsFont(
int font_id)
const;
229 bool ContainsMultipleFontProperties(
const FontInfoTable& font_table)
const;
232 bool operator==(
const Shape& other)
const;
234 bool IsSubsetOf(
const Shape& other)
const;
238 bool IsEqualUnichars(
Shape* other);
246 bool unichars_sorted_;
249 int destination_index_;
270 bool Serialize(FILE* fp)
const;
272 bool DeSerialize(
TFile* fp);
276 return shape_table_.size();
283 int NumFonts()
const;
287 unicharset_ = &unicharset;
293 STRING DebugStr(
int shape_id)
const;
295 STRING SummaryStr()
const;
302 int AddShape(
const Shape& other);
304 void DeleteShape(
int shape_id);
307 void AddToShape(
int shape_id,
int unichar_id,
int font_id);
309 void AddShapeToShape(
int shape_id,
const Shape& other);
314 int FindShape(
int unichar_id,
int font_id)
const;
316 void GetFirstUnicharAndFont(
int shape_id,
317 int* unichar_id,
int* font_id)
const;
321 return *shape_table_[shape_id];
324 return shape_table_[shape_id];
329 int BuildFromShape(
const Shape& shape,
const ShapeTable& master_shapes);
332 bool AlreadyMerged(
int shape_id1,
int shape_id2)
const;
334 bool AnyMultipleUnichars()
const;
336 int MaxNumUnichars()
const;
339 void ForceFontMerges(
int start,
int end);
341 int MasterUnicharCount(
int shape_id)
const;
343 int MasterFontCount(
int shape_id)
const;
345 int MergedUnicharCount(
int shape_id1,
int shape_id2)
const;
347 void MergeShapes(
int shape_id1,
int shape_id2);
349 void SwapShapes(
int shape_id1,
int shape_id2);
354 void AppendMasterShapes(
const ShapeTable& other,
357 int NumMasterShapes()
const;
361 int MasterDestinationIndex(
int shape_id)
const;
364 bool SubsetUnichar(
int shape_id1,
int shape_id2)
const;
366 bool MergeSubsetUnichar(
int merge_id1,
int merge_id2,
int shape_id)
const;
368 bool EqualUnichars(
int shape_id1,
int shape_id2)
const;
369 bool MergeEqualUnichars(
int merge_id1,
int merge_id2,
int shape_id)
const;
371 bool CommonUnichars(
int shape_id1,
int shape_id2)
const;
373 bool CommonFont(
int shape_id1,
int shape_id2)
const;
382 void AddShapeToResults(
const ShapeRating& shape_rating,
389 int AddUnicharToResults(
int unichar_id,
float rating,
399 mutable int num_fonts_;
404 #endif // TESSERACT_CLASSIFY_SHAPETABLE_H_
const UNICHARSET & unicharset() const
static int SortDescendingRating(const void *t1, const void *t2)
ShapeQueueEntry(const ShapeRating &rating, int level0)
const UnicharAndFonts & operator[](int index) const
static int SortDescendingRating(const void *t1, const void *t2)
void set_unicharset(const UNICHARSET &unicharset)
GenericVector< ScoredFont > fonts
Shape * MutableShape(int shape_id)
UnicharAndFonts(int uni_id, int font_id)
const Shape & GetShape(int shape_id) const
static int FirstResultWithUnichar(const GenericVector< UnicharRating > &results, UNICHAR_ID unichar_id)
void set_destination_index(int index)
GenericHeap< ShapeQueueEntry > ShapeQueue
GenericVector< inT32 > font_ids
ShapeRating(int s, float r)
void SetUnicharId(int index, int unichar_id)
int destination_index() const
bool operator<(const ShapeQueueEntry &other) const
UnicharRating(int u, float r)