38 #define CENTER_GRADE_CAP 25.0
49 #define find_bounds_loop(point1,point2,x_min,x_max) \
50 x_min = point2->pos.x; \
51 x_max = point2->pos.x; \
53 this_point = point1; \
55 x_min = MIN (this_point->pos.x, x_min); \
56 x_max = MAX (this_point->pos.x, x_max); \
57 this_point = this_point->next; \
59 while (this_point != point2 && this_point != point1) \
79 if (xmin <
MIN (rect[0], rect[2]) && xmax >
MAX (rect[1], rect[3]))
98 grade = (rect[1] - rect[0]) - (rect[3] - rect[2]);
104 return (
MAX (0.0, grade));
117 register inT16 width1;
118 register inT16 width2;
119 register inT16 overlap;
121 width1 = rect[3] - rect[2];
122 width2 = rect[1] - rect[0];
124 overlap =
MIN (rect[1], rect[3]) -
MAX (rect[0], rect[2]);
125 width1 =
MIN (width1, width2);
126 if (overlap == width1)
129 width1 = 2 * overlap - width1;
130 overlap +=
MAX (0, width1);
134 return (
MAX (0.0, grade));
147 register float split_length;
152 if (split_length <= 0)
157 return (
MAX (0.0, grade));
193 register inT32 width1;
194 register inT32 width2;
196 width1 = rect[3] - rect[2];
197 width2 = rect[1] - rect[0];
199 grade = 20 - (
MAX (rect[1], rect[3])
200 -
MIN (rect[0], rect[2]) -
MAX (width1, width2));
204 return (
MAX (0.0, grade));
216 register EDGEPT *this_point;
217 register inT16 x_min;
218 register inT16 x_max;
PRIORITY full_split_priority(SPLIT *split, inT16 xmin, inT16 xmax)
PRIORITY grade_center_of_blob(register BOUNDS_RECT rect)
PRIORITY grade_overlap(register BOUNDS_RECT rect)
#define find_bounds_loop(point1, point2, x_min, x_max)
double chop_sharpness_knob
double chop_split_dist_knob
PRIORITY grade_sharpness(register SPLIT *split)
PRIORITY grade_width_change(register BOUNDS_RECT rect)
PRIORITY point_priority(EDGEPT *point)
void set_outline_bounds(register EDGEPT *point1, register EDGEPT *point2, BOUNDS_RECT rect)
PRIORITY grade_split_length(register SPLIT *split)
double chop_width_change_knob
#define weighted_edgept_dist(p1, p2, chop_x_y_weight)