96 #include <config_auto.h>
100 #include "allheaders.h"
106 static const l_int32 MinCompsForBinSort = 200;
109 static const l_float32 MinAngleToRotate = 0.001;
223 l_int32 connectivity,
228 l_int32 w, h, empty, changed, count;
234 return (
PIX *)ERROR_PTR(
"pixs not defined", __func__, NULL);
235 if (connectivity != 4 && connectivity != 8)
236 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", __func__, NULL);
239 return (
PIX *)ERROR_PTR(
"invalid type", __func__, NULL);
242 return (
PIX *)ERROR_PTR(
"invalid relation", __func__, NULL);
243 if (pchanged) *pchanged = FALSE;
262 if (pchanged) *pchanged = TRUE;
269 pixCopyResolution(pixd, pixs);
271 pixCopyText(pixd, pixs);
272 pixCopyInputFormat(pixd, pixs);
316 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
319 return (
PIXA *)ERROR_PTR(
"invalid type", __func__, NULL);
322 return (
PIXA *)ERROR_PTR(
"invalid relation", __func__, NULL);
365 l_int32 i, n, w, h, ival;
369 return (
NUMA *)ERROR_PTR(
"pixa not defined", __func__, NULL);
372 return (
NUMA *)ERROR_PTR(
"invalid type", __func__, NULL);
375 return (
NUMA *)ERROR_PTR(
"invalid relation", __func__, NULL);
379 for (i = 0; i < n; i++) {
399 if (((relation ==
L_SELECT_IF_LT) && (w < width || h < height)) ||
406 if (((relation ==
L_SELECT_IF_LT) && (w < width && h < height)) ||
413 L_WARNING(
"can't get here!\n", __func__);
450 l_int32 connectivity,
454 l_int32 w, h, empty, changed, count;
460 return (
PIX *)ERROR_PTR(
"pixs not defined", __func__, NULL);
461 if (connectivity != 4 && connectivity != 8)
462 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", __func__, NULL);
465 return (
PIX *)ERROR_PTR(
"invalid type", __func__, NULL);
466 if (pchanged) *pchanged = FALSE;
485 if (pchanged) *pchanged = TRUE;
492 pixCopyResolution(pixd, pixs);
494 pixCopyText(pixd, pixs);
495 pixCopyInputFormat(pixd, pixs);
529 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
532 return (
PIXA *)ERROR_PTR(
"invalid type", __func__, NULL);
577 l_int32 connectivity,
581 l_int32 w, h, empty, changed, count;
587 return (
PIX *)ERROR_PTR(
"pixs not defined", __func__, NULL);
588 if (connectivity != 4 && connectivity != 8)
589 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", __func__, NULL);
592 return (
PIX *)ERROR_PTR(
"invalid type", __func__, NULL);
593 if (pchanged) *pchanged = FALSE;
612 if (pchanged) *pchanged = TRUE;
619 pixCopyResolution(pixd, pixs);
621 pixCopyText(pixd, pixs);
622 pixCopyInputFormat(pixd, pixs);
656 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
659 return (
PIXA *)ERROR_PTR(
"invalid type", __func__, NULL);
703 l_int32 connectivity,
707 l_int32 w, h, empty, changed, count;
713 return (
PIX *)ERROR_PTR(
"pixs not defined", __func__, NULL);
714 if (connectivity != 4 && connectivity != 8)
715 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", __func__, NULL);
718 return (
PIX *)ERROR_PTR(
"invalid type", __func__, NULL);
719 if (pchanged) *pchanged = FALSE;
738 if (pchanged) *pchanged = TRUE;
745 pixCopyResolution(pixd, pixs);
747 pixCopyText(pixd, pixs);
748 pixCopyInputFormat(pixd, pixs);
786 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
789 return (
PIXA *)ERROR_PTR(
"invalid type", __func__, NULL);
833 l_int32 connectivity,
837 l_int32 w, h, empty, changed, count;
843 return (
PIX *)ERROR_PTR(
"pixs not defined", __func__, NULL);
844 if (connectivity != 4 && connectivity != 8)
845 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", __func__, NULL);
848 return (
PIX *)ERROR_PTR(
"invalid type", __func__, NULL);
849 if (pchanged) *pchanged = FALSE;
868 if (pchanged) *pchanged = TRUE;
875 pixCopyResolution(pixd, pixs);
877 pixCopyText(pixd, pixs);
878 pixCopyInputFormat(pixd, pixs);
916 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
919 return (
PIXA *)ERROR_PTR(
"invalid type", __func__, NULL);
962 l_int32 connectivity,
966 l_int32 w, h, empty, changed, count;
972 return (
PIX *)ERROR_PTR(
"pixs not defined", __func__, NULL);
973 if (connectivity != 4 && connectivity != 8)
974 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", __func__, NULL);
977 return (
PIX *)ERROR_PTR(
"invalid type", __func__, NULL);
978 if (pchanged) *pchanged = FALSE;
997 if (pchanged) *pchanged = TRUE;
1004 pixCopyResolution(pixd, pixs);
1006 pixCopyText(pixd, pixs);
1007 pixCopyInputFormat(pixd, pixs);
1045 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1048 return (
PIXA *)ERROR_PTR(
"invalid type", __func__, NULL);
1087 l_int32 connectivity,
1090 l_int32 n, i, count;
1095 if (pchanged) *pchanged = 0;
1097 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1099 return (
PIXA *)ERROR_PTR(
"nmin > nmax", __func__, NULL);
1100 if (connectivity != 4 && connectivity != 8)
1101 return (
PIXA *)ERROR_PTR(
"connectivity not 4 or 8", __func__, NULL);
1106 for (i = 0; i < n; i++) {
1109 if (count >= nmin && count <= nmax)
1145 l_int32 i, n, nbox, ival, nsave;
1151 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1153 return (
PIXA *)ERROR_PTR(
"na not defined", __func__, NULL);
1157 for (i = 0; i < n; i++) {
1159 if (ival == 1) nsave++;
1163 if (pchanged) *pchanged = FALSE;
1166 if (pchanged) *pchanged = TRUE;
1169 for (i = 0; i < n; i++) {
1171 if (ival == 0)
continue;
1203 l_int32 i, n, ival, x, y, w, h;
1208 return ERROR_INT(
"pixs not defined", __func__, 1);
1210 return ERROR_INT(
"pixa not defined", __func__, 1);
1212 return ERROR_INT(
"na not defined", __func__, 1);
1215 return ERROR_INT(
"pixa and na sizes not equal", __func__, 1);
1217 for (i = 0; i < n; i++) {
1254 l_int32 i, n, ival, x, y, w, h;
1259 return ERROR_INT(
"pixs not defined", __func__, 1);
1261 return ERROR_INT(
"pixa not defined", __func__, 1);
1263 return ERROR_INT(
"na not defined", __func__, 1);
1266 return ERROR_INT(
"pixa and na sizes not equal", __func__, 1);
1268 for (i = 0; i < n; i++) {
1305 l_int32 i, nval, npix, nbox, val, imaxval;
1312 if (perror) *perror = 0;
1314 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1316 return (
PIXA *)ERROR_PTR(
"str not defined", __func__, NULL);
1319 return (
PIXA *)ERROR_PTR(
"na not made", __func__, NULL);
1322 return (
PIXA *)ERROR_PTR(
"no indices found", __func__, NULL);
1325 imaxval = (l_int32)(maxval + 0.1);
1328 if (imaxval >= npix) {
1329 if (perror) *perror = 1;
1330 L_ERROR(
"max index = %d, size of pixa = %d\n", __func__, imaxval, npix);
1334 for (i = 0; i < nval; i++) {
1336 if (val < 0 || val >= npix) {
1337 L_ERROR(
"index %d out of range of pix\n", __func__, val);
1374 l_int32 n, x, y, w, h, same, maxd;
1380 return (
PIX *)ERROR_PTR(
"pixa not defined", __func__, pixs);
1382 if (index < 0 || index >= n)
1383 return (
PIX *)ERROR_PTR(
"invalid index", __func__, pixs);
1384 if (pixs && (pixGetDepth(pixs) != 1))
1385 return (
PIX *)ERROR_PTR(
"pixs not 1 bpp", __func__, pixs);
1388 return (
PIX *)ERROR_PTR(
"not all pix with d == 1", __func__, pixs);
1444 l_int32 i, n, nb, x, y, w, h;
1449 if (pnaindex) *pnaindex = NULL;
1451 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1459 return (
PIXA *)ERROR_PTR(
"invalid sort type", __func__, NULL);
1461 return (
PIXA *)ERROR_PTR(
"invalid sort order", __func__, NULL);
1463 return (
PIXA *)ERROR_PTR(
"invalid copy flag", __func__, NULL);
1467 L_INFO(
"no pix in pixa\n", __func__);
1470 if ((boxa = pixas->
boxa) == NULL)
1471 return (
PIXA *)ERROR_PTR(
"boxa not found!", __func__, NULL);
1478 L_WARNING(
"sort by x or y where all values are 0\n", __func__);
1481 return (
PIXA *)ERROR_PTR(
"boxa and pixa counts differ", __func__, NULL);
1484 if (n > MinCompsForBinSort &&
1488 return pixaBinSort(pixas, sorttype, sortorder, pnaindex, copyflag);
1492 return (
PIXA *)ERROR_PTR(
"na not made", __func__, NULL);
1493 for (i = 0; i < n; i++) {
1525 L_WARNING(
"invalid sort type\n", __func__);
1533 return (
PIXA *)ERROR_PTR(
"naindex not made", __func__, NULL);
1538 return (
PIXA *)ERROR_PTR(
"pixad not made", __func__, NULL);
1542 *pnaindex = naindex;
1582 l_int32 i, n, x, y, w, h;
1587 if (pnaindex) *pnaindex = NULL;
1589 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1593 return (
PIXA *)ERROR_PTR(
"invalid sort type", __func__, NULL);
1595 return (
PIXA *)ERROR_PTR(
"invalid sort order", __func__, NULL);
1597 return (
PIXA *)ERROR_PTR(
"invalid copy flag", __func__, NULL);
1600 if ((boxa = pixas->
boxa) == NULL)
1601 return (
PIXA *)ERROR_PTR(
"boxa not found", __func__, NULL);
1604 return (
PIXA *)ERROR_PTR(
"boxa and pixa counts differ", __func__, NULL);
1608 return (
PIXA *)ERROR_PTR(
"na not made", __func__, NULL);
1609 for (i = 0; i < n; i++) {
1629 L_WARNING(
"invalid sort type\n", __func__);
1637 return (
PIXA *)ERROR_PTR(
"naindex not made", __func__, NULL);
1642 return (
PIXA *)ERROR_PTR(
"pixad not made", __func__, NULL);
1646 *pnaindex = naindex;
1666 l_int32 i, n, index;
1672 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1674 return (
PIXA *)ERROR_PTR(
"naindex not defined", __func__, NULL);
1676 return (
PIXA *)ERROR_PTR(
"invalid copyflag", __func__, NULL);
1680 for (i = 0; i < n; i++) {
1705 l_int32 pixtot, ntot, i, j, n, nn, index;
1713 return (
PIXAA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1715 return (
PIXAA *)ERROR_PTR(
"naindex not defined", __func__, NULL);
1721 return (
PIXAA *)ERROR_PTR(
"element count mismatch", __func__, NULL);
1725 for (i = 0; i < n; i++) {
1729 for (j = 0; j < nn; j++) {
1774 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1776 return (
PIXA *)ERROR_PTR(
"invalid copyflag", __func__, NULL);
1778 first = L_MAX(0, first);
1779 if (last < 0) last = n - 1;
1781 return (
PIXA *)ERROR_PTR(
"invalid first", __func__, NULL);
1783 L_WARNING(
"last = %d is beyond max index = %d; adjusting\n",
1784 __func__, last, n - 1);
1788 return (
PIXA *)ERROR_PTR(
"first > last", __func__, NULL);
1790 npix = last - first + 1;
1792 for (i = first; i <= last; i++) {
1822 l_int32 n, npixa, i;
1827 return (
PIXAA *)ERROR_PTR(
"paas not defined", __func__, NULL);
1829 return (
PIXAA *)ERROR_PTR(
"invalid copyflag", __func__, NULL);
1831 first = L_MAX(0, first);
1832 if (last < 0) last = n - 1;
1834 return (
PIXAA *)ERROR_PTR(
"invalid first", __func__, NULL);
1836 L_WARNING(
"last = %d is beyond max index = %d; adjusting\n",
1837 __func__, last, n - 1);
1841 return (
PIXAA *)ERROR_PTR(
"first > last", __func__, NULL);
1843 npixa = last - first + 1;
1845 for (i = first; i <= last; i++) {
1881 PIXA *pixa1, *pixa2;
1885 return (
PIXAA *)ERROR_PTR(
"paas not defined", __func__, NULL);
1886 if (wd <= 0 && hd <= 0)
1887 return (
PIXAA *)ERROR_PTR(
"neither wd nor hd > 0", __func__, NULL);
1891 for (i = 0; i < n; i++) {
1927 l_int32 n, i, wd, hd;
1928 PIXA *pixa1, *pixa2;
1932 return (
PIXAA *)ERROR_PTR(
"paas not defined", __func__, NULL);
1934 return (
PIXAA *)ERROR_PTR(
"!nawd && !nahd", __func__, NULL);
1938 return (
PIXAA *)ERROR_PTR(
"nawd wrong size", __func__, NULL);
1940 return (
PIXAA *)ERROR_PTR(
"nahd wrong size", __func__, NULL);
1942 for (i = 0; i < n; i++) {
1978 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
1980 if (wd <= 0 && hd <= 0)
1985 for (i = 0; i < n; i++) {
1988 pixCopyText(pix2, pix1);
2021 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2025 for (i = 0; i < n; i++) {
2031 L_WARNING(
"relative scale to size failed; use a copy\n", __func__);
2059 BOXA *boxa1, *boxa2;
2064 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2065 if (scalex <= 0.0 || scaley <= 0.0)
2066 return (
PIXA *)ERROR_PTR(
"invalid scaling parameters", __func__, NULL);
2070 for (i = 0; i < n; i++) {
2072 pix2 =
pixScale(pix1, scalex, scaley);
2073 pixCopyText(pix2, pix1);
2108 BOXA *boxa1, *boxa2;
2113 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2114 if (scalex <= 0.0 || scaley <= 0.0)
2115 return (
PIXA *)ERROR_PTR(
"invalid scaling parameters", __func__, NULL);
2119 for (i = 0; i < n; i++) {
2122 pixCopyText(pix2, pix1);
2179 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2182 return (
PIXA *)ERROR_PTR(
"invalid type", __func__, NULL);
2184 return (
PIXA *)ERROR_PTR(
"invalid incolor", __func__, NULL);
2185 if (L_ABS(angle) < MinAngleToRotate)
2190 return (
PIXA *)ERROR_PTR(
"pixad not made", __func__, NULL);
2193 for (i = 0; i < n; i++) {
2196 return (
PIXA *)ERROR_PTR(
"pixs not found", __func__, NULL);
2198 pixd =
pixRotate(pixs, angle, type, incolor, width, height);
2225 l_int32 i, n, nb, w, h;
2231 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2232 if (rotation < 0 || rotation > 3)
2233 return (
PIXA *)ERROR_PTR(
"rotation not in {0,1,2,3}", __func__, NULL);
2240 return (
PIXA *)ERROR_PTR(
"pixad not made", __func__, NULL);
2241 for (i = 0; i < n; i++) {
2244 return (
PIXA *)ERROR_PTR(
"pixs not found", __func__, NULL);
2278 BOXA *boxas, *boxad;
2283 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2284 if (hshift == 0 && vshift == 0)
2290 return (
PIXA *)ERROR_PTR(
"pixad not made", __func__, NULL);
2291 for (i = 0; i < n; i++) {
2294 return (
PIXA *)ERROR_PTR(
"pixs not found", __func__, NULL);
2296 pixd =
pixTranslate(NULL, pixs, hshift, vshift, incolor);
2358 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, pixad);
2359 if (left < 0 || right < 0 || top < 0 || bot < 0)
2360 return (
PIXA *)ERROR_PTR(
"negative border added!", __func__, pixad);
2361 if (pixad && (pixad != pixas))
2362 return (
PIXA *)ERROR_PTR(
"pixad defined but != pixas", __func__, pixad);
2367 for (i = 0; i < n; i++) {
2379 for (i = 0; i < nbox; i++) {
2381 L_WARNING(
"box %d not found\n", __func__, i);
2417 l_int32 i, j, m, mb, n;
2423 if (pnaindex) *pnaindex = NULL;
2425 return (
PIXA *)ERROR_PTR(
"paa not defined", __func__, NULL);
2427 return (
PIXA *)ERROR_PTR(
"invalid copyflag", __func__, NULL);
2431 *pnaindex = naindex;
2436 for (i = 0; i < n; i++) {
2440 for (j = 0; j < m; j++) {
2472 l_int32 minw, minh, maxw, maxh, minpw, minph, maxpw, maxph, i, n;
2475 if (pminw) *pminw = 0;
2476 if (pminh) *pminh = 0;
2477 if (pmaxw) *pmaxw = 0;
2478 if (pmaxh) *pmaxh = 0;
2480 return ERROR_INT(
"paa not defined", __func__, 1);
2481 if (!pminw && !pmaxw && !pminh && !pmaxh)
2482 return ERROR_INT(
"no data can be returned", __func__, 1);
2484 minw = minh = 100000000;
2487 for (i = 0; i < n; i++) {
2501 if (pminw) *pminw = minw;
2502 if (pminh) *pminh = minh;
2503 if (pmaxw) *pmaxw = maxw;
2504 if (pmaxh) *pmaxh = maxh;
2524 l_int32 minw, minh, maxw, maxh, i, n, w, h;
2527 if (pminw) *pminw = 0;
2528 if (pminh) *pminh = 0;
2529 if (pmaxw) *pmaxw = 0;
2530 if (pmaxh) *pmaxh = 0;
2532 return ERROR_INT(
"pixa not defined", __func__, 1);
2533 if (!pminw && !pmaxw && !pminh && !pmaxh)
2534 return ERROR_INT(
"no data can be returned", __func__, 1);
2536 minw = minh = 1000000;
2539 for (i = 0; i < n; i++) {
2541 w = pixGetWidth(pix);
2542 h = pixGetHeight(pix);
2554 if (pminw) *pminw = minw;
2555 if (pminh) *pminh = minh;
2556 if (pmaxw) *pmaxw = maxw;
2557 if (pmaxh) *pmaxh = maxh;
2595 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2597 return (
PIXA *)ERROR_PTR(
"pixs not defined", __func__, NULL);
2601 return (
PIXA *)ERROR_PTR(
"pixad not made", __func__, NULL);
2603 for (i = 0; i < n; i++) {
2641 if (ppixad) *ppixad = NULL;
2642 if (pboxa) *pboxa = NULL;
2644 return ERROR_INT(
"pixas not defined", __func__, 1);
2645 if (!ppixad && !pboxa)
2646 return ERROR_INT(
"no output requested", __func__, 1);
2651 for (i = 0; i < n; i++) {
2691 l_int32 hascolor, maxdepth;
2694 return ERROR_INT(
"&depth not defined", __func__, 1);
2697 return ERROR_INT(
"pixa not defined", __func__, 1);
2726 l_int32 i, n, hascolor, d;
2731 return ERROR_INT(
"&hascolor not defined", __func__, 1);
2734 return ERROR_INT(
"pixa not defined", __func__, 1);
2738 for (i = 0; i < n; i++) {
2740 if ((cmap = pixGetColormap(pix)) != NULL)
2742 d = pixGetDepth(pix);
2744 if (d == 32 || hascolor == 1) {
2770 return ERROR_INT(
"&hascmap not defined", __func__, 1);
2773 return ERROR_INT(
"pixa not defined", __func__, 1);
2776 for (i = 0; i < n; i++) {
2778 cmap = pixGetColormap(pix);
2803 l_int32 i, n, d, d0;
2806 if (pmaxdepth) *pmaxdepth = 0;
2807 if (psame) *psame = TRUE;
2808 if (!pmaxdepth && !psame)
return 0;
2810 return ERROR_INT(
"pixa not defined", __func__, 1);
2812 return ERROR_INT(
"pixa is empty", __func__, 1);
2816 for (i = 0; i < n; i++) {
2822 if (d > maxd) maxd = d;
2825 if (pmaxdepth) *pmaxdepth = maxd;
2826 if (psame) *psame = same;
2852 l_int32 i, n, depth, same, hascmap, maxdepth;
2855 PIXA *pixa1, *pixad;
2858 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2860 return (
PIXA *)ERROR_PTR(
"no components", __func__, NULL);
2868 for (i = 0; i < n; i++) {
2884 for (i = 0; i < n; i++) {
2929 return (
PIXA *)ERROR_PTR(
"pixas not defined", __func__, NULL);
2931 return (
PIXA *)ERROR_PTR(
"no components", __func__, NULL);
2932 if (depth != 8 && depth != 32)
2933 return (
PIXA *)ERROR_PTR(
"depth not 8 or 32", __func__, NULL);
2938 L_WARNING(
"All pix are 1 bpp; converting to %d bpp\n", __func__, depth);
2940 L_WARNING(
"Lossy conversion: max rendering depth %d > input %d\n",
2941 __func__, maxd, depth);
2944 for (i = 0; i < n; i++) {
2947 pix2 = (pixGetDepth(pix1) == 32) ?
pixClone(pix1) :
2997 l_int32 i, j, n, empty1, empty2, same, sameboxa;
2998 BOXA *boxa1, *boxa2;
3002 if (pnaindex) *pnaindex = NULL;
3004 return ERROR_INT(
"&same not defined", __func__, 1);
3008 if (!pixa1 || !pixa2)
3009 return ERROR_INT(
"pixa1 and pixa2 not both defined", __func__, 1);
3020 if (!empty1 && !empty2) {
3021 boxaEqual(boxa1, boxa2, maxdist, &na, &sameboxa);
3031 if ((!empty1 && empty2) || (empty1 && !empty2))
3034 for (i = 0; i < n; i++) {
3081 return ERROR_INT(
"pixa not defined", __func__, 1);
3083 L_INFO(
"pixa contains no pix\n", __func__);
3089 for (i = 0; i < n; i++) {
l_ok boxGetGeometry(const BOX *box, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
boxGetGeometry()
void boxDestroy(BOX **pbox)
boxDestroy()
l_ok boxaReplaceBox(BOXA *boxa, l_int32 index, BOX *box)
boxaReplaceBox()
l_ok boxaGetBoxGeometry(BOXA *boxa, l_int32 index, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
boxaGetBoxGeometry()
l_ok boxaAddBox(BOXA *boxa, BOX *box, l_int32 copyflag)
boxaAddBox()
void boxaDestroy(BOXA **pboxa)
boxaDestroy()
l_int32 boxaGetCount(const BOXA *boxa)
boxaGetCount()
BOX * boxaGetBox(BOXA *boxa, l_int32 index, l_int32 accessflag)
boxaGetBox()
BOX * boxCreate(l_int32 x, l_int32 y, l_int32 w, l_int32 h)
boxCreate()
BOXA * boxaCreate(l_int32 n)
boxaCreate()
l_ok boxaEqual(BOXA *boxa1, BOXA *boxa2, l_int32 maxdist, NUMA **pnaindex, l_int32 *psame)
boxaEqual()
BOX * boxAdjustSides(BOX *boxd, BOX *boxs, l_int32 delleft, l_int32 delright, l_int32 deltop, l_int32 delbot)
boxAdjustSides()
BOX * boxRotateOrth(BOX *box, l_int32 w, l_int32 h, l_int32 rotation)
boxRotateOrth()
BOXA * boxaTransform(BOXA *boxas, l_int32 shiftx, l_int32 shifty, l_float32 scalex, l_float32 scaley)
boxaTransform()
l_ok boxaGetExtent(BOXA *boxa, l_int32 *pw, l_int32 *ph, BOX **pbox)
boxaGetExtent()
l_ok pixcmapHasColor(PIXCMAP *cmap, l_int32 *pcolor)
pixcmapHasColor()
l_ok pixEqual(PIX *pix1, PIX *pix2, l_int32 *psame)
pixEqual()
BOXA * pixConnComp(PIX *pixs, PIXA **ppixa, l_int32 connectivity)
pixConnComp()
l_ok pixCountConnComp(PIX *pixs, l_int32 connectivity, l_int32 *pcount)
pixCountConnComp()
l_ok numaAddNumber(NUMA *na, l_float32 val)
numaAddNumber()
l_int32 numaaGetNumberCount(NUMAA *naa)
numaaGetNumberCount()
NUMA * numaCreateFromString(const char *str)
numaCreateFromString()
NUMA * numaCreate(l_int32 n)
numaCreate()
l_int32 numaaGetCount(NUMAA *naa)
numaaGetCount()
NUMA * numaaGetNuma(NUMAA *naa, l_int32 index, l_int32 accessflag)
numaaGetNuma()
void numaDestroy(NUMA **pna)
numaDestroy()
l_int32 numaGetCount(NUMA *na)
numaGetCount()
l_ok numaGetIValue(NUMA *na, l_int32 index, l_int32 *pival)
numaGetIValue()
NUMA * numaMakeThresholdIndicator(NUMA *nas, l_float32 thresh, l_int32 type)
numaMakeThresholdIndicator()
NUMA * numaGetSortIndex(NUMA *na, l_int32 sortorder)
numaGetSortIndex()
l_ok numaGetMax(NUMA *na, l_float32 *pmaxval, l_int32 *pimaxloc)
numaGetMax()
NUMA * numaGetBinSortIndex(NUMA *nas, l_int32 sortorder)
numaGetBinSortIndex()
void pixDestroy(PIX **ppix)
pixDestroy()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
PIX * pixCopy(PIX *pixd, const PIX *pixs)
pixCopy()
PIX * pixCreateTemplate(const PIX *pixs)
pixCreateTemplate()
l_ok pixCopyColormap(PIX *pixd, const PIX *pixs)
pixCopyColormap()
PIX * pixCreate(l_int32 width, l_int32 height, l_int32 depth)
pixCreate()
PIX * pixClone(PIX *pixs)
pixClone()
PIX * pixAddBorderGeneral(PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_uint32 val)
pixAddBorderGeneral()
l_ok pixZero(PIX *pix, l_int32 *pempty)
pixZero()
NUMA * pixaCountPixels(PIXA *pixa)
pixaCountPixels()
PIX * pixAnd(PIX *pixd, PIX *pixs1, PIX *pixs2)
pixAnd()
NUMA * pixaFindAreaFraction(PIXA *pixa)
pixaFindAreaFraction()
NUMA * pixaFindPerimSizeRatio(PIXA *pixa)
pixaFindPerimSizeRatio()
NUMA * pixaFindPerimToAreaRatio(PIXA *pixa)
pixaFindPerimToAreaRatio()
PIX * pixClipRectangle(PIX *pixs, BOX *box, BOX **pboxc)
pixClipRectangle()
NUMA * pixaFindWidthHeightRatio(PIXA *pixa)
pixaFindWidthHeightRatio()
l_ok pixClipToForeground(PIX *pixs, PIX **ppixd, BOX **pbox)
pixClipToForeground()
@ L_SORT_BY_MIN_DIMENSION
@ L_SORT_BY_MAX_DIMENSION
PIXAA * pixaaCreate(l_int32 n)
pixaaCreate()
l_ok pixaAddPix(PIXA *pixa, PIX *pix, l_int32 copyflag)
pixaAddPix()
void pixaDestroy(PIXA **ppixa)
pixaDestroy()
l_ok pixaVerifyDepth(PIXA *pixa, l_int32 *psame, l_int32 *pmaxd)
pixaVerifyDepth()
BOX * pixaGetBox(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetBox()
l_int32 pixaGetBoxaCount(PIXA *pixa)
pixaGetBoxaCount()
l_ok pixaaAddPixa(PIXAA *paa, PIXA *pixa, l_int32 copyflag)
pixaaAddPixa()
PIXA * pixaCreate(l_int32 n)
pixaCreate()
l_ok pixaGetPixDimensions(PIXA *pixa, l_int32 index, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixaGetPixDimensions()
PIXA * pixaCopy(PIXA *pixa, l_int32 copyflag)
pixaCopy()
l_ok pixaReplacePix(PIXA *pixa, l_int32 index, PIX *pix, BOX *box)
pixaReplacePix()
l_int32 pixaGetCount(PIXA *pixa)
pixaGetCount()
l_ok pixaAddBox(PIXA *pixa, BOX *box, l_int32 copyflag)
pixaAddBox()
BOXA * pixaGetBoxa(PIXA *pixa, l_int32 accesstype)
pixaGetBoxa()
l_int32 pixaaGetCount(PIXAA *paa, NUMA **pna)
pixaaGetCount()
PIXA * pixaaGetPixa(PIXAA *paa, l_int32 index, l_int32 accesstype)
pixaaGetPixa()
PIX * pixaGetPix(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetPix()
l_ok pixaSetBoxa(PIXA *pixa, BOXA *boxa, l_int32 accesstype)
pixaSetBoxa()
PIXA * pixaSelectRange(PIXA *pixas, l_int32 first, l_int32 last, l_int32 copyflag)
pixaSelectRange()
l_ok pixaGetRenderingDepth(PIXA *pixa, l_int32 *pdepth)
pixaGetRenderingDepth()
PIXA * pixaSelectByWidthHeightRatio(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByWidthHeightRatio()
PIXA * pixaRotateOrth(PIXA *pixas, l_int32 rotation)
pixaRotateOrth()
l_ok pixaHasColor(PIXA *pixa, l_int32 *phascolor)
pixaHasColor()
PIXA * pixaSelectByAreaFraction(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByAreaFraction()
PIX * pixSelectBySize(PIX *pixs, l_int32 width, l_int32 height, l_int32 connectivity, l_int32 type, l_int32 relation, l_int32 *pchanged)
pixSelectBySize()
PIXA * pixaSelectByNumConnComp(PIXA *pixas, l_int32 nmin, l_int32 nmax, l_int32 connectivity, l_int32 *pchanged)
pixaSelectByNumConnComp()
PIX * pixaRenderComponent(PIX *pixs, PIXA *pixa, l_int32 index)
pixaRenderComponent()
l_ok pixaSizeRange(PIXA *pixa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh)
pixaSizeRange()
PIXAA * pixaSort2dByIndex(PIXA *pixas, NUMAA *naa, l_int32 copyflag)
pixaSort2dByIndex()
PIXA * pixaSelectByPerimSizeRatio(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByPerimSizeRatio()
PIXAA * pixaaScaleToSize(PIXAA *paas, l_int32 wd, l_int32 hd)
pixaaScaleToSize()
l_ok pixaaSizeRange(PIXAA *paa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh)
pixaaSizeRange()
l_ok pixaSetFullSizeBoxa(PIXA *pixa)
pixaSetFullSizeBoxa()
PIXA * pixaSelectByPerimToAreaRatio(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByPerimToAreaRatio()
PIXA * pixaSelectWithString(PIXA *pixas, const char *str, l_int32 *perror)
pixaSelectWithString()
PIX * pixSelectByAreaFraction(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByAreaFraction()
PIXA * pixaTranslate(PIXA *pixas, l_int32 hshift, l_int32 vshift, l_int32 incolor)
pixaTranslate()
PIXAA * pixaaSelectRange(PIXAA *paas, l_int32 first, l_int32 last, l_int32 copyflag)
pixaaSelectRange()
l_ok pixaAnyColormaps(PIXA *pixa, l_int32 *phascmap)
pixaAnyColormaps()
PIX * pixSelectByPerimToAreaRatio(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByPerimToAreaRatio()
PIXA * pixaScale(PIXA *pixas, l_float32 scalex, l_float32 scaley)
pixaScale()
l_ok pixRemoveWithIndicator(PIX *pixs, PIXA *pixa, NUMA *na)
pixRemoveWithIndicator()
PIXA * pixaConvertToGivenDepth(PIXA *pixas, l_int32 depth)
pixaConvertToGivenDepth()
PIXA * pixaScaleBySampling(PIXA *pixas, l_float32 scalex, l_float32 scaley)
pixaScaleBySampling()
l_ok pixAddWithIndicator(PIX *pixs, PIXA *pixa, NUMA *na)
pixAddWithIndicator()
PIX * pixSelectByWidthHeightRatio(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByWidthHeightRatio()
l_ok pixaClipToForeground(PIXA *pixas, PIXA **ppixad, BOXA **pboxa)
pixaClipToForeground()
PIXA * pixaAddBorderGeneral(PIXA *pixad, PIXA *pixas, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_uint32 val)
pixaAddBorderGeneral()
l_ok pixaGetDepthInfo(PIXA *pixa, l_int32 *pmaxdepth, l_int32 *psame)
pixaGetDepthInfo()
PIXA * pixaRotate(PIXA *pixas, l_float32 angle, l_int32 type, l_int32 incolor, l_int32 width, l_int32 height)
pixaRotate()
PIXA * pixaSortByIndex(PIXA *pixas, NUMA *naindex, l_int32 copyflag)
pixaSortByIndex()
PIXA * pixaSort(PIXA *pixas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex, l_int32 copyflag)
pixaSort()
PIXA * pixaBinSort(PIXA *pixas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex, l_int32 copyflag)
pixaBinSort()
PIXA * pixaSelectBySize(PIXA *pixas, l_int32 width, l_int32 height, l_int32 type, l_int32 relation, l_int32 *pchanged)
pixaSelectBySize()
PIXAA * pixaaScaleToSizeVar(PIXAA *paas, NUMA *nawd, NUMA *nahd)
pixaaScaleToSizeVar()
l_ok pixaEqual(PIXA *pixa1, PIXA *pixa2, l_int32 maxdist, NUMA **pnaindex, l_int32 *psame)
pixaEqual()
PIXA * pixaClipToPix(PIXA *pixas, PIX *pixs)
pixaClipToPix()
PIXA * pixaSelectByArea(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByArea()
PIXA * pixaScaleToSize(PIXA *pixas, l_int32 wd, l_int32 hd)
pixaScaleToSize()
PIXA * pixaaFlattenToPixa(PIXAA *paa, NUMA **pnaindex, l_int32 copyflag)
pixaaFlattenToPixa()
PIXA * pixaScaleToSizeRel(PIXA *pixas, l_int32 delw, l_int32 delh)
pixaScaleToSizeRel()
PIXA * pixaSelectWithIndicator(PIXA *pixas, NUMA *na, l_int32 *pchanged)
pixaSelectWithIndicator()
PIXA * pixaConvertToSameDepth(PIXA *pixas)
pixaConvertToSameDepth()
NUMA * pixaMakeSizeIndicator(PIXA *pixa, l_int32 width, l_int32 height, l_int32 type, l_int32 relation)
pixaMakeSizeIndicator()
PIX * pixSelectByPerimSizeRatio(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByPerimSizeRatio()
PIX * pixSelectByArea(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByArea()
PIX * pixaDisplay(PIXA *pixa, l_int32 w, l_int32 h)
pixaDisplay()
PIX * pixConvertTo8(PIX *pixs, l_int32 cmapflag)
pixConvertTo8()
PIX * pixConvertTo32(PIX *pixs)
pixConvertTo32()
PIX * pixTranslate(PIX *pixd, PIX *pixs, l_int32 hshift, l_int32 vshift, l_int32 incolor)
pixTranslate()
l_ok pixRasterop(PIX *pixd, l_int32 dx, l_int32 dy, l_int32 dw, l_int32 dh, l_int32 op, PIX *pixs, l_int32 sx, l_int32 sy)
pixRasterop()
PIX * pixRotate(PIX *pixs, l_float32 angle, l_int32 type, l_int32 incolor, l_int32 width, l_int32 height)
pixRotate()
PIX * pixRotateOrth(PIX *pixs, l_int32 quads)
pixRotateOrth()
PIX * pixScale(PIX *pixs, l_float32 scalex, l_float32 scaley)
pixScale()
PIX * pixScaleToSizeRel(PIX *pixs, l_int32 delw, l_int32 delh)
pixScaleToSizeRel()
PIX * pixScaleToSize(PIX *pixs, l_int32 wd, l_int32 hd)
pixScaleToSize()
PIX * pixScaleBySampling(PIX *pixs, l_float32 scalex, l_float32 scaley)
pixScaleBySampling()