customFont = loadFont('Futura Bold.ttf');
var colors = ['#FF5B50', '#56D9E5', '#FFAD39', '#B56E9A'];
var totalWidth = cols * squareSize + (cols - 1) * gap;
var totalHeight = rows * squareSize + (rows - 1) * gap;
var startX = (width - totalWidth) / 2;
for (var i = 0; i < cols; i++) {
for (var j = 0; j < rows; j++) {
var x = startX + i * (squareSize + gap);
var y = startY + j * (squareSize + gap);
var colorIndex = floor(random(colors.length));
fill(colors[colorIndex]);
rect(x, y, squareSize, squareSize);
rect(x + 10, y + 10, squareSize - 20, squareSize - 20);
for (var k = 1; k <= 3; k++) {
var lineX = x + k * (squareSize / 4);
line(lineX, y + 15, lineX, y + squareSize - 15);
var textStartY = startY + totalHeight + 80;
text('CONTAINER', startX, textStartY);
text('ARCHITECTURE', startX, textStartY + 70);
line(startX, textStartY + 90, startX + 600, textStartY + 90);
text('JURE', startX, textStartY + 140);
text('KOTNIK', startX, textStartY + 180);
text('DZIEKAN', startX, textStartY + 240);
text('WYDZIAŁ ARCHITEKTURY', startX, textStartY + 260);
text('POLITECHNIKA WARSZAWSKA', startX, textStartY + 280);
text('ZAPRASZA NA WYKŁAD GOŚCINNY', startX, textStartY + 300);
text('GODZINA 16:15', startX + 400, textStartY + 240);
text('9 CZERWCA 2011', startX + 400, textStartY + 260);
text('AUDITORIUM 103', startX + 400, textStartY + 280);
text('WAPW, KOSZYKOWA 55', startX + 400, textStartY + 300);
saveCanvas('Kerem.Yaslıçimen.Generative.Poster.jpg');