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;
171 bool DeSerialize(
bool swap, FILE* fp);
174 static int SortByUnicharId(
const void* v1,
const void* v2);
191 bool Serialize(FILE* fp)
const;
194 bool DeSerialize(
bool swap, FILE* fp);
197 return destination_index_;
200 destination_index_ = index;
203 return unichars_.size();
208 return unichars_[index];
218 void AddShape(
const Shape& other);
220 bool ContainsUnicharAndFont(
int unichar_id,
int font_id)
const;
222 bool ContainsUnichar(
int unichar_id)
const;
224 bool ContainsFont(
int font_id)
const;
231 bool ContainsMultipleFontProperties(
const FontInfoTable& font_table)
const;
234 bool operator==(
const Shape& other)
const;
236 bool IsSubsetOf(
const Shape& other)
const;
240 bool IsEqualUnichars(
Shape* other);
248 bool unichars_sorted_;
251 int destination_index_;
272 bool Serialize(FILE* fp)
const;
275 bool DeSerialize(
bool swap, FILE* fp);
279 return shape_table_.size();
286 int NumFonts()
const;
290 unicharset_ = &unicharset;
296 STRING DebugStr(
int shape_id)
const;
298 STRING SummaryStr()
const;
305 int AddShape(
const Shape& other);
307 void DeleteShape(
int shape_id);
310 void AddToShape(
int shape_id,
int unichar_id,
int font_id);
312 void AddShapeToShape(
int shape_id,
const Shape& other);
317 int FindShape(
int unichar_id,
int font_id)
const;
319 void GetFirstUnicharAndFont(
int shape_id,
320 int* unichar_id,
int* font_id)
const;
324 return *shape_table_[shape_id];
327 return shape_table_[shape_id];
332 int BuildFromShape(
const Shape& shape,
const ShapeTable& master_shapes);
335 bool AlreadyMerged(
int shape_id1,
int shape_id2)
const;
337 bool AnyMultipleUnichars()
const;
339 int MaxNumUnichars()
const;
342 void ForceFontMerges(
int start,
int end);
344 int MasterUnicharCount(
int shape_id)
const;
346 int MasterFontCount(
int shape_id)
const;
348 int MergedUnicharCount(
int shape_id1,
int shape_id2)
const;
350 void MergeShapes(
int shape_id1,
int shape_id2);
352 void SwapShapes(
int shape_id1,
int shape_id2);
357 void AppendMasterShapes(
const ShapeTable& other,
360 int NumMasterShapes()
const;
364 int MasterDestinationIndex(
int shape_id)
const;
367 bool SubsetUnichar(
int shape_id1,
int shape_id2)
const;
369 bool MergeSubsetUnichar(
int merge_id1,
int merge_id2,
int shape_id)
const;
371 bool EqualUnichars(
int shape_id1,
int shape_id2)
const;
372 bool MergeEqualUnichars(
int merge_id1,
int merge_id2,
int shape_id)
const;
374 bool CommonUnichars(
int shape_id1,
int shape_id2)
const;
376 bool CommonFont(
int shape_id1,
int shape_id2)
const;
385 void AddShapeToResults(
const ShapeRating& shape_rating,
392 int AddUnicharToResults(
int unichar_id,
float rating,
402 mutable int num_fonts_;
407 #endif // TESSERACT_CLASSIFY_SHAPETABLE_H_
Shape * MutableShape(int shape_id)
void set_destination_index(int index)
ShapeQueueEntry(const ShapeRating &rating, int level0)
void set_unicharset(const UNICHARSET &unicharset)
bool operator<(const ShapeQueueEntry &other) const
const UnicharAndFonts & operator[](int index) const
GenericVector< ScoredFont > fonts
int destination_index() const
GenericVector< inT32 > font_ids
GenericHeap< ShapeQueueEntry > ShapeQueue
static int FirstResultWithUnichar(const GenericVector< UnicharRating > &results, UNICHAR_ID unichar_id)
UnicharAndFonts(int uni_id, int font_id)
ShapeRating(int s, float r)
static int SortDescendingRating(const void *t1, const void *t2)
void SetUnicharId(int index, int unichar_id)
const UNICHARSET & unicharset() const
static int SortDescendingRating(const void *t1, const void *t2)
const Shape & GetShape(int shape_id) const
UnicharRating(int u, float r)