#include <stdio.h>


FILE *odat,*dat;
 unsigned int ys,xs,xsize=20,ysize=20,res,xcnt,ycnt,extra,extra2,contr,contr_bit=0,contr_pixel,vec_count;
 unsigned int im_data[642][482];
 unsigned int **vec_data;		//for bres_line
 unsigned char contr_page[642][482];
 unsigned int Brightness,SpektrNr=0;
 unsigned int dummy,dummy2;

 float P1_x, P1_y, P2_x, P2_y;  // for bres_line

void open_pic(void){    
  if ((dat=fopen("tmp/pic/p_0000.pgm","r+"))==NULL) { perror("fopen"); exit(-1);}
  fgetc(dat);  fgetc(dat);
  fscanf(dat,"%d",&xsize);
  fscanf(dat,"%d",&ysize);
  fscanf(dat,"%d",&res);
  fprintf(stderr,"  X : %d\n  Y : %d\nRes : %d\n",xsize,ysize,res);

  for (ycnt=0;ycnt<ysize;ycnt++)
   for (xcnt=0;xcnt<xsize;xcnt++)
   {
     im_data[xcnt][ycnt]=fgetc(dat);
   }
} 


void scan_pic(void){ //6 is normal
    contr_pixel=0; contr=10;
    for (ycnt=0;ycnt<ysize;ycnt++){
      for (xcnt=0;xcnt<xsize;xcnt++){
      if((im_data[xcnt][ycnt]>20)&&(im_data[xcnt][ycnt]<230)){
        contr_bit=0;
     
        if(im_data[xcnt+1][ycnt]+contr <= im_data[xcnt][ycnt]){contr_bit=1;}
        if(im_data[xcnt][ycnt+1]+contr <= im_data[xcnt][ycnt]){contr_bit=1;}
        if(im_data[xcnt-1][ycnt]+contr <= im_data[xcnt][ycnt]){contr_bit=1;}
        if(im_data[xcnt][ycnt-1]+contr <= im_data[xcnt][ycnt]){contr_bit=1;}
      }
      if(contr_bit!=0){contr_bit=0; 
         contr_page[xcnt][ycnt]=255;
        // list_x[contr_pixel]=xcnt;
        // list_y[contr_pixel]=ycnt;
         contr_pixel++;
      }else{contr_page[xcnt][ycnt]=0;}
    }
  }  
}

void find_vec(void){
  int cptr1,cptr2,line_x,line_y;
  vec_count=0;
//  for(cptr1=2;cptr1<contr_pixel-1;cptr1++){
    for(cptr1=2;cptr1<1000;cptr1++){
  
  // printf("%f %f %f %f\n",P1_x,P1_y,P2_x,P2_y);
 // printf(".");
 //  for(cptr2=3;cptr2<contr_pixel;cptr2++){
   for(cptr2=3;cptr2<48;cptr2++){
  
 //     vec_x[vec_count]=list_x[cptr2]-list_x[cptr1];
  //    vec_y[vec_count]=list_y[cptr2]-list_y[cptr1];
    //   P1_x=(float)(list_x[cptr1]);     P1_y=(float)(list_y[cptr1]);
    //   P2_x=(float)(list_x[cptr2]);     P2_y=(float)(list_y[cptr2]);
    //   bres_line();
      
      //do
     // line_y=list_y[cptr1]
     // line_y!=list
    //  if(1=1){vec_count++;}
   }
  }
}


void write_pic(void){
  if ((odat=fopen("tmp/pic/contrast.pgm","w+"))==NULL) { perror("fopen"); exit(-1);}
  fprintf(odat,"P5\n%d %d\n255\n",xsize,ysize);
  for (ycnt=0;ycnt<ysize;ycnt++){
    for (xcnt=0;xcnt<xsize;xcnt++){
       fputc(contr_page[xcnt][ycnt],odat);
    }
  }
  fclose(odat);
}

int main (void)
{
  vec_data = (unsigned int **)im_data;
  printf("open...\n");
  open_pic();
  printf("contrast...\n");
  scan_pic();
  printf("write...\n");
  write_pic();
}
