std::string buildGrid(std::vector<int> &grid, int x, int y, Color &c) { Random r; std::stringstream ppmData; // create the header ppmData << "P3\n" << x << " " << y << "\n255\n"; for(int i = 0; i < 5; ++i) { c = randColor(r); line(grid, r.DrawNumber(0, 256), r.DrawNumber(0, 256), r.DrawNumber(0, 256), r.DrawNumber(0, 256), c); int rx = r.DrawNumber(0, 255); int ry = r.DrawNumber(0, 255); box(grid, rx, ry, r.DrawNumber(1, 256 - rx), r.DrawNumber(1, 256 - ry), c); rx = r.DrawNumber(0, 255); ry = r.DrawNumber(0, 255); solid_box(grid, rx, ry, r.DrawNumber(1, 256 - rx), r.DrawNumber(1, 256 - ry), c); rx = r.DrawNumber(55, 255); ry = r.DrawNumber(55, 255); int radius = r.DrawNumber(3, 255); circle(grid, rx, ry, radius, c, r.DrawBool()); } // convert list to text file. for(int dy : range(0, y)) { for(int dx : range(0, x)) { int a, b, c; std::tie(a, b, c) = getPoint(grid, dx, dy); ppmData << " " << a << " " << b << " " << c << '\n'; } } std::string s(ppmData.str()); return s; }