Tesseract  3.02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
makechop.h File Reference
#include "chop.h"
#include "olutil.h"

Go to the source code of this file.

Macros

#define is_split_outline(outline, split)
 

Functions

void apply_seam (TBLOB *blob, TBLOB *other_blob, bool italic_blob, SEAM *seam)
 
void form_two_blobs (TBLOB *blob, TBLOB *other_blob, bool italic_blob, const TPOINT &location)
 
void make_double_split (TBLOB *blob, TBLOB *other_blob, bool italic_blob, SEAM *seam)
 
void make_single_split (TESSLINE *outlines, SPLIT *split)
 
void make_split_blobs (TBLOB *blob, TBLOB *other_blob, bool italic_blob, SEAM *seam)
 
void make_triple_split (TBLOB *blob, TBLOB *other_blob, bool italic_blob, SEAM *seam)
 
void undo_seam (TBLOB *blob, TBLOB *other_blob, SEAM *seam)
 
void undo_single_split (TBLOB *blob, SPLIT *split)
 

Macro Definition Documentation

#define is_split_outline (   outline,
  split 
)
Value:
(outline->Contains(split->point1->pos) && \
outline->Contains(split->point2->pos)) \

Definition at line 44 of file makechop.h.

Function Documentation

void apply_seam ( TBLOB blob,
TBLOB other_blob,
bool  italic_blob,
SEAM seam 
)

Definition at line 52 of file makechop.cpp.

52  {
53  if (seam->split1 == NULL) {
54  divide_blobs(blob, other_blob, italic_blob, seam->location);
55  }
56  else if (seam->split2 == NULL) {
57  make_split_blobs(blob, other_blob, italic_blob, seam);
58  }
59  else if (seam->split3 == NULL) {
60  make_double_split(blob, other_blob, italic_blob, seam);
61  }
62  else {
63  make_triple_split(blob, other_blob, italic_blob, seam);
64  }
65 }
SPLIT * split2
Definition: seam.h:47
void make_triple_split(TBLOB *blob, TBLOB *other_blob, bool italic_blob, SEAM *seam)
Definition: makechop.cpp:151
#define NULL
Definition: host.h:144
SPLIT * split1
Definition: seam.h:46
void make_double_split(TBLOB *blob, TBLOB *other_blob, bool italic_blob, SEAM *seam)
Definition: makechop.cpp:93
TPOINT location
Definition: seam.h:45
SPLIT * split3
Definition: seam.h:48
void make_split_blobs(TBLOB *blob, TBLOB *other_blob, bool italic_blob, SEAM *seam)
Definition: makechop.cpp:135
void divide_blobs(TBLOB *blob, TBLOB *other_blob, bool italic_blob, const TPOINT &location)
Definition: blobs.cpp:645
void form_two_blobs ( TBLOB blob,
TBLOB other_blob,
bool  italic_blob,
const TPOINT location 
)

Definition at line 74 of file makechop.cpp.

75  {
76  setup_blob_outlines(blob);
77 
78  divide_blobs(blob, other_blob, italic_blob, location);
79 
81  eliminate_duplicate_outlines(other_blob);
82 
83  correct_blob_order(blob, other_blob);
84 }
void eliminate_duplicate_outlines(TBLOB *blob)
Definition: olutil.cpp:67
void setup_blob_outlines(TBLOB *blob)
Definition: olutil.cpp:96
void correct_blob_order(TBLOB *blob1, TBLOB *blob2)
Definition: olutil.cpp:46
void divide_blobs(TBLOB *blob, TBLOB *other_blob, bool italic_blob, const TPOINT &location)
Definition: blobs.cpp:645
void make_double_split ( TBLOB blob,
TBLOB other_blob,
bool  italic_blob,
SEAM seam 
)

Definition at line 93 of file makechop.cpp.

94  {
95  make_single_split(blob->outlines, seam->split1);
96  make_single_split(blob->outlines, seam->split2);
97  form_two_blobs(blob, other_blob, italic_blob, seam->location);
98 }
SPLIT * split2
Definition: seam.h:47
TESSLINE * outlines
Definition: blobs.h:227
void make_single_split(TESSLINE *outlines, SPLIT *split)
Definition: makechop.cpp:107
SPLIT * split1
Definition: seam.h:46
void form_two_blobs(TBLOB *blob, TBLOB *other_blob, bool italic_blob, const TPOINT &location)
Definition: makechop.cpp:74
TPOINT location
Definition: seam.h:45
void make_single_split ( TESSLINE outlines,
SPLIT split 
)

Definition at line 107 of file makechop.cpp.

107  {
108  assert (outlines != NULL);
109 
110  split_outline (split->point1, split->point2);
111 
112  while (outlines->next != NULL)
113  outlines = outlines->next;
114 
115  outlines->next = new TESSLINE;
116  outlines->next->loop = split->point1;
117  outlines->next->ComputeBoundingBox();
118 
119  outlines = outlines->next;
120 
121  outlines->next = new TESSLINE;
122  outlines->next->loop = split->point2;
123  outlines->next->ComputeBoundingBox();
124 
125  outlines->next->next = NULL;
126 }
void split_outline(EDGEPT *join_point1, EDGEPT *join_point2)
Definition: split.cpp:136
TESSLINE * next
Definition: blobs.h:171
#define NULL
Definition: host.h:144
void ComputeBoundingBox()
Definition: blobs.cpp:175
EDGEPT * point1
Definition: split.h:39
EDGEPT * point2
Definition: split.h:40
EDGEPT * loop
Definition: blobs.h:170
void make_split_blobs ( TBLOB blob,
TBLOB other_blob,
bool  italic_blob,
SEAM seam 
)

Definition at line 135 of file makechop.cpp.

136  {
137  make_single_split(blob->outlines, seam->split1);
138 
139  form_two_blobs (blob, other_blob, italic_blob, seam->location);
140 }
TESSLINE * outlines
Definition: blobs.h:227
void make_single_split(TESSLINE *outlines, SPLIT *split)
Definition: makechop.cpp:107
SPLIT * split1
Definition: seam.h:46
void form_two_blobs(TBLOB *blob, TBLOB *other_blob, bool italic_blob, const TPOINT &location)
Definition: makechop.cpp:74
TPOINT location
Definition: seam.h:45
void make_triple_split ( TBLOB blob,
TBLOB other_blob,
bool  italic_blob,
SEAM seam 
)

Definition at line 151 of file makechop.cpp.

152  {
153  make_single_split(blob->outlines, seam->split1);
154  make_single_split(blob->outlines, seam->split2);
155  make_single_split(blob->outlines, seam->split3);
156 
157  form_two_blobs(blob, other_blob, italic_blob, seam->location);
158 }
SPLIT * split2
Definition: seam.h:47
TESSLINE * outlines
Definition: blobs.h:227
void make_single_split(TESSLINE *outlines, SPLIT *split)
Definition: makechop.cpp:107
SPLIT * split1
Definition: seam.h:46
void form_two_blobs(TBLOB *blob, TBLOB *other_blob, bool italic_blob, const TPOINT &location)
Definition: makechop.cpp:74
TPOINT location
Definition: seam.h:45
SPLIT * split3
Definition: seam.h:48
void undo_seam ( TBLOB blob,
TBLOB other_blob,
SEAM seam 
)

Definition at line 168 of file makechop.cpp.

168  {
169  TESSLINE *outline;
170 
171  if (!seam)
172  return; /* Append other blob outlines */
173  if (blob->outlines == NULL) {
174  blob->outlines = other_blob->outlines;
175  other_blob->outlines = NULL;
176  }
177 
178  outline = blob->outlines;
179  while (outline->next)
180  outline = outline->next;
181  outline->next = other_blob->outlines;
182  other_blob->outlines = NULL;
183  delete other_blob;
184 
185  if (seam->split1 == NULL) {
186  }
187  else if (seam->split2 == NULL) {
188  undo_single_split (blob, seam->split1);
189  }
190  else if (seam->split3 == NULL) {
191  undo_single_split (blob, seam->split1);
192  undo_single_split (blob, seam->split2);
193  }
194  else {
195  undo_single_split (blob, seam->split3);
196  undo_single_split (blob, seam->split2);
197  undo_single_split (blob, seam->split1);
198  }
199 
200  setup_blob_outlines(blob);
202 }
SPLIT * split2
Definition: seam.h:47
TESSLINE * next
Definition: blobs.h:171
#define NULL
Definition: host.h:144
TESSLINE * outlines
Definition: blobs.h:227
void eliminate_duplicate_outlines(TBLOB *blob)
Definition: olutil.cpp:67
SPLIT * split1
Definition: seam.h:46
void setup_blob_outlines(TBLOB *blob)
Definition: olutil.cpp:96
void undo_single_split(TBLOB *blob, SPLIT *split)
Definition: makechop.cpp:211
SPLIT * split3
Definition: seam.h:48
void undo_single_split ( TBLOB blob,
SPLIT split 
)

Definition at line 211 of file makechop.cpp.

211  {
212  TESSLINE *outline1;
213  TESSLINE *outline2;
214  /* Modify edge points */
215  unsplit_outlines (split->point1, split->point2);
216 
217  outline1 = new TESSLINE;
218  outline1->next = blob->outlines;
219  blob->outlines = outline1;
220  outline1->loop = split->point1;
221 
222  outline2 = new TESSLINE;
223  outline2->next = blob->outlines;
224  blob->outlines = outline2;
225  outline2->loop = split->point2;
226 }
TESSLINE * next
Definition: blobs.h:171
TESSLINE * outlines
Definition: blobs.h:227
void unsplit_outlines(EDGEPT *p1, EDGEPT *p2)
Definition: split.cpp:158
EDGEPT * point1
Definition: split.h:39
EDGEPT * point2
Definition: split.h:40
EDGEPT * loop
Definition: blobs.h:170