Bot¶
-
class
shoebot.grammar.NodeBot(canvas=None, namespace=None, vars=None)¶ -
color_mode= 'rgb'¶
-
color_range= 1¶
-
image(path, x, y, width=None, height=None, alpha=1.0, data=None, draw=True, **kwargs)¶ Draws a image with (x,y) as the top left corner.
If width and height are specified, resize the image to fit.
form path, in x,y and resize it to width, height dimensions.
- Parameters
path (filename) – location of the image on disk
x (float) – x-coordinate of the top left corner
y (float) – y-coordinate of the top left corner
width (float or None) – image width (leave blank to use its original width)
height (float or None) – image height (leave blank to use its original height)
alpha (float) – opacity
data (binary data) – image data to load. Use this instead of
pathif you want to load an image from memory or have another source (e.g. using the web library)draw (bool) – whether to place the image immediately on the canvas or not
-
imagesize(path)¶ - Parameters
path – Path to image file.
- Returns
image size as a (width, height) tuple
-
rect(x, y, width, height, roundness=0.0, draw=True, **kwargs)¶ Draw a rectangle.
- Parameters
x – top left x-coordinate
y – top left y-coordinate
width – rectangle width
height – rectangle height
roundness – rounded corner radius
draw (boolean) – whether to draw the shape on the canvas or not
fill – fill color
- Returns
BezierPath representing the rectangle
-
rectmode(mode=None)¶ Get or set the current rectmode.
- Parameters
mode (CORNER, CENTER or CORNERS) – the mode to draw new rectangles in
- Returns
current rectmode value
-
ellipse(x, y, width, height, draw=True, **kwargs)¶ Draw an ellipse.
- Parameters
x – top left x-coordinate
y – top left y-coordinate
width – ellipse width
height – ellipse height
draw (boolean) – whether to draw the shape on the canvas or not
- Returns
BezierPath representing the ellipse
-
oval(x, y, width, height, draw=True, **kwargs)¶ Draw an ellipse.
- Parameters
x – top left x-coordinate
y – top left y-coordinate
width – ellipse width
height – ellipse height
draw (boolean) – whether to draw the shape on the canvas or not
- Returns
BezierPath representing the ellipse
-
circle(x, y, diameter, draw=True, **kwargs)¶ Draw a circle :param x: x-coordinate of the top left corner :param y: y-coordinate of the top left corner :param diameter: circle diameter :param boolean draw: whether to draw the shape on the canvas or not :return: BezierPath representing the circle
-
ellipsemode(mode=None)¶ Set the current ellipse drawing mode.
- Parameters
mode – CORNER, CENTER, CORNERS
- Returns
ellipsemode if mode is None or valid.
-
line(x1, y1, x2, y2, draw=True, **kwargs)¶ Draw a line from (x1,y1) to (x2,y2).
- Parameters
x1 – x-coordinate of the first point
y1 – y-coordinate of the first point
x2 – x-coordinate of the second point
y2 – y-coordinate of the second point
draw (boolean) – whether to draw the shape on the canvas or not
- Returns
BezierPath representing the line
-
arc(x, y, radius, angle1, angle2, type='chord', draw=True, **kwargs)¶ Draw an arc with center (x,y) between two angles in degrees.
- Parameters
x1 – start x-coordinate
y1 – start y-coordinate
radius – arc radius
angle1 – start angle
angle2 – end angle
-
arrow(x, y, width, type='1', draw=True, **kwargs)¶ Draw an arrow.
- Parameters
x – arrow tip x-coordinate
y – arrow tip y-coordinate
width – arrow width (also sets height)
type (NORMAL or FORTYFIVE) – arrow type
draw (boolean) – whether to draw the shape on the canvas or not
- Returns
BezierPath object representing the arrow
-
star(x, y, points=20, outer=100, inner=50, draw=True, **kwargs)¶ Draws a star.
- Parameters
x – center x-coordinate
y – center y-coordinate
points – amount of points
outer – outer radius
inner – inner radius
draw (boolean) – whether to draw the shape on the canvas or not
-
beginpath(x=None, y=None, **kwargs)¶ Start a new Bézier path.
This command is needed before any other path drawing commands.
- Parameters
x (float or None) – x-coordinate of the starting point
y (float or None) – y-coordinate of the starting point
-
moveto(x, y)¶ Move the Bézier “pen” to the specified point without drawing.
- Parameters
x (float) – x-coordinate of the point to move to
y (float) – y-coordinate of the point to move to
-
lineto(x, y)¶ Draw a line from the pen’s current point.
- Parameters
x (float) – x-coordinate of the point to draw to
y (float) – y-coordinate of the point to draw to
-
curveto(x1, y1, x2, y2, x3, y3)¶
-
arcto(x, y, radius, angle1, angle2)¶
-
closepath()¶
-
endpath(draw=True, closed=None)¶
-
drawpath(path, **kwargs)¶
-
drawimage(image, x=None, y=None)¶ - Parameters
image – Image to draw
x – optional, x coordinate (default is image.x)
y – optional, y coordinate (default is image.y)
- Returns
-
autoclosepath(close=True)¶
-
relmoveto(x, y)¶ Move relatively to the last point.
-
rellineto(x, y)¶ Draw a line using relative coordinates.
-
relcurveto(h1x, h1y, h2x, h2y, x, y)¶ Draws a curve relatively to the last point.
-
findpath(points, curvature=1.0)¶ Constructs a path between the given list of points.
Interpolates the list of points and determines a smooth bezier path betweem them.
The curvature parameter offers some control on how separate segments are stitched together: from straight angles to smooth curves. Curvature is only useful if the path has more than three points.
-
beginclip(path)¶ Use a path as a clipping mask.
All drawing commands between beginclip() and endclip() will be drawn inside the clipping mask set by beginclip().
- Parameters
path (BezierPath) – the path to be used as a clipping mask
-
endclip()¶ Finish a clipping mask and render the result.
-
transform(mode=None)¶ Set the current transform mode.
- Parameters
mode (CORNER or CENTER) – the mode to base new transformations on
-
translate(xt, yt)¶ Translate the canvas origin point by (xt, yt).
- Parameters
xt – Amount to move horizontally
yt – Amount to move vertically
-
rotate(degrees=0, radians=0)¶ Set the current rotation in degrees or radians.
- Parameters
degrees – Degrees to rotate
radians – Radians to rotate
-
scale(x=1, y=None)¶ Set a scale at which to draw objects.
1.0 draws objects at their natural size.
- Parameters
x – Scale on the horizontal plane
y – Scale on the vertical plane
-
skew(x=1, y=0)¶
-
push()¶
-
pop()¶
-
reset()¶
-
outputmode()¶ NOT IMPLEMENTED
-
colormode(mode=None, range=None)¶ Set the current colormode (can be RGB or HSB) and eventually the color range.
If called without arguments, it returns the current colormode.
- Parameters
mode (RGB or HSB) – Color mode to use
crange (float) – Maximum value for the new color range to use
- Returns
Current color mode
-
colorrange(crange=None)¶ Sets the current color range.
The default is 0-1; for a range of 0-255, use
colorrange(256).- Parameters
crange (float) – maximum value for new color range
- Returns
current range value
-
fill(*args)¶ Sets a fill color, applying it to new paths.
- Parameters
args – color in supported format
-
nofill()¶ Stop applying fills to new paths.
- Returns
fill color before nofill() was called
-
fillrule(r=None)¶ Set the fill rule to use in new paths.
- Parameters
r (WINDING or EVENODD) – fill rule to apply
- Returns
current fill rule value
-
stroke(*args)¶ Set a stroke color, applying it to new paths.
- Parameters
args – color in supported format
- Returns
new stroke color
-
nostroke()¶ Stop applying strokes to new paths.
- Returns
stroke color before nostroke() was called
-
strokewidth(w=None)¶ Set the stroke width to be used by stroke().
- Parameters
w – width of the stroke to use
- Returns
current stroke width value
-
strokedash(dashes=None, offset=0)¶ Sets the dash pattern to be used by stroke().
- Parameters
dashes (list) – a sequence specifying alternate lengths of on and off stroke portions
offset (float) – an offset into the dash pattern at which the stroke should start
- Returns
tuple with dashes value and offset
-
strokecap(cap=None)¶ Set the stroke cap.
- Parameters
w – new stroke cap value
- Returns
current stroke cap value
-
strokejoin(join=None)¶ Set the stroke join.
- Parameters
w – new stroke join value
- Returns
current line join value
-
background(*args)¶ Set the canvas background color.
- Parameters
color – background color to apply
- Returns
new background color
-
blendmode(mode=None)¶ Set the current blending mode.
- Parameters
mode – mode name (e.g. “multiply”)
-
font(fontpath=None, fontsize=None, vars=None, *args, **kwargs)¶ Set the font to be used with new text instances.
- Parameters
fontpath – font name (can include styles like “Bold”)
fontsize – font size
vars – font variant values, as a dict of axis/value pairs (variable fonts only)
var_XXXX – set variant value (variable fonts only)
- Returns
current fontpath (if fontpath param not set)
Accepts TrueType and OpenType files. Depends on FreeType being installed.
-
fontsize(fontsize=None)¶ Sets and/or returns the current font size.
- Parameters
fontsize – Font size in pt
- Returns
the current font size value
-
text(txt, x, y, width=None, height=1000000, outline=False, draw=True, **kwargs)¶ Draws a string of text according to the current font settings.
- Parameters
txt – Text to output
x – x-coordinate of the top left corner
y – y-coordinate of the top left corner
width – text width
height – text height
outline – If True, draws a path instead of a text object (defaults to False)
draw – Set to False to inhibit immediate drawing (defaults to True)
- Returns
Path object representing the text.
-
textpath(txt, x, y, width=None, height=1000000, draw=False, **kwargs)¶ Generates an outlined path of the input text.
- Parameters
txt – Text to output
x – x-coordinate of the top left corner
y – y-coordinate of the top left corner
width – text width
height – text height
draw – Set to False to inhibit immediate drawing (defaults to False)
- Returns
BezierPath representing the text
-
textmetrics(txt, width=None, height=None, **kwargs)¶ Returns the dimensions of the text box of a string of text, according to the current font settings.
- Returns
(width, height) tuple
-
textbounds(txt, width=None, height=None, **kwargs)¶ Returns the dimensions of the actual shapes (inked part) of a string of text, according to the current font settings.
- Returns
(width, height) tuple
-
textwidth(txt, width=None)¶ Returns the width of a string of text according to the current font settings.
- Returns
-
textheight(txt, width=None)¶ Returns the height of a string of text according to the current font settings.
- Parameters
txt – string to measure
width – width of a line of text in a block
-
lineheight(height=None)¶ Set text lineheight.
- Parameters
height – line height.
-
align(align='left')¶ Set text alignment
- Parameters
align – Text alignment (LEFT, CENTER, RIGHT)
-
fontoptions(hintstyle=None, hintmetrics=None, subpixelorder=None, antialias=None)¶ Set font rendering options.
- Parameters
hintstyle – Hinting style (NONE, SLIGHT, MEDIUM, FULL)
hintmetrics – Quantize font metrics (ON, OFF)
antialias – Antialiasing type (NONE, GRAY, SUBPIXEL, FAST, GOOD, BEST)
subpixelorder – Order of pixels when antialiasing in SUBPIXEL mode (RGB, BGR, VRGB, VBGR)
-
fontnames()¶
-
autotext(sourceFile)¶
-
property
canvas¶ Not entirely sure compatible the Shoebot ‘canvas’ is with Nodebox but there you go. :return:
-
angle(x0, y0, x1, y1)¶
-
distance(x0, y0, x1, y1)¶
-
coordinates(x0, y0, distance, angle)¶
-
property
FRAME¶
-
MOUSEX= -1¶ The x-value of the mouse cursor coordinates.
-
MOUSEY= -1¶ The y-value of the mouse cursor coordinates.
-
choice(seq)¶ Choose a random element from a non-empty sequence.
-
cm= 28.3465¶
-
color(*args)¶ - Parameters
args – color in a supported format.
- Returns
Color object containing the color.
-
draw()¶ For override by user sketch
-
files(path='*')¶ Returns a list of files.
Use wildcards to specify which files to pick, e.g.
f = files('*.gif').- Parameters
path – wildcard to use in file list
- Returns
list of file names
-
finish()¶
-
grid(cols, rows, colSize=1, rowSize=1, shuffled=False)¶ Returns an iterator that contains coordinate tuples.
This command can be used to quickly create grid-like structures. A common usage pattern is:
for x, y in grid(10,10,12,12): rect(x,y, 10,10)
-
inch= 72¶
-
key= '-'¶
-
keycode= 0¶
-
keydown= False¶
-
mm= 2.8346¶
-
mousedown= False¶ Is True if the mouse button is pressed.
-
random(v1=None, v2=None)¶
-
run(inputcode, iterations=None, run_forever=False, frame_limiter=False, verbose=False)¶ Executes the contents of a Nodebox/Shoebot script in current surface’s context.
- Parameters
inputcode – Path to shoebot source or string containing source
iterations – None or Maximum amount of frames to run
run_forever – If True then run until user quits the bot
frame_limiter – If True then sleep between frames to respect speed() command.
-
setup()¶ For override by user sketch
-
show(format='png', as_data=False)¶ Returns an Image object of the current surface. Used for displaying output in Jupyter notebooks. Adapted from the cairo-jupyter project.
-
size(w=None, h=None)¶ Set the canvas size
Only the first call will actually be effective.
- Parameters
w – Width
h – height
-
snapshot(target=None, defer=None, autonumber=False)¶ Save the contents of current surface into a file or cairo surface/context.
- Parameters
filename – Can be a filename or a Cairo surface.
defer – When to snapshot, if set to True waits until the frame has finished rendering.
autonumber – If true then a number will be appended to the filename.
-
speed(framerate=None)¶ Set animation framerate.
- Parameters
framerate – Frames per second to run bot.
- Returns
Current framerate of animation.
-
var(name, type, default=None, min=0, max=255, value=None, step=None)¶
-
ximport(libName)¶ Import Nodebox libraries.
The libraries get _ctx, which provides them with the nodebox API.
- Parameters
libName – Library name to import
-