913 {
915 return false;
916 int max_gap = 0;
920 outline1 = outline1->
next) {
921 if (outline1->is_hole) continue;
923 static_cast<int16_t>((outline1->topleft.x + outline1->botright.x) / 2),
924 static_cast<int16_t>((outline1->topleft.y + outline1->botright.y) / 2));
925 int mid_prod1 = mid_pt1.cross(vertical);
926 int min_prod1, max_prod1;
927 outline1->MinMaxCrossProduct(vertical, &min_prod1, &max_prod1);
928 for (
TESSLINE* outline2 = outline1->
next; outline2 !=
nullptr;
929 outline2 = outline2->
next) {
930 if (outline2->is_hole) continue;
931 TPOINT mid_pt2(
static_cast<int16_t
>(
932 (outline2->topleft.x + outline2->botright.x) / 2),
933 static_cast<int16_t>(
934 (outline2->topleft.y + outline2->botright.y) / 2));
935 int mid_prod2 = mid_pt2.cross(vertical);
936 int min_prod2, max_prod2;
937 outline2->MinMaxCrossProduct(vertical, &min_prod2, &max_prod2);
938 int mid_gap = abs(mid_prod2 - mid_prod1);
939 int overlap =
940 std::min(max_prod1, max_prod2) - std::max(min_prod1, min_prod2);
941 if (mid_gap - overlap / 4 > max_gap) {
942 max_gap = mid_gap - overlap / 4;
943 *location = mid_pt1;
944 *location += mid_pt2;
945 *location /= 2;
946 }
947 }
948 }
949
950
951 return max_gap > vertical.
y;
952}