#!/usr/bin/pike
/*
 * cropper.pike
 *
 * Crom a NxM+i+j pngs into another png
 *
 * History:
 *      28/09/2020 Creation from tiler.pike
 *
 * Author: Dario Rodriguez dario@softhome.net
 * This program is distributed under the terms of the GNU GPL v2.1+
 */

int
main(int argc, array(string) argv)
{
	int xsize,ysize,xoff,yoff;
        string infilename;
        string destfilename;
        Image.Image result;
        if(argc<4 || (argc>1 && argv[1]=="--help")) {
                Stdio.werror("Syntax:  "+argv[0]+" <crop_expression> <infile.png> <outfile.png>\n");
                Stdio.werror("Example: "+argv[0]+" 200x300+50+20 file.png dest.png\n");
                Stdio.werror("Example result: dest.png\n");
                return(1);
        }
        write("* Cropping to "+argv[1]+"\n");
	xsize=ysize=xoff=yoff;
	xsize=(int) (argv[1]/"x")[0];
	if(sizeof(argv[1]/"x")>1)
		ysize=(int) (((argv[1]/"x")[1])/"+")[0];
	if(sizeof(argv[1]/"+")>1)
		xoff=(int) (argv[1]/"+")[1];
	if(sizeof(argv[1]/"+")>2)
		yoff=(int) (argv[1]/"+")[2];
        infilename=argv[2];
        destfilename=argv[3];
	result=Image.load(infilename)->copy(xoff,yoff,xoff+xsize-1,yoff+ysize-1,255,255,255);
	write("* Writing "+destfilename+"...\n");
        Stdio.write_file(destfilename,Image.PNG.encode(result));
	write("* Finished successfully\n");
        return(0);
}