# Square

By Martin McBride, 2020-08-26
Tags: geometry square
Categories: generativepy generative art The Square class draws a square.

There is also a square function that just creates a square as a new path.

## Square class methods

The Square class inherits add, fill, stroke, fill_stroke, path, clip and other methods from Shape.

• of_corner_size

### of_corner_size

Creates a square based on the position and size.

of_corner_size(corner, width)

Parameter Type Description
corner (number, number) A tuple of two numbers, giving the (x, y) position of the top left corner.
width number The side of the square.

## square function

Adds a square as a new path, without the need to create a Square object in code.

square(ctx, corner, width, height)

Parameter Type Description
ctx Context The Pycairo Context to draw to
corner (number, number) A tuple of two numbers, giving the (x, y) position of the top left corner.
width number The side of the square.

## Example

Here is some example code that draws squares using the class and the utility function. The full code can be found on github.

from generativepy.drawing import make_image, setup
from generativepy.color import Color
from generativepy.geometry import Square, square

'''
Create squares using the geometry module.
'''

def draw(ctx, width, height, frame_no, frame_count):
setup(ctx, width, height, width=5, background=Color(0.8))

# The square function is a convenience function that adds a square as a new the path.
# You can fill or stroke it as you wish.
square(ctx, (1, 1), 1)
ctx.set_source_rgba(*Color(1, 0, 0))
ctx.fill()

# Square objects can be filled, stroked, filled and stroked.
Square(ctx).of_corner_size((3, 1), 1).fill(Color(0, .5, 0))
Square(ctx).of_corner_size((1, 3), 1).stroke(Color(0, .5, 0), 0.1)
Square(ctx).of_corner_size((3, 3), 1).fill_stroke(Color(0, 0, 1), Color(0), 0.2)

make_image("/tmp/geometry-squares.png", draw, 500, 500)