17 #include "agg_line_aa_basics.h" 45 const int8u line_parameters::s_orthogonal_quadrant[8] = { 0,0,1,1,3,3,2,2 };
46 const int8u line_parameters::s_diagonal_quadrant[8] = { 0,1,2,1,0,3,2,3 };
51 void bisectrix(
const line_parameters& l1,
52 const line_parameters& l2,
55 double k = double(l2.len) / double(l1.len);
56 double tx = l2.x2 - (l2.x1 - l1.x1) * k;
57 double ty = l2.y2 - (l2.y1 - l1.y1) * k;
62 if(
double(l2.x2 - l2.x1) * double(l2.y1 - l1.y1) <
63 double(l2.y2 - l2.y1) * double(l2.x1 - l1.x1) + 100.0)
65 tx -= (tx - l2.x1) * 2.0;
66 ty -= (ty - l2.y1) * 2.0;
70 double dx = tx - l2.x1;
71 double dy = ty - l2.y1;
72 if((
int)std::sqrt(dx * dx + dy * dy) < line_subpixel_scale)
74 *x = (l2.x1 + l2.x1 + (l2.y1 - l1.y1) + (l2.y2 - l2.y1)) >> 1;
75 *y = (l2.y1 + l2.y1 - (l2.x1 - l1.x1) - (l2.x2 - l2.x1)) >> 1;