summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'leptonica/prog/pixadisp_reg.c')
-rw-r--r--leptonica/prog/pixadisp_reg.c166
1 files changed, 166 insertions, 0 deletions
diff --git a/leptonica/prog/pixadisp_reg.c b/leptonica/prog/pixadisp_reg.c
new file mode 100644
index 00000000..52116a44
--- /dev/null
+++ b/leptonica/prog/pixadisp_reg.c
@@ -0,0 +1,166 @@
+/*====================================================================*
+ - Copyright (C) 2001 Leptonica. All rights reserved.
+ -
+ - Redistribution and use in source and binary forms, with or without
+ - modification, are permitted provided that the following conditions
+ - are met:
+ - 1. Redistributions of source code must retain the above copyright
+ - notice, this list of conditions and the following disclaimer.
+ - 2. Redistributions in binary form must reproduce the above
+ - copyright notice, this list of conditions and the following
+ - disclaimer in the documentation and/or other materials
+ - provided with the distribution.
+ -
+ - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY
+ - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *====================================================================*/
+
+/*
+ * pixadisp_reg.c
+ *
+ * Regression test exercising various pixaDisplay*() functions.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config_auto.h>
+#endif /* HAVE_CONFIG_H */
+
+#include "allheaders.h"
+
+int main(int argc,
+ char **argv)
+{
+l_int32 ws, hs, ncols;
+BOX *box;
+BOXA *boxa;
+PIX *pixs, *pix32, *pix1, *pix2, *pix3, *pix4;
+PIXA *pixa, *pixa1, *pixa2, *pixa3;
+L_REGPARAMS *rp;
+
+ if (regTestSetup(argc, argv, &rp))
+ return 1;
+
+ pixa = pixaCreate(0);
+ pix32 = pixRead("marge.jpg");
+ pixs = pixRead("feyn.tif");
+ box = boxCreate(683, 799, 970, 479);
+ pix1 = pixClipRectangle(pixs, box, NULL);
+ boxDestroy(&box);
+ regTestWritePixAndCheck(rp, pix1, IFF_PNG); /* 0 */
+ pixaAddPix(pixa, pix1, L_INSERT);
+
+ /* Generate pixa2 from pixs and pixa3 from pix1 */
+ boxa = pixConnComp(pixs, &pixa1, 8);
+ pixa2 = pixaSelectBySize(pixa1, 60, 60, L_SELECT_IF_BOTH,
+ L_SELECT_IF_LTE, NULL);
+ pixaDestroy(&pixa1);
+ boxaDestroy(&boxa);
+ boxa = pixConnComp(pix1, &pixa3, 8);
+ boxaDestroy(&boxa);
+
+ /* pixaDisplay() */
+ pixGetDimensions(pixs, &ws, &hs, NULL);
+ pix2 = pixaDisplay(pixa2, ws, hs);
+ regTestWritePixAndCheck(rp, pix2, IFF_PNG); /* 1 */
+ pixaAddPix(pixa, pix2, L_INSERT);
+ pixDestroy(&pixs);
+
+ /* pixaDisplayRandomCmap() */
+ pix2 = pixaDisplayRandomCmap(pixa2, ws, hs); /* black bg */
+ regTestWritePixAndCheck(rp, pix2, IFF_PNG); /* 2 */
+ pixaAddPix(pixa, pix2, L_COPY);
+ pixcmapResetColor(pixGetColormap(pix2), 0, 255, 255, 255); /* white bg */
+ regTestWritePixAndCheck(rp, pix2, IFF_PNG); /* 3 */
+ pixaAddPix(pixa, pix2, L_INSERT);
+ pixaDestroy(&pixa2);
+
+ /* pixaDisplayOnLattice() */
+ pix2 = pixaDisplayOnLattice(pixa3, 50, 50, &ncols, &boxa);
+ regTestWritePixAndCheck(rp, pix2, IFF_PNG); /* 4 */
+ pixaAddPix(pixa, pix2, L_INSERT);
+ lept_stderr("Number of columns = %d; number of boxes: %d\n",
+ ncols, boxaGetCount(boxa));
+ boxaDestroy(&boxa);
+
+ /* pixaDisplayUnsplit() */
+ pixa1 = pixaSplitPix(pix32, 5, 7, 10, 0x0000ff00);
+ pix2 = pixaDisplayUnsplit(pixa1, 5, 7, 10, 0x00ff0000);
+ regTestWritePixAndCheck(rp, pix2, IFF_JFIF_JPEG); /* 5 */
+ pixaAddPix(pixa, pix2, L_INSERT);
+ pixaDestroy(&pixa1);
+
+ /* pixaDisplayTiled() */
+ pix2 = pixaDisplayTiled(pixa3, 1000, 0, 10);
+ regTestWritePixAndCheck(rp, pix2, IFF_PNG); /* 6 */
+ pixaAddPix(pixa, pix2, L_INSERT);
+
+ /* pixaDisplayTiledInRows() */
+ pix2 = pixaDisplayTiledInRows(pixa3, 1, 1000, 1.0, 0, 10, 2);
+ regTestWritePixAndCheck(rp, pix2, IFF_PNG); /* 7 */
+ pixaAddPix(pixa, pix2, L_INSERT);
+
+ /* pixaDisplayTiledAndScaled() */
+ pix2 = pixaDisplayTiledAndScaled(pixa3, 1, 25, 20, 0, 5, 0);
+ regTestWritePixAndCheck(rp, pix2, IFF_PNG); /* 8 */
+ pixaAddPix(pixa, pix2, L_INSERT);
+ pixaDestroy(&pixa3);
+
+ pixa1 = pixaCreate(10);
+ pix2 = pixRankFilter(pix32, 8, 8, 0.5);
+ pixaAddPix(pixa1, pix2, L_INSERT);
+ pix3 = pixScale(pix32, 0.5, 0.5);
+ pix2 = pixRankFilter(pix3, 8, 8, 0.5);
+ pixaAddPix(pixa1, pix2, L_INSERT);
+ pixDestroy(&pix3);
+ pix3 = pixScale(pix32, 0.25, 0.25);
+ pix2 = pixRankFilter(pix3, 8, 8, 0.5);
+ pixaAddPix(pixa1, pix2, L_INSERT);
+ pixDestroy(&pix3);
+ pix2 = pixaDisplayTiledAndScaled(pixa1, 32, 500, 3, 0, 25, 0);
+ regTestWritePixAndCheck(rp, pix2, IFF_JFIF_JPEG); /* 9 */
+ pixaAddPix(pixa, pix2, L_INSERT);
+ pixaDestroy(&pixa1);
+ pixDestroy(&pix32);
+
+ /* pixaMakeFromTiledPix() and pixaDisplayOnLattice() */
+ pix1 = pixRead("sevens.tif");
+ pixa1 = pixaMakeFromTiledPix(pix1, 20, 30, 0, 0, NULL);
+ pix2 = pixaDisplayOnLattice(pixa1, 20, 30, NULL, NULL);
+ regTestComparePix(rp, pix1, pix2); /* 10 */
+ pix3 = pixaDisplayOnLattice(pixa1, 20, 30, NULL, &boxa);
+ pixa2 = pixaMakeFromTiledPix(pix3, 0, 0, 0, 0, boxa);
+ pix4 = pixaDisplayOnLattice(pixa2, 20, 30, NULL, NULL);
+ regTestComparePix(rp, pix2, pix4); /* 11 */
+ pixaAddPix(pixa, pixScale(pix4, 2.5, 2.5), L_INSERT);
+ pixDestroy(&pix1);
+ pixDestroy(&pix2);
+ pixDestroy(&pix3);
+ pixDestroy(&pix4);
+ boxaDestroy(&boxa);
+ pixaDestroy(&pixa1);
+ pixaDestroy(&pixa2);
+
+ if (rp->display) {
+ lept_mkdir("lept/padisp");
+ lept_stderr("Writing to: /tmp/lept/padisp/pixadisp.pdf\n");
+ pixaConvertToPdf(pixa, 0, 1.0, L_FLATE_ENCODE, 0, "pixadisp-test",
+ "/tmp/lept/padisp/pixadisp.pdf");
+ lept_stderr("Writing to: /tmp/lept/padisp/pixadisp.jpg\n");
+ pix1 = pixaDisplayTiledInColumns(pixa, 2, 0.5, 30, 2);
+ pixWrite("/tmp/lept/padisp/pixadisp.jpg", pix1, IFF_JFIF_JPEG);
+ pixDisplay(pix1, 100, 100);
+ pixDestroy(&pix1);
+ }
+
+ pixaDestroy(&pixa);
+ return regTestCleanup(rp);
+}