/*
    sff2jpeg - convert sff group 3 fax files to jpeg.
    Copyright (C) 2002,2003  Matthias Kramm <kramm@quiss.org>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sff.h"
#include "jpeg.h"

int main(int argn, char*argv[])
{
    int pages;
    int t;
    if(argn<=1) {
	printf("usage: %s file.sff\n", argv[0]);
	printf("\n");
	printf("\tconverts a sff into a number of jpeg files (file0.jpeg, file1.jpeg...)\n");
	printf("\tone for each page of the sff.\n");
	exit(1);
    }

    sff_printinfo(argv[1]);

    pages = sff_countpages(argv[1]);
    for(t=0;t<pages;t++)
    {
	struct FaxPage p;
	char filename[80];
	printf("processing page %d\n", t+1);
	p = sff_getpage(argv[1], t);

	/* jpeg processing */
	{
	  int quality = 100;
	  unsigned char*data = (unsigned char*)malloc(p.lenx*p.leny*3);
	  int x,y;
	  for(y=0;y<p.leny;y++)
	  for(x=0;x<p.lenx;x++) {
	      if(p.data[y*p.scanline+x])
	      {
		  data[(y*p.lenx+x)*3] = 255;
		  data[(y*p.lenx+x)*3+1] = 255;
		  data[(y*p.lenx+x)*3+2] = 255;
	      }
	      else
	      {
		  data[(y*p.lenx+x)*3] = 0;
		  data[(y*p.lenx+x)*3+1] = 0;
		  data[(y*p.lenx+x)*3+2] = 0;
	      }
	  }
	  sprintf(filename, "file%d.jpeg", t+1);
	  printf("%d %d %s\n", p.lenx, p.leny, filename);
	  mkjpeg(data, p.lenx, p.leny, quality, filename);
	}
    }
}

