Algorithms for generating brick walls I'm not sure which StackExchange community is the correct place to ask this so I'm trying this one.

I want to write a code that generates random brick wall type textures. Similarly to what, for example, this commercial software does: http://www.vizpark.com/shop/walls-and-tiles/ .

So far I've thought at least three types of brick wall textures I would like to generate:
1) Periodic and user-defined pattern with one or more predefined brick types (bricks can be different shape an size). This is the simplest case.
2) Completely random pattern with predefined brick types
3) Completely random pattern with random sized bricks.

This is pretty much a mathematical problem that could be rephrased as: what is the way to fill a predefined area with certain shapes (either random or predefined) without leaving gaps?

I would assume that people have thought about this type or problems before, but I don't know how to search for it. I'm not looking for a conclusive answer, but would appreciate links to articles, etc. discussing different variations of this or related problems.
I would like to comment this, but reputation...

What you are looking for is a Tessellation. 


  A tessellation of a flat surface is the tiling of a plane using one or more geometric shapes, called tiles, with no overlaps and no gaps.


For example, the Penrose Tiling, the Pithagorean Tiling, Domino Tiling or Polyomino Tiling.