#include <stdio.h>
#define n1 4096
#define n2 4032
#define n  n1*n2
float d[n];
char head[72][80];
FILE *fp,*fp1;
char a[80];
main(int ac, char **av)
{
  int i,j,k,ip=0;
  float z[5],x;
  double sky;
  if(ac<2){ printf("\n\t****** adjust adu of 2,3,4_frame **********\n");
            printf("\n\tadjust !\n");
            printf("\n\tneed pflat.ratio, adjust.p\n\n");
            exit(0);
  }
  fp=fopen("pflat.ratio","r");
  if(fp==0){ printf("\n\tpflat.ratio not found!\n"); exit(0); }
l10:
  fgets(a,80,fp);
  if(a[0]!='a')goto l10;
  for(i=2;i<=4;i++){
    fgets(a,80,fp);
    sscanf(&a[2],"%f",&z[i]);
  }
  fclose(fp);
//  for(i=2;i<=4;i++)printf("%f\n",z[i]);
  fp=fopen("adjust.p","r");
  if(fp==0){ printf("\n\tadjust.p not found!\n"); exit(0); }
l30:
  fgets(a,80,fp);  if(feof(fp))goto l40;
  if(a[10]!='_' || a[0]!='p')goto l30;
  j=a[11]-48; 
  if(j==1)goto l30;  
  a[16]=0; x=z[j];
  fp1=fopen(a,"rb");
  fread(head,72,80,fp1); fread(d,n,4,fp1); swap4(d,n*4); fclose(fp1);
  k=indexpos(head,"PLATRATI",72);
  if(k!=72){ printf("%s already done adjustp!\n",a); goto l30; }
  sprintf(&head[29],"PLATRATI= %20.6f /",x); head[29][32]=32;
  for(i=0;i<n;i++)d[i]/=x;
  k=32; ip++;
  sky_(d,&sky);
  sprintf(&head[k],"SKYADU  =         %12.2lf /",sky); head[32][32]=32;
  fp1=fopen(a,"wb");  swap4(d,n*4);
  fwrite(head,72,80,fp1); fwrite(d,n,4,fp1); fclose(fp1);
  printf("%3d: %s ratio:%9.6f sky:%12.3lf\n",ip,a,x,sky);
  goto l30;
l40:
  fclose(fp);
}
  
sky_(map,sky)
float map[n2][n1];
double *sky;
{
  int ix,iy, i,j,k,m;
  short d[300*300];
  float z,s1;
  m=0;
  *sky=0.;                    // use 4 block to get av_sky
  for(ix=n1/4;ix<n1;ix+=n1/2)for(iy=n1/4;iy<n1;iy+=n1/2){
  k=0;for(i=ix-150;i<ix+150;i++)for(j=iy-150;j<iy+150;j++)d[k++]=map[i][j]/2.;
    white_black(d,1,k,&z,&s1);   if(z==0.)m++;
    *sky+=z;
  } *sky/=2.;                    if(m)*sky*=4.;
}
