#include "mfcpch.h"
#include "blobs.h"
#include "ccstruct.h"
#include "clst.h"
#include "cutil.h"
#include "emalloc.h"
#include "helpers.h"
#include "ndminx.h"
#include "normalis.h"
#include "ocrblock.h"
#include "ocrrow.h"
#include "points.h"
#include "polyaprx.h"
#include "structures.h"
#include "werd.h"
Go to the source code of this file.
Definition at line 537 of file blobs.cpp.
TBOX bounding_box() const
Definition at line 549 of file blobs.cpp.
564 blob_end = bbox.
right();
566 for (
TBLOB* blob = blobs->
next; blob !=
NULL; blob = blob->next) {
567 TBOX curbox = blob->bounding_box();
568 width_record->
widths[i++] = curbox.
left() - blob_end;
570 blob_end = curbox.
right();
int count_blobs(TBLOB *blobs)
TBOX bounding_box() const
| int count_blobs |
( |
TBLOB * |
blobs | ) |
|
| void divide_blobs |
( |
TBLOB * |
blob, |
|
|
TBLOB * |
other_blob, |
|
|
bool |
italic_blob, |
|
|
const TPOINT & |
location |
|
) |
| |
Definition at line 645 of file blobs.cpp.
654 int location_prod =
CROSS(location, vertical);
656 while (outline !=
NULL) {
660 int mid_prod =
CROSS(mid_pt, vertical);
661 if (mid_prod < location_prod) {
664 outline1->
next = outline;
671 outline2->
next = outline;
676 outline = outline->
next;
const TPOINT kDivisibleVerticalUpright(0, 1)
const TPOINT kDivisibleVerticalItalic(1, 5)
| bool divisible_blob |
( |
TBLOB * |
blob, |
|
|
bool |
italic_blob, |
|
|
TPOINT * |
location |
|
) |
| |
Definition at line 596 of file blobs.cpp.
603 outline1 = outline1->next) {
604 if (outline1->is_hole)
607 static_cast<inT16>((outline1->topleft.x + outline1->botright.x) / 2),
608 static_cast<inT16>((outline1->topleft.y + outline1->botright.y) / 2));
609 int mid_prod1 =
CROSS(mid_pt1, vertical);
610 int min_prod1, max_prod1;
611 outline1->MinMaxCrossProduct(vertical, &min_prod1, &max_prod1);
613 outline2 = outline2->next) {
614 if (outline2->is_hole)
617 static_cast<inT16>((outline2->topleft.x + outline2->botright.x) / 2),
618 static_cast<inT16>((outline2->topleft.y + outline2->botright.y) / 2));
619 int mid_prod2 =
CROSS(mid_pt2, vertical);
620 int min_prod2, max_prod2;
621 outline2->MinMaxCrossProduct(vertical, &min_prod2, &max_prod2);
622 int mid_gap = abs(mid_prod2 - mid_prod1);
623 int overlap =
MIN(max_prod1, max_prod2) -
MAX(min_prod1, min_prod2);
624 if (mid_gap - overlap / 4 > max_gap) {
625 max_gap = mid_gap - overlap / 4;
627 *location += mid_pt2;
634 return max_gap > vertical.
y;
const TPOINT kDivisibleVerticalUpright(0, 1)
const TPOINT kDivisibleVerticalItalic(1, 5)
| const TPOINT kDivisibleVerticalItalic(1, 5) |
| const TPOINT kDivisibleVerticalUpright(0, 1) |