Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if corner_radius <= 0:
# No rounded corners, this is simple
ctx.move_to(*points[-1])
for point in points:
ctx.line_to(*point)
return
# Rounded corners. First, we will take each side of the
# polygon and find what the corner radius should be on
# each corner. If the side is longer than 2r (where r is
# equal to corner_radius), the radius allowed by that side
# is r; if the side is shorter, the radius is the length
# of the side / 2. For each corner, the final corner radius
# is the smaller of the radii on the two sides adjacent to
# the corner.
points = [Point(*point) for point in points]
side_vecs = [v-u for u, v in consecutive_pairs(points, circular=True)]
half_side_lengths = [side.length() / 2 for side in side_vecs]
corner_radii = [corner_radius] * len(points)
for idx in xrange(len(corner_radii)):
prev_idx = -1 if idx == 0 else idx - 1
radii = [corner_radius, half_side_lengths[prev_idx],
half_side_lengths[idx]]
corner_radii[idx] = min(radii)
# Okay, move to the last corner, adjusted by corner_radii[-1]
# towards the first corner
ctx.move_to(*(points[-1].towards(points[0], corner_radii[-1])))
# Now, for each point in points, draw a line towards the
# corner, stopping before it in a distance of corner_radii[idx],
# then draw the corner
u = points[-1]
if corner_radius <= 0:
# No rounded corners, this is simple
ctx.move_to(*points[-1])
for point in points:
ctx.line_to(*point)
return
# Rounded corners. First, we will take each side of the
# polygon and find what the corner radius should be on
# each corner. If the side is longer than 2r (where r is
# equal to corner_radius), the radius allowed by that side
# is r; if the side is shorter, the radius is the length
# of the side / 2. For each corner, the final corner radius
# is the smaller of the radii on the two sides adjacent to
# the corner.
points = [Point(*point) for point in points]
side_vecs = [v-u for u, v in consecutive_pairs(points, circular=True)]
half_side_lengths = [side.length() / 2 for side in side_vecs]
corner_radii = [corner_radius] * len(points)
for idx in xrange(len(corner_radii)):
prev_idx = -1 if idx == 0 else idx - 1
radii = [corner_radius, half_side_lengths[prev_idx],
half_side_lengths[idx]]
corner_radii[idx] = min(radii)
# Okay, move to the last corner, adjusted by corner_radii[-1]
# towards the first corner
ctx.move_to(*(points[-1].towards(points[0], corner_radii[-1])))
# Now, for each point in points, draw a line towards the
# corner, stopping before it in a distance of corner_radii[idx],
# then draw the corner
u = points[-1]
polygon = [layout[idx] for idx in hull]
if len(polygon) == 2:
# Expand the polygon (which is a flat line otherwise)
a, b = Point(*polygon[0]), Point(*polygon[1])
c = corner_radius * (a - b).normalized()
n = Point(-c[1], c[0])
polygon = [a + n, b + n, b - c, b - n, a - n, a + c]
else:
# Expand the polygon around its center of mass
center = Point(*[
sum(coords) / float(len(coords))
for coords in zip(*polygon)
])
polygon = [
Point(*point).towards(center, -corner_radius)
for point in polygon
]
# Draw the hull
context.set_source_rgba(color[0], color[1], color[2],
color[3] * 0.25)
polygon_drawer.draw_path(polygon, corner_radius=corner_radius)
context.fill_preserve()
context.set_source_rgba(*color)
context.stroke()
# Construct the iterator that we will use to draw the edges
es = graph.es
if edge_order is None:
# Default edge order
edge_coord_iter = izip(es, edge_builder)
# Get the vertex indices that constitute the convex hull
hull = [
group[i]
for i in convex_hull([layout[idx] for idx in group])
]
# Calculate the preferred rounding radius for the corners
corner_radius = 1.25 * \
max(vertex_builder[idx].size for idx in hull)
# Construct the polygon
polygon = [layout[idx] for idx in hull]
if len(polygon) == 2:
# Expand the polygon (which is a flat line otherwise)
a, b = Point(*polygon[0]), Point(*polygon[1])
c = corner_radius * (a - b).normalized()
n = Point(-c[1], c[0])
polygon = [a + n, b + n, b - c, b - n, a - n, a + c]
else:
# Expand the polygon around its center of mass
center = Point(*[
sum(coords) / float(len(coords))
for coords in zip(*polygon)
])
polygon = [
Point(*point).towards(center, -corner_radius)
for point in polygon
]
# Draw the hull
context.set_source_rgba(color[0], color[1], color[2],
# Calculate the preferred rounding radius for the corners
corner_radius = 1.25 * \
max(vertex_builder[idx].size for idx in hull)
# Construct the polygon
polygon = [layout[idx] for idx in hull]
if len(polygon) == 2:
# Expand the polygon (which is a flat line otherwise)
a, b = Point(*polygon[0]), Point(*polygon[1])
c = corner_radius * (a - b).normalized()
n = Point(-c[1], c[0])
polygon = [a + n, b + n, b - c, b - n, a - n, a + c]
else:
# Expand the polygon around its center of mass
center = Point(*[
sum(coords) / float(len(coords))
for coords in zip(*polygon)
])
polygon = [
Point(*point).towards(center, -corner_radius)
for point in polygon
]
# Draw the hull
context.set_source_rgba(color[0], color[1], color[2],
color[3] * 0.25)
polygon_drawer.draw_path(polygon, corner_radius=corner_radius)
context.fill_preserve()
context.set_source_rgba(*color)
context.stroke()
group[i]
for i in convex_hull([layout[idx] for idx in group])
]
# Calculate the preferred rounding radius for the corners
corner_radius = 1.25 * \
max(vertex_builder[idx].size for idx in hull)
# Construct the polygon
polygon = [layout[idx] for idx in hull]
if len(polygon) == 2:
# Expand the polygon (which is a flat line otherwise)
a, b = Point(*polygon[0]), Point(*polygon[1])
c = corner_radius * (a - b).normalized()
n = Point(-c[1], c[0])
polygon = [a + n, b + n, b - c, b - n, a - n, a + c]
else:
# Expand the polygon around its center of mass
center = Point(*[
sum(coords) / float(len(coords))
for coords in zip(*polygon)
])
polygon = [
Point(*point).towards(center, -corner_radius)
for point in polygon
]
# Draw the hull
context.set_source_rgba(color[0], color[1], color[2],
color[3] * 0.25)
polygon_drawer.draw_path(polygon, corner_radius=corner_radius)
group = [vertex.index for vertex in group]
if not hasattr(group, "__iter__"):
raise TypeError("group membership list must be iterable")
# Get the vertex indices that constitute the convex hull
hull = [group[i] for i in convex_hull([layout[idx] for idx in group])]
# Calculate the preferred rounding radius for the corners
corner_radius = 1.25 * max(vertex_builder[idx].size for idx in hull)
# Construct the polygon
polygon = [layout[idx] for idx in hull]
if len(polygon) == 2:
# Expand the polygon (which is a flat line otherwise)
a, b = Point(*polygon[0]), Point(*polygon[1])
c = corner_radius * (a-b).normalized()
n = Point(-c[1], c[0])
polygon = [a + n, b + n, b - c, b - n, a - n, a + c]
else:
# Expand the polygon around its center of mass
center = Point(*[sum(coords) / float(len(coords))
for coords in zip(*polygon)])
polygon = [Point(*point).towards(center, -corner_radius)
for point in polygon]
# Draw the hull
context.set_source_rgba(color[0], color[1], color[2],
color[3]*0.25)
polygon_drawer.draw_path(polygon, corner_radius=corner_radius)
context.fill_preserve()
context.set_source_rgba(*color)