// izrezivanje.c / Hip / 2011-01-10
//
// demo program koji ilustrira rad s rutinama za
// učitavanje i pisanje PGM formata, te pristup
// pojedinim pikselima unutar slike

#include <stdio.h>
#include <math.h>
#include <complex.h>
#include "pgm.h"

void izrezivanje(int, GRID *);

main() {
  char fname[80];
  GRID *slika1, *slika2;
  int nmod;  
  int px_ukupno, px_ostalo;
  double px_postotak;

  printf("\nPGM demo\n");
  printf("~~~~~~~~\n\n");

  printf("PGM datoteka za učitati: ");
  scanf("%s", fname);

  if((slika1 = read_PGM(fname)) == NULL) {
    printf("Pogreška u read_PGM!\n");
    exit(1);
  }

  printf("\nPGM slika uspješno učitana:\n");
  printf("  širina = %d\n", slika1 -> width);
  printf("  visina = %d\n", slika1 -> height);

  printf("\nKoliko pixela ostaviti u uglovima slike: ");
  scanf("%d", &nmod);
  izrezivanje(nmod, slika1);

  px_ukupno = slika1 -> width * slika1 -> height;
  px_ostalo = nmod * nmod * 4;
  px_postotak = (100.0 * px_ostalo) / px_ukupno;
  printf("\nUkupan broj piksela: %d\n", px_ukupno);
  printf("Preostalo je %d piksela, što čini %7.2lf%%\n", px_ostalo,
    px_postotak);

  printf("\nIme izlazne PGM datoteka: ");
  scanf("%s", fname);
  write_PGM(fname, slika1, 'r', 1);
  printf("\nSlika uspješno snimljena!\n\n");
} // main

void izrezivanje(int ncut, GRID *slika) {
  double complex *p;
  int W = slika -> width, H = slika -> height;
  int i, j;

  p = slika -> image;

  for(j = 0; j < ncut; j++)
    for(i = ncut; i < W - ncut; i++) p[j * W + i] = 0.0 + I * 0.0;
  for(j = ncut; j < H - ncut; j++)
    for(i = 0; i < W; i++) p[j * W + i] = 0.0 + I * 0.0;
  for(j = H - ncut; j < H; j++)
    for(i = ncut; i < W - ncut; i++) p[j * W + i] = 0.0 + I * 0.0;
} // izrezivanje

