Further work on the panorama split script, with WIP regression support.

[still need to properly generate the panorama bitmap...]
This commit is contained in:
Solomon Peachy 2021-01-22 22:49:50 -05:00
parent 3abb918557
commit a7a8aedf89
3 changed files with 105 additions and 53 deletions

View File

@ -7,43 +7,68 @@
# very naive linear manner.
infile="$1"
outfile="$2"
model="$3"
printsize="$4"
if [ -z "$5" ] ; then
dpi=300
else
dpi="$5"
fi
# D90
dpi=300
case "${model}" in
mitsubishi-d90dw)
cols=1852
drows=2428
overlap=600
## 6x20 3-pane
if [ "${printsize}" eq "6x20" ] ; then
inrows=6084
## 6x14 2-pane
#inrows=4256
#DS620
#dpi=300
#cols=1844
#drows=2436
#overlap=600
## 6x20 3-page
#inrows=6108
## 6x14 2-page
#inrows=4272
#DS820
#dpi=300
#overlap=600
#cols=2448
## 8x18 2-pane
#drows=3036
#inrows=5472
## 8x26 3-pane
#drows=3036
#inrows=7908
## 8x22 2-pane
#drows=3636
#inrows=6672
## 8x32 3-pane
#drows=3636
#inrows=9708
elif [ "${printsize}" eq "6x14" ] ; then
inrows=4256
else
echo "D90 supportx 6x20 and 6x14 only"
exit 1
fi
;;
dnp-ds620)
cols=1844
drows=2436
overlap=600
if [ "${printsize}" eq "6x20" ] ; then
inrows=6108
elif [ "${printsize}" eq "6x14" ] ; then
inrows=4272
else
echo "DS620 supportx 6x20 and 6x14 only"
exit 1
fi
;;
dnp-ds820)
overlap=600
cols=2448
if [ "${printsize}" eq "8x18" ] ; then
drows=3036
inrows=5472
elif [ "${printsize}" eq "8x26" ] ; then
drows=3036
inrows=7908
elif [ "${printsize}" eq "8x22" ] ; then
drows=3636
inrows=6672
elif [ "${printsize}" eq "8x32" ] ; then
drows=3636
inrows=9708
else
echo "DS820 supportx 8x18, 8x26, 8x22, and 8x32 only"
fi
;;
*)
echo "Unsupported model!"
exit 1
;;
esac
# For 600dpi, double everything!
if [ ${dpi} == 600 ] ; then
@ -108,4 +133,4 @@ done
rm ${fadeinname} ${fadeoutname}
## Create PDF
gm convert -density ${dpi}x${dpi} ${panels} out.pdf
gm convert -density ${dpi}x${dpi} ${panels} ${outfile}

View File

@ -1,4 +1,4 @@
#gp_printername,vid,pid,type,gp_options
#gp_printername,vid,pid,type,gp_options[,pano_options]
#
# The goal here is to cover unique models within gutenprint itself.
# All print sizes need to be covered.

1 #gp_printername,vid,pid,type,gp_options #gp_printername,vid,pid,type,gp_options[,pano_options]
2 #
3 # The goal here is to cover unique models within gutenprint itself.
4 # All print sizes need to be covered.

View File

@ -48,6 +48,8 @@ my $rotor = 0;
my $rotor_circ = 0;
my $row = 0;
my $pano_mode = 0;
my $quiet = 1;
my $proc_count = 0;
my @children = ();
@ -59,6 +61,7 @@ my $convert_exec = "/usr/bin/convert";
my $pdftoraster_exec = "/usr/lib/cups/filter/pdftoraster";
my $rastertogutenprint_exec = "/usr/lib/cups/filter/rastertogutenprint.5.3";
my $backend_exec = "./dyesub_backend";
my $pano_exec = "./pano-split.sh";
$ENV{"STP_SUPPRESS_VERBOSE_MESSAGES"} = 1;
$ENV{"OMP_NUM_THREADS"} = 1;
@ -149,6 +152,13 @@ if ($proc_count > 1 && $kid > 0) {
$options .= "$x ";
}
# See if we're in panorama mode
if (defined($row[5])) {
$pano_mode = 1;
pop(@pages_set); # 1 "page"
pop(@copies_set); # 1 copy
}
my $rval;
my @args;
@ -179,6 +189,22 @@ if ($proc_count > 1 && $kid > 0) {
}
foreach my $pages (@pages_set) {
if ($pano_mode) {
# XXX generate panorama bitmap
my $pano_tmp = $input_image; # XXX
# Generate PDF by running through script.
@args = ($pano_exec, $pano_tmp, "${work_dir}$currow-${gp_name}.pdf", $gp_name, $row[5]);
if (!$quiet) {
print join(":", @args) . "\n";
}
$rval = run \@args;
if (!$rval) {
print("***** $row[0] $row[1] $row[2] $row[3] '$row[4]' '$row[5]' FAIL: pano-split.sh: $? -- " . join(":", @args) . "\n");
$error++;
next;
}
} else {
# generate PDF.
@args = ($convert_exec);
for (my $i = 0 ; $i < $pages ; $i++) {
@ -196,6 +222,7 @@ if ($proc_count > 1 && $kid > 0) {
$error++;
next;
}
}
# Generate raster from PDF
@args = ($pdftoraster_exec, $id, $user, $title, 1, $options, "${work_dir}$currow-${gp_name}.pdf");