summaryrefslogtreecommitdiff
path: root/gs
diff options
context:
space:
mode:
Diffstat (limited to 'gs')
-rwxr-xr-xgs/toolbin/bmpcmp.c82
-rwxr-xr-xgs/toolbin/htmldiff.pl41
2 files changed, 77 insertions, 46 deletions
diff --git a/gs/toolbin/bmpcmp.c b/gs/toolbin/bmpcmp.c
index ce631501f..28fc2b234 100755
--- a/gs/toolbin/bmpcmp.c
+++ b/gs/toolbin/bmpcmp.c
@@ -64,7 +64,7 @@ static unsigned char *bmp_load_sub(unsigned char *bmp,
int *height_ret,
int *span,
int *bpp,
- int image_offset,
+ int image_offset,
int filelen)
{
int size, src_bpp, dst_bpp, comp, xdpi, ydpi, i, x, y, cols;
@@ -160,7 +160,7 @@ static unsigned char *bmp_load_sub(unsigned char *bmp,
word_width = width * (src_bpp>>3);
word_width += 3;
word_width &= ~3;
-
+
dst = Malloc(word_width * height);
/* Now we do the actual conversion */
@@ -857,20 +857,20 @@ static void diff_bmp(unsigned char *bmp,
}
}
}
-
-static void save_meta(BBox *bbox, char *str, int w, int h, int page)
-{
- FILE *file;
-
- file = fopen(str, "wb");
- if (file == NULL)
- return;
-
- fprintf(file, "PW=%d\nPH=%d\nX=%d\nY=%d\nW=%d\nH=%d\nPAGE=%d\n",
- w, h, bbox->xmin, h-bbox->ymax,
- bbox->xmax-bbox->xmin, bbox->ymax-bbox->ymin, page);
- fclose(file);
-}
+
+static void save_meta(BBox *bbox, char *str, int w, int h, int page)
+{
+ FILE *file;
+
+ file = fopen(str, "wb");
+ if (file == NULL)
+ return;
+
+ fprintf(file, "PW=%d\nPH=%d\nX=%d\nY=%d\nW=%d\nH=%d\nPAGE=%d\n",
+ w, h, bbox->xmin, h-bbox->ymax,
+ bbox->xmax-bbox->xmin, bbox->ymax-bbox->ymin, page);
+ fclose(file);
+}
static void save_bmp(unsigned char *data,
BBox *bbox,
@@ -952,22 +952,25 @@ int main(int argc, char *argv[])
int nx, ny, n;
int basenum;
int imagecount;
+ int maxdiffs;
unsigned char *bmp;
unsigned char *bmp2;
BBox bbox, bbox2;
BBox *boxlist;
char str1[256];
char str2[256];
- char str3[256];
- char str4[256];
+ char str3[256];
+ char str4[256];
ImageReader image1, image2;
if (argc < 4)
{
- fprintf(stderr, "Syntax: bmpcmp <file1> <file2> <outfile_root> [<basenum>]\n");
+ fprintf(stderr, "Syntax: bmpcmp <file1> <file2> <outfile_root> [<basenum>] [<maxdiffs>]\n");
fprintf(stderr, " <file1> and <file2> can be bmp, ppm, pgm or pbm files.\n");
- fprintf(stderr, " This will produce a series of <outfile_root>.<number>.bmp files");
- fprintf(stderr, " and a series of <outfile_root>.<number>.meta files.\n");
+ fprintf(stderr, " This will produce a series of <outfile_root>.<number>.bmp files\n");
+ fprintf(stderr, " and a series of <outfile_root>.<number>.meta files.\n");
+ fprintf(stderr, " The maxdiffs value determines the maximum number of bitmaps\n");
+ fprintf(stderr, " produced - 0 (or unsupplied) is taken to mean unlimited.\n");
exit(EXIT_FAILURE);
}
@@ -979,6 +982,15 @@ int main(int argc, char *argv[])
{
basenum = 0;
}
+
+ if (argc > 5)
+ {
+ maxdiffs = atoi(argv[5]);
+ }
+ else
+ {
+ maxdiffs = 0;
+ }
image_open(&image1, argv[1]);
image_open(&image2, argv[2]);
@@ -1092,12 +1104,12 @@ int main(int argc, char *argv[])
rediff(bmp, bmp2, s, bpp, boxlist);
if (!BBox_valid(boxlist))
continue;
- sprintf(str1, "%s.%d.bmp", argv[3], n);
- sprintf(str2, "%s.%d.bmp", argv[3], n+1);
+ sprintf(str1, "%s.%05d.bmp", argv[3], n);
+ sprintf(str2, "%s.%05d.bmp", argv[3], n+1);
save_bmp(bmp, boxlist, s, bpp, str1);
- save_bmp(bmp2, boxlist, s, bpp, str2);
- sprintf(str4, "%s.%d.meta", argv[3], n);
- save_meta(boxlist, str4, w, h, imagecount-1);
+ save_bmp(bmp2, boxlist, s, bpp, str2);
+ sprintf(str4, "%s.%05d.meta", argv[3], n);
+ save_meta(boxlist, str4, w, h, imagecount);
n += 3;
}
}
@@ -1111,12 +1123,28 @@ int main(int argc, char *argv[])
boxlist++;
if (!BBox_valid(boxlist))
continue;
- sprintf(str3, "%s.%d.bmp", argv[3], n+2);
+ sprintf(str3, "%s.%05d.bmp", argv[3], n+2);
save_bmp(bmp, boxlist, s, bpp, str3);
n += 3;
}
}
basenum = n;
+
+ boxlist -= nx*ny;
+ free(boxlist);
+ free(bmp);
+ free(bmp2);
+
+ /* If there is a maximum set */
+ if (maxdiffs > 0)
+ {
+ /* Check to see we haven't exceeded it */
+ maxdiffs--;
+ if (maxdiffs == 0)
+ {
+ break;
+ }
+ }
}
/* If one loaded, and the other didn't - that's an error */
diff --git a/gs/toolbin/htmldiff.pl b/gs/toolbin/htmldiff.pl
index cd4263099..8e7b8a2ec 100755
--- a/gs/toolbin/htmldiff.pl
+++ b/gs/toolbin/htmldiff.pl
@@ -620,28 +620,31 @@ while (<>)
unlink $tmp2;
# Add the files to the HTML, converting to PNG if required.
- while (stat($outdir."/out.".$images.".bmp"))
+ while (stat($outdir."/out.".sprintf("%05d",$images).".bmp"))
{
$suffix = ".bmp";
+ $imstr1 = sprintf("%05d",$images);
+ $imstr2 = sprintf("%05d",$images+1);
+ $imstr3 = sprintf("%05d",$images+2);
if ($pngize)
{
$cmd = $convertexe." ";
- $cmd .= $outdir."/out.".$images.".bmp ";
- $cmd .= $outdir."/out.".$images.".png";
+ $cmd .= $outdir."/out.$imstr1.bmp ";
+ $cmd .= $outdir."/out.$imstr1.png";
$cmd2 = $convertexe." ";
- $cmd2 .= $outdir."/out.".($images+1).".bmp ";
- $cmd2 .= $outdir."/out.".($images+1).".png";
+ $cmd2 .= $outdir."/out.$imstr2.bmp ";
+ $cmd2 .= $outdir."/out.$imstr2.png";
$cmd3 = $convertexe." ";
- $cmd3 .= $outdir."/out.".($images+2).".bmp ";
- $cmd3 .= $outdir."/out.".($images+2).".png";
+ $cmd3 .= $outdir."/out.$imstr3.bmp ";
+ $cmd3 .= $outdir."/out.$imstr3.png";
runjobs3($cmd, $cmd2, $cmd3, $html, $iframe, "convert");
- unlink $outdir."/out.".$images.".bmp";
- unlink $outdir."/out.".($images+1).".bmp";
- unlink $outdir."/out.".($images+2).".bmp";
+ unlink $outdir."/out.$imstr1.bmp";
+ unlink $outdir."/out.$imstr2.bmp";
+ unlink $outdir."/out.$imstr3.bmp";
$suffix = ".png";
}
- $metafile = $outdir."/out.".$images.".meta";
+ $metafile = $outdir."/out.$imstr.meta";
$meta{"X"} = 0;
$meta{"Y"} = 0;
$meta{"PW"} = 0;
@@ -667,16 +670,16 @@ while (<>)
$mousemove = "onmousemove=\"coord(event,this,".$images.",".$meta{"X"}.",".$meta{"Y"}.")\"";
if (!$iframes) {
- print $html "<TABLE><TR><TD><IMG SRC=\"$framedir/out.".$images.$suffix."\" onMouseOver=\"swap(".$images.")\" onMouseOut=\"swap(".($images+1).")\" NAME=\"compare".$images."\" BORDER=1 TITLE=\"Candidate<->Reference: ".$file." page=".$page." res=".$res."\" ".$mousemove."></TD>";
- print $html "<TD><IMG SRC=\"$framedir/out.".($images+1).$suffix."\" NAME=\"compare".($images+1)."\" BORDER=1 TITLE=\"Reference: ".$file." page=".$page." res=".$res."\" ".$mousemove."></TD>";
- print $html "<TD><IMG SRC=\"$framedir/out.".($images+2).$suffix."\" BORDER=1 TITLE=\"Diff: ".$file." page=".$page." res=".$res."\" ".$mousemove."></TD></TR>";
- print $html "<TR><TD COLSPAN=3><FORM name=\"Coord".$images."\"><LABEL for=\"X\">Page=".$page." PageSize=".$meta{"PW"}."x".$meta{"PH"}." Res=".$res." TopLeft=(".$meta{"X"}.",".$meta{"Y"}.") W=".$meta{"W"}." H=".$meta{"H"}." </LABEL><INPUT type=\"text\" name=\"X\" value=0 size=3>X<INPUT type=\"text\" name=\"Y\" value=0 size=3>Y</FORM></TD></TR></TABLE><BR>";
+ print $html "<TABLE><TR><TD><IMG SRC=\"$framedir/out.$imstr1$suffix\" onMouseOver=\"swap($images)\" onMouseOut=\"swap($images)\" NAME=\"compare$images\" BORDER=1 TITLE=\"Candidate<->Reference: $file page=$page res=$res\" $mousemove></TD>";
+ print $html "<TD><IMG SRC=\"$framedir/out.$imstr2$suffix\" NAME=\"compare".($images+1)."\" BORDER=1 TITLE=\"Reference: $file page=$page res=$res\" $mousemove></TD>";
+ print $html "<TD><IMG SRC=\"$framedir/out.$imstr3$suffix\" BORDER=1 TITLE=\"Diff: $file page=$page res=$res\" $mousemove></TD></TR>";
+ print $html "<TR><TD COLSPAN=3><FORM name=\"Coord$images\"><LABEL for=\"X\">Page=$page PageSize=".$meta{"PW"}."x".$meta{"PH"}." Res=$res TopLeft=(".$meta{"X"}.",".$meta{"Y"}.") W=".$meta{"W"}." H=".$meta{"H"}." </LABEL><INPUT type=\"text\" name=\"X\" value=0 size=3>X<INPUT type=\"text\" name=\"Y\" value=0 size=3>Y</FORM></TD></TR></TABLE><BR>";
}
- print $iframe "<TABLE><TR><TD><IMG SRC=\"out.".$images.$suffix."\" onMouseOver=\"swap(".$images.")\" onMouseOut=\"swap(".($images+1).")\" NAME=\"compare".$images."\" BORDER=1 TITLE=\"Candidate<->Reference: ".$file." page=".$page." res=".$res."\" ".$mousemove."></TD>";
- print $iframe "<TD><IMG SRC=\"out.".($images+1).$suffix."\" NAME=\"compare".($images+1)."\" BORDER=1 TITLE=\"Reference: ".$file." page=".$page." res=".$res."\" ".$mousemove."></TD>";
- print $iframe "<TD><IMG SRC=\"out.".($images+2).$suffix."\" BORDER=1 TITLE=\"Diff: ".$file." page=".$page." res=".$res."\" ".$mousemove."></TD></TR>";
- print $iframe "<TR><TD COLSPAN=3><FORM name=\"Coord".$images."\"><LABEL for=\"X\">Page=".$page." PageSize=".$meta{"PW"}."x".$meta{"PH"}." Res=".$res." TopLeft=(".$meta{"X"}.",".$meta{"Y"}.") W=".$meta{"W"}." H=".$meta{"H"}." </LABEL><INPUT type=\"text\" name=\"X\" value=0 size=3>X<INPUT type=\"text\" name=\"Y\" value=0 size=3>Y</FORM></TD></TR></TABLE><BR>";
+ print $iframe "<TABLE><TR><TD><IMG SRC=\"out.$imstr1$suffix\" onMouseOver=\"swap($images)\" onMouseOut=\"swap($images)\" NAME=\"compare$images\" BORDER=1 TITLE=\"Candidate<->Reference: $file page=$page res=$res\" $mousemove></TD>";
+ print $iframe "<TD><IMG SRC=\"out.$imstr2$suffix\" NAME=\"compare".($images+1)."\" BORDER=1 TITLE=\"Reference: $file page=$page res=$res\" $mousemove></TD>";
+ print $iframe "<TD><IMG SRC=\"out.$imstr3$suffix\" BORDER=1 TITLE=\"Diff: $file page=$page res=$res\" $mousemove></TD></TR>";
+ print $iframe "<TR><TD COLSPAN=3><FORM name=\"Coord$images\"><LABEL for=\"X\">Page=$page PageSize=".$meta{"PW"}."x".$meta{"PH"}." Res=$res TopLeft=(".$meta{"X"}.",".$meta{"Y"}.") W=".$meta{"W"}." H=".$meta{"H"}." </LABEL><INPUT type=\"text\" name=\"X\" value=0 size=3>X<INPUT type=\"text\" name=\"Y\" value=0 size=3>Y</FORM></TD></TR></TABLE><BR>";
$images += 3;
$diffs++;
$setsthisfile++;