#include <malloc.h>
#include <stdio.h>
#include "ppm.c"

/* Usage: input ppm on command line, rectangles on stdin.
 * The rectangles are x0 y0 x1 y1 where (x0, y0) is upper left and (x1, y1) is
 * lower right.
 */

#define start_index(img, x, y, c) ((img).bpp == 2) ? \
  ((img).raster * (y) + 6 * (x) + 2 * (c)) : \
  ((img).raster * (y) + 3 * (x) + (c))

int main(int argc, char *argv[]) {
  FILE *gp;
  image img;
  int x, y, x0, y0, x1, y1;
  if ((argc == 2) && (gp = fopen(argv[1], "r"))) {
    if (get_ppm_from_file(&img, gp)) {
      while (4==scanf("%i %i %i %i", &x0, &y0, &x1, &y1)) {
        for (x = x0; x < x1; x++) {
          for (y = y0; y < y1; y++) {
            img.raw[start_index(img, x, y, 0)] = 0;
            img.raw[start_index(img, x, y, 1)] = 0;
            img.raw[start_index(img, x, y, 2)] = 0;
            if (img.bpp == 2) {
              img.raw[start_index(img, x, y, 0) + 1] = 0;
              img.raw[start_index(img, x, y, 1) + 1] = 0;
              img.raw[start_index(img, x, y, 2) + 1] = 0;
            }
          }
        }
      }
      put_ppm_to_file(img, stdout);
      dealloc_ppm(img);
    }
    fclose(gp);
  }
  return 0;
}

