scene_drawing
— Drawing Functions for the scene module#
The functions in this module can be used within the scene.Scene.draw()
method when using the classic render loop mode of the scene
module.
Setting Global State#
- scene_drawing.blend_mode(mode)#
Set the blend mode for following drawing operations. mode can be BLEND_NORMAL, BLEND_ADD or BLEND_MULTIPLY.
- scene_drawing.fill(r=0, g=0, b=0, a=1)#
Set the current stroke color.
- scene_drawing.no_fill()#
Disables filling rectangles and ellipses. Combined with
stroke_weight()
andstroke()
(to set the color), this allows you to draw shape outlines. Alternatively, you can set a transparent fill color withfill(0, 0, 0, 0)
.
- scene_drawing.no_stroke()#
Disables the drawing of borders around rectangles and ellipses.
- scene_drawing.no_tint()#
Disables tinting images. Equivalent to tint(1, 1, 1, 1).
- scene_drawing.stroke(r, g, b[, a])#
Set the current stroke color.
- scene_drawing.stroke_weight(line_width)#
Sets the current stroke weight (line width) for the
rect()
andellipse()
functions.
- scene_drawing.use_shader(shader)#
Use the given
scene.Shader
for subsequent drawing.
Drawing#
- scene_drawing.background(r=0, g=0, b=0)#
Fill the background of the current scene with a solid color.
- scene_drawing.ellipse(x=0, y=0, w=0, h=0)#
Draw an ellipse in a rectangle with the current settings for fill color, stroke color and stroke width.
- scene_drawing.image(name, x=0, y=0, w=0, h=0[, from_x, from_y, from_w, from_h])#
Draw a named image into a rectangle.
The name parameter can be a built-in image name or an image identifier that is returned from
render_text()
orload_pil_image()
.If the w(idth) and h(eight) parameters are omitted, the image is drawn at the full size with the origin at (x, y). Using the optional from_x, from_y, from_w, and from_h parameters, you can draw a rectangular portion of the image instead of the whole image.
- scene_drawing.image_quad(name, x1, y1, x2, y2, x3, y3, x4, y4[, from_x1, from_y1, from_x2, from_y2, from_x3, from_y3, from_x4, from_y4])#
Draw a named image into a quad.
The name parameter can be a built-in image name or an image identifier that is returned from
render_text()
orload_pil_image()
.The corners of the quad that the image is drawn into is given by the first set of xn/yn values. The from_xn/from_yn values can optionally be used to draw a quadrangular portion of the image instead of the whole image.
- scene_drawing.line(x1, y1, x2, y2)#
Draw a straight line between two points with the current
stroke()
color andstroke_weight()
.
- scene_drawing.rect(x=0, y=0, w=0, h=0)#
Draw a rectangle with the current settings for fill color, stroke color and stroke width.
- scene_drawing.text(txt, font_name='Helvetica', font_size=16.0, x=0.0, y=0.0, alignment=5)#
Draw a string at a given point with a given font. The alignment parameter has 9 possible values that correspond to the positions on a numeric keypad (with 1 in the bottom lefthand corner). The default (5) centers the text on the point.
The color of the text can be set by calling the
tint()
function.
- scene_drawing.tint(r=1, g=1, b=1, a=1)#
Set the current tint color that is used for drawing images and text.
A white tint color is the default and causes images to be drawn in their natural colors. Setting a white color (r = g = b = 1.0) with an alpha value < 1.0 makes the image translucent.
- scene_drawing.triangle_strip(points[, tex_coords, image_name])#
Draw a triangle strip with the given points (a list of 2-tuples), using the current fill color or an image. If an image is used, the tex_coords list should be a list of UV coordinates (of the same length as points).
Coordinate Transformation#
- scene_drawing.translate(x, y)#
Translates the current transformation matrix.
- scene_drawing.pop_matrix()#
Restores the transformation matrix before the last call of
push_matrix()
. This is usually used in combination withrotate()
,translate()
andscale()
.
- scene_drawing.push_matrix()#
Pushes the current transformation matrix on the stack. This is usually used in combination with
rotate()
,translate()
andscale()
.
- scene_drawing.rotate(deg)#
Rotate the current transformation matrix. The angle is in degrees.
- scene_drawing.scale(x, y)#
Scale the current transformation matrix
Loading Images#
- scene_drawing.load_image(image_name)#
Loads the named image. This can be used to improve performance, e.g. by loading all images that are about to be used in the
setup()
method of yourScene
.
- scene_drawing.load_image_file(image_path)#
Load the image at the given file path and return a name that can be used with the
image()
drawing function.
- scene_drawing.load_pil_image(image)#
Loads a
PIL.Image.Image
into a scene and returns a name that can be used with theimage()
drawing function.Note
Only images using the ‘RGBA’ mode are supported at the moment.
- scene_drawing.render_text(txt, font_name='Helvetica', font_size=16.0)#
Render a string of text as an image name (that can be used with the
image()
function). Returns a tuple of the name and aSize
object.This can be used to determine the size of a string before drawing it, or to repeatedly draw the same text slightly more efficiently.
- scene_drawing.unload_image(image_name)#
Remove an image from the scene cache. This is meant to be used with image names returned from
load_pil_image()
that are no longer needed.