// Lies ein ASCII-Bild ein und erzeuge ein neues, viermal so grosses Bild
// durch Spiegeln an der x- und der y-Achse

#include <fstream>
#include <iostream>

using namespace std;

const int MAXWIDTH = 50, MAXHEIGHT = 50;

// Lies das Bild ein und fülle alle Zeilen mit Leerzeichen bis zur Länge
// der längsten Zeile auf
void picread(const char* filename, char pic[][MAXWIDTH],
             int& width, int& height) {
  ifstream fin(filename);
  if (fin.fail()) {
    cout << "Can't open file " << filename << endl;
    exit(1);
  }
  width = height = 0;
  while (! fin.eof() && height < MAXHEIGHT) {
    // Zeile zeichenweise bis zum Zeilenende lesen
    int x = 0;
    char c;
    fin.get(c);
    while (c != '\n') {
      if (x < MAXWIDTH) {
        pic[height][x++] = c;
      }
      fin.get(c);
    }
    // neue Zeile länger als bisher längste?
    if (width < x) {
      width = x;
    }
    // gelesene Zeile mit Leerstellen auffüllen
    while (x < MAXWIDTH) {
      pic[height][x++] = ' ';
    }
    height++;
  }
  height--;
  // cout << "width = " << width << endl;
  // cout << "height = " << height << endl;
}

int main(int argc, char* argv[]) {
  char picture[MAXHEIGHT][MAXWIDTH];
  int width, height;

  if (argc < 2) {
    cout << argv[0] << ": keine Datei angegeben" << endl;
    exit (1);
  }
  picread(argv[1], picture, width, height);

  // Gib Bild aus
  // picwrite(...);
  // Vervierfache das Bild
  // mirror(...);
  // Gib neues Bild aus
  // picwrite(...);

  return 0;
}

