func compose(data Message, bg ledmatrix.Color) *ledmatrix.Writer {
	matrix := ledmatrix.NewMatrix(tower.Rows, tower.Columns)
	writer := ledmatrix.NewWriter(matrix)
	writer.Spacer(matrix.Columns, 0) // Blank bootstrap

	for _, line := range data {
		var r, g, b int
		var f bitmapfont.Font

		if line.Font < 8 {
			f = bitmapfont.F68
		} else {
			f = bitmapfont.F88
		}

		fmt.Sscanf(line.Color, "#%02x%02x%02x", &r, &g, &b)
		writer.WriteText(line.Text, f, ledmatrix.RGB(r, g, b), bg)
	}
	return writer
}
// renderdeTextMessage convert a text to a LED bitmap matrix.
// This method is used by the displayBuilder gorouting.
func textToBitmap(text []Line, bg uint32) *ledmatrix.Matrix {
	matrix := ledmatrix.NewMatrix(rows, 0)
	writer := ledmatrix.NewWriter(matrix)
	writer.Spacer(matrix.Columns, 0) // Blank bootstrap

	for _, line := range text {
		var r, g, b int
		var f font.Font

		if line.Font < 8 {
			f = font.Font6x8
		} else {
			f = font.Font8x8
		}

		fmt.Sscanf(line.Color, "#%02x%02x%02x", &r, &g, &b)
		writer.WriteText(line.Text, f, ledmatrix.RGB(r, g, b), bg)
	}
	return matrix
}
// blank generates a "space" from the given color
func blank(len int, bg uint32) *ledmatrix.Matrix {
	matrix := ledmatrix.NewMatrix(rows, columns)
	writer := ledmatrix.NewWriter(matrix)
	writer.Spacer(columns, bg) // Blank spacer
	return matrix
}