#! /usr/bin/gawk -f # Last edited on 2025-07-13 15:51:51 by stolfi BEGIN { beg += 0; end += 0; xsize += 0; ysize += 0; xshift += 0; yshift += 0; printf "bein=\"${HOME}/projects/voynich/FromBeinecke\"\n"; printf "clip=\"images/clipped/%s\"\n", stain; printf "\n"; bwnums = "" } /^[|]/{ bwnum = $2+0; flip = $3+0; pght = $4+0; if (stain == "Rusty") { xref = $5+0; yref = $6+0; } else if (stain == "Green") { xref = $7+0; yref = $8+0; } else { arg_error("unknown stain name") } fnum = $9; if ((bwnum >= beg) && (bwnum <= end) && (xref != 0) && (yref != 0)) { printf "bwnum = %02d flip = %d", bwnum, flip > "/dev/stderr" printf " xref = %4d yref = %4d", xref, yref > "/dev/stderr" printf " fnum = %s\n", fnum > "/dev/stderr" printf "xshift = %4d yshift = %4d\n", xshift, yshift > "/dev/stderr" printf "xshift = %4d yshift = %4d\n", xshift, yshift > "/dev/stderr" border = 400; # Width of safety border added to image. xskip = xref - (flip ? xsize - xshift : xshift) + border; yskip = yref - yshift + border; ifile = sprintf("${bein}/%s.jpg", fnum); printf "xskip = %4d yskip = %4d", xskip, yskip > "/dev/stderr" if ((xskip < 0) || (yskip < 0)) { arg_error("negative skip"); } crop_op = sprintf("-crop '%dx%d%+d%+d'", xsize, ysize, xskip, yskip); printf " crop = %-15s\n", crop_op > "/dev/stderr" flip_op = (flip ? "-flop" : "") scale_op = (ysize <= 800 ? "" : "-scale 0.5"); ofile = sprintf("${clip}/%02d-%d-%s.png", bwnum, flip, fnum); printf "convert %s -bordercolor Black -border %d %s %s %s %s\n", \ ifile, border, crop_op, flip_op, scale_op, ofile; printf "identify %s\n", ofile; printf "\n"; bwnums = (bwnums (bwnums == "" ? "" : ",") sprintf("%02d", bwnum)) printf "\n" > "/dev/stderr"; } } END { printf "( cd ${clip} && display -title '%%f' {%s}-*.png )\n", bwnums }