private void StrokeLineJoin(Vector2 p1, Vector2 p2, Vector2 p3, float width)
{
if ((int)width == 1)
{
return;
}
if (((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y)) <= 4f)
{
return;
}
if (_graphics.StrokeLineJoin == SVGStrokeLineJoinMethod.Round)
{
_graphics.FillCircle(p2, width / 2f);
return;
}
if ((_graphics.StrokeLineJoin == SVGStrokeLineJoinMethod.Miter) ||
(_graphics.StrokeLineJoin == SVGStrokeLineJoinMethod.Unknown))
{
Vector2 _p1 = Vector2.zero;
Vector2 _p2 = Vector2.zero;
Vector2 _p3 = Vector2.zero;
Vector2 _p4 = Vector2.zero;
_graphics.GetThickLine(p1, p2, width, ref _p1, ref _p2, ref _p3, ref _p4);
Vector2 _p5 = Vector2.zero;
Vector2 _p6 = Vector2.zero;
Vector2 _p7 = Vector2.zero;
Vector2 _p8 = Vector2.zero;
_graphics.GetThickLine(p2, p3, width, ref _p5, ref _p6, ref _p7, ref _p8);
Vector2 _cp1, _cp2;
_cp1 = _graphics.GetCrossPoint(_p1, _p3, _p5, _p7);
_cp2 = _graphics.GetCrossPoint(_p2, _p4, _p6, _p8);
//Vector2[] points = new Vector2[8];
joint_points[0] = p2;
joint_points[1] = _p3;
joint_points[2] = _cp1;
joint_points[3] = _p5;
joint_points[4] = p2;
joint_points[5] = _p6;
joint_points[6] = _cp2;
joint_points[7] = _p4;
_graphics.FillPolygon(joint_points);
return;
}
if (_graphics.StrokeLineJoin == SVGStrokeLineJoinMethod.Bevel)
{
Vector2 _p1 = Vector2.zero;
Vector2 _p2 = Vector2.zero;
Vector2 _p3 = Vector2.zero;
Vector2 _p4 = Vector2.zero;
_graphics.GetThickLine(p1, p2, width, ref _p1, ref _p2, ref _p3, ref _p4);
Vector2 _p5 = Vector2.zero;
Vector2 _p6 = Vector2.zero;
Vector2 _p7 = Vector2.zero;
Vector2 _p8 = Vector2.zero;
_graphics.GetThickLine(p2, p3, width, ref _p5, ref _p6, ref _p7, ref _p8);
joint_points_small[0] = p2;
joint_points_small[1] = _p3;
joint_points_small[2] = _p5;
joint_points_small[3] = p2;
joint_points_small[4] = _p6;
joint_points_small[5] = _p4;
_graphics.FillPolygon(joint_points_small);
return;
}
}