BezierPath¶

BezierPath
(path=None, glyphSet=None)¶ Return a BezierPath object. This is a reusable object, if you want to draw the same over and over again.
# create a bezier path path = BezierPath() # move to a point path.moveTo((100, 100)) # line to a point path.lineTo((100, 200)) path.lineTo((200, 200)) # close the path path.closePath() # loop over a range of 10 for i in range(10): # set a random color with alpha value of .3 fill(random(), random(), random(), .3) # in each loop draw the path drawPath(path) # translate the canvas translate(50, 50) path.text("Hello world", font="Helvetica", fontSize=30, offset=(210, 210)) print("All Points:") print(path.points) print("On Curve Points:") print(path.onCurvePoints) print("Off Curve Points:") print(path.offCurvePoints) # print out all points from all segments in all contours for contour in path.contours: for segment in contour: for x, y in segment: print((x, y)) print(["contour is closed", "contour is open"][contour.open]) # translate the path path.translate(0, 100) # draw the path again drawPath(path) # translate the path path.translate(300, 0) path.scale(2) # draw the path again drawPath(path)

class
BezierPath
(path=None, glyphSet=None)¶ Bases:
Mock
,drawBot.context.baseContext.SVGContextPropertyMixin
,drawBot.context.baseContext.ContextPropertyMixin
A bezier path object, if you want to draw the same over and over again.

contourClass
¶ alias of
BezierContour

moveTo
(point)¶ Move to a point x, y.

lineTo
(point)¶ Line to a point x, y.

curveTo
(*points)¶ Draw a cubic bezier with an arbitrary number of control points.
The last point specified is oncurve, all others are offcurve (control) points.

qCurveTo
(*points)¶ Draw a whole string of quadratic curve segments.
The last point specified is oncurve, all others are offcurve (control) points.

closePath
()¶ Close the path.

beginPath
(identifier=None)¶ Begin using the path as a so called point pen and start a new subpath.

addPoint
(point, segmentType=None, smooth=False, name=None, identifier=None, **kwargs)¶ Use the path as a point pen and add a point to the current subpath. beginPath must have been called prior to adding points with addPoint calls.

endPath
()¶ End the current subpath. Calling this method has two distinct meanings depending on the context:
When the bezier path is used as a segment pen (using moveTo, lineTo, etc.), the current subpath will be finished as an open contour.
When the bezier path is used as a point pen (using beginPath, addPoint and endPath), the path will process all the points added with addPoint, finishing the current subpath.

addComponent
(glyphName, transformation)¶ Add a sub glyph. The ‘transformation’ argument must be a 6tuple containing an affine transformation, or a Transform object from the fontTools.misc.transform module. More precisely: it should be a sequence containing 6 numbers.
A glyphSet is required during initialization of the BezierPath object.

drawToPen
(pen)¶ Draw the bezier path into a pen

drawToPointPen
(pointPen)¶ Draw the bezier path into a point pen.

arc
(center, radius, startAngle, endAngle, clockwise)¶ Arc with center and a given radius, from startAngle to endAngle, going clockwise if clockwise is True and counter clockwise if clockwise is False.

arcTo
(point1, point2, radius)¶ Arc defined by a circle inscribed inside the angle specified by three points: the current point, point1, and point2. The arc is drawn between the two points of the circle that are tangent to the two legs of the angle.

rect
(x, y, w, h)¶ Add a rectangle at possition x, y with a size of w, h

oval
(x, y, w, h)¶ Add a oval at possition x, y with a size of w, h

line
(point1, point2)¶ Add a line between two given points.

polygon
(*points, **kwargs)¶ Draws a polygon with namount of points. Optionally a close argument can be provided to open or close the path. As default a polygon is a closed path.

text
(txt, offset=None, font='LucidaGrande', fontSize=10, align=None)¶ Draws a txt with a font and fontSize at an offset in the bezier path. If a font path is given the font will be installed and used directly.
Optionally an alignment can be set. Possible align values are: “left”, “center” and “right”.
The default alignment is left.
Optionally txt can be a FormattedString.

textBox
(txt, box, font='LucidaGrande', fontSize=10, align=None, hyphenation=None)¶ Draws a txt with a font and fontSize in a box in the bezier path. If a font path is given the font will be installed and used directly.
Optionally an alignment can be set. Possible align values are: “left”, “center” and “right”.
The default alignment is left.
Optionally hyphenation can be provided.
Optionally txt can be a FormattedString. Optionally box can be a BezierPath.

traceImage
(path, threshold=0.2, blur=None, invert=False, turd=2, tolerance=0.2, offset=None)¶ Convert a given image to a vector outline.
Optionally some tracing options can be provide:
 threshold: the threshold used to bitmap an image
 blur: the image can be blurred
 invert: invert to the image
 turd: the size of small turd that can be ignored
 tolerance: the precision tolerance of the vector outline
 offset: add the traced vector outline with an offset to the BezierPath

getNSBezierPath
()¶ Return the nsBezierPath.

setNSBezierPath
(path)¶ Set a nsBezierPath.

pointInside
(xy)¶ Check if a point x, y is inside a path.

bounds
()¶ Return the bounding box of the path.

controlPointBounds
()¶ Return the bounding box of the path including the offcurve points.

optimizePath
()¶

copy
()¶ Copy the bezier path.

reverse
()¶ Reverse the path direction

appendPath
(otherPath)¶ Append a path.

translate
(x=0, y=0)¶ Translate the path with a given offset.

rotate
(angle, center=(0, 0))¶ Rotate the path around the center point (which is the origin by default) with a given angle in degrees.

scale
(x=1, y=None, center=(0, 0))¶ Scale the path with a given x (horizontal scale) and y (vertical scale).
If only 1 argument is provided a proportional scale is applied.
The center of scaling can optionally be set via the center keyword argument. By default this is the origin.

skew
(angle1, angle2=0, center=(0, 0))¶ Skew the path with given angle1 and angle2.
If only one argument is provided a proportional skew is applied.
The center of skewing can optionally be set via the center keyword argument. By default this is the origin.

transform
(transformMatrix, center=(0, 0))¶ Transform a path with a transform matrix (xy, xx, yy, yx, x, y).

union
(other)¶ Return the union between two bezier paths.

removeOverlap
()¶ Remove all overlaps in a bezier path.

difference
(other)¶ Return the difference between two bezier paths.

intersection
(other)¶ Return the intersection between two bezier paths.

xor
(other)¶ Return the xor between two bezier paths.

intersectionPoints
(other=None)¶ Return a list of intersection points as x, y tuples.
Optionaly provide an other path object to find intersection points.

expandStroke
(width, lineCap='round', lineJoin='round', miterLimit=10)¶ Returns a new bezier path with an expanded stroke around the original path, with a given width. Note: the new path will not contain the original path.
The following optional arguments are available with respect to line caps and joins: * lineCap: Possible values are “butt”, “square” or “round” * lineJoin: Possible values are “bevel”, “miter” or “round” * miterLimit: The miter limit to use for “miter” lineJoin option

points
¶ Return an immutable list of all points in the BezierPath as point coordinate (x, y) tuples.

onCurvePoints
¶ Return an immutable list of all on curve points in the BezierPath as point coordinate (x, y) tuples.

offCurvePoints
¶ Return an immutable list of all off curve points in the BezierPath as point coordinate (x, y) tuples.

contours
¶ Return an immutable list of contours with all point coordinates sorted in segments. A contour object has an open attribute.

svgClass
¶ The svg class, as a string.

svgID
¶ The svg id, as a string.

svgLink
¶ The svg link, as a string.


class