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() and stroke() (to set the color), this allows you to draw shape outlines. Alternatively, you can set a transparent fill color with fill(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() and ellipse() 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() or load_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() or load_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 and stroke_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 with rotate(), translate() and scale().

scene_drawing.push_matrix()#

Pushes the current transformation matrix on the stack. This is usually used in combination with rotate(), translate() and scale().

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 your Scene.

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 the image() 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 a Size 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.