diff options
Diffstat (limited to 'leptonica/prog/pixadisp_reg.c')
-rw-r--r-- | leptonica/prog/pixadisp_reg.c | 166 |
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); +} |