93 #include "allheaders.h" 98 static const l_int32 MIN_COMPS_FOR_BIN_SORT = 200;
101 static const l_float32 MIN_ANGLE_TO_ROTATE = 0.001;
215 l_int32 connectivity,
220 l_int32 w, h, empty, changed, count;
225 PROCNAME(
"pixSelectBySize");
228 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
229 if (connectivity != 4 && connectivity != 8)
230 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", procName, NULL);
233 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
236 return (
PIX *)ERROR_PTR(
"invalid relation", procName, NULL);
237 if (pchanged) *pchanged = FALSE;
256 if (pchanged) *pchanged = TRUE;
263 pixCopyResolution(pixd, pixs);
265 pixCopyText(pixd, pixs);
266 pixCopyInputFormat(pixd, pixs);
309 PROCNAME(
"pixaSelectBySize");
312 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
315 return (
PIXA *)ERROR_PTR(
"invalid type", procName, NULL);
318 return (
PIXA *)ERROR_PTR(
"invalid relation", procName, NULL);
361 l_int32 i, n, w, h, ival;
364 PROCNAME(
"pixaMakeSizeIndicator");
367 return (
NUMA *)ERROR_PTR(
"pixa not defined", procName, NULL);
370 return (
NUMA *)ERROR_PTR(
"invalid type", procName, NULL);
373 return (
NUMA *)ERROR_PTR(
"invalid relation", procName, NULL);
377 for (i = 0; i < n; i++) {
397 if (((relation ==
L_SELECT_IF_LT) && (w < width || h < height)) ||
404 if (((relation ==
L_SELECT_IF_LT) && (w < width && h < height)) ||
411 L_WARNING(
"can't get here!\n", procName);
448 l_int32 connectivity,
452 l_int32 w, h, empty, changed, count;
457 PROCNAME(
"pixSelectByPerimToAreaRatio");
460 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
461 if (connectivity != 4 && connectivity != 8)
462 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", procName, NULL);
465 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
466 if (pchanged) *pchanged = FALSE;
485 if (pchanged) *pchanged = TRUE;
492 pixCopyResolution(pixd, pixs);
494 pixCopyText(pixd, pixs);
495 pixCopyInputFormat(pixd, pixs);
528 PROCNAME(
"pixaSelectByPerimToAreaRatio");
531 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
534 return (
PIXA *)ERROR_PTR(
"invalid type", procName, NULL);
579 l_int32 connectivity,
583 l_int32 w, h, empty, changed, count;
588 PROCNAME(
"pixSelectByPerimSizeRatio");
591 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
592 if (connectivity != 4 && connectivity != 8)
593 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", procName, NULL);
596 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
597 if (pchanged) *pchanged = FALSE;
616 if (pchanged) *pchanged = TRUE;
623 pixCopyResolution(pixd, pixs);
625 pixCopyText(pixd, pixs);
626 pixCopyInputFormat(pixd, pixs);
659 PROCNAME(
"pixaSelectByPerimSizeRatio");
662 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
665 return (
PIXA *)ERROR_PTR(
"invalid type", procName, NULL);
709 l_int32 connectivity,
713 l_int32 w, h, empty, changed, count;
718 PROCNAME(
"pixSelectByAreaFraction");
721 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
722 if (connectivity != 4 && connectivity != 8)
723 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", procName, NULL);
726 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
727 if (pchanged) *pchanged = FALSE;
746 if (pchanged) *pchanged = TRUE;
753 pixCopyResolution(pixd, pixs);
755 pixCopyText(pixd, pixs);
756 pixCopyInputFormat(pixd, pixs);
793 PROCNAME(
"pixaSelectByAreaFraction");
796 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
799 return (
PIXA *)ERROR_PTR(
"invalid type", procName, NULL);
842 l_int32 connectivity,
846 l_int32 w, h, empty, changed, count;
851 PROCNAME(
"pixSelectByWidthHeightRatio");
854 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
855 if (connectivity != 4 && connectivity != 8)
856 return (
PIX *)ERROR_PTR(
"connectivity not 4 or 8", procName, NULL);
859 return (
PIX *)ERROR_PTR(
"invalid type", procName, NULL);
860 if (pchanged) *pchanged = FALSE;
879 if (pchanged) *pchanged = TRUE;
886 pixCopyResolution(pixd, pixs);
888 pixCopyText(pixd, pixs);
889 pixCopyInputFormat(pixd, pixs);
926 PROCNAME(
"pixaSelectByWidthHeightRatio");
929 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
932 return (
PIXA *)ERROR_PTR(
"invalid type", procName, NULL);
971 l_int32 connectivity,
979 PROCNAME(
"pixaSelectByNumConnComp");
981 if (pchanged) *pchanged = 0;
983 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
985 return (
PIXA *)ERROR_PTR(
"nmin > nmax", procName, NULL);
986 if (connectivity != 4 && connectivity != 8)
987 return (
PIXA *)ERROR_PTR(
"connectivity not 4 or 8", procName, NULL);
992 for (i = 0; i < n; i++) {
995 if (count >= nmin && count <= nmax)
1031 l_int32 i, n, nbox, ival, nsave;
1036 PROCNAME(
"pixaSelectWithIndicator");
1039 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1041 return (
PIXA *)ERROR_PTR(
"na not defined", procName, NULL);
1045 for (i = 0; i < n; i++) {
1047 if (ival == 1) nsave++;
1051 if (pchanged) *pchanged = FALSE;
1054 if (pchanged) *pchanged = TRUE;
1057 for (i = 0; i < n; i++) {
1059 if (ival == 0)
continue;
1091 l_int32 i, n, ival, x, y, w, h;
1095 PROCNAME(
"pixRemoveWithIndicator");
1098 return ERROR_INT(
"pixs not defined", procName, 1);
1100 return ERROR_INT(
"pixa not defined", procName, 1);
1102 return ERROR_INT(
"na not defined", procName, 1);
1105 return ERROR_INT(
"pixa and na sizes not equal", procName, 1);
1107 for (i = 0; i < n; i++) {
1144 l_int32 i, n, ival, x, y, w, h;
1148 PROCNAME(
"pixAddWithIndicator");
1151 return ERROR_INT(
"pixs not defined", procName, 1);
1153 return ERROR_INT(
"pixa not defined", procName, 1);
1155 return ERROR_INT(
"na not defined", procName, 1);
1158 return ERROR_INT(
"pixa and na sizes not equal", procName, 1);
1160 for (i = 0; i < n; i++) {
1197 l_int32 i, nval, npix, nbox, val, imaxval;
1204 PROCNAME(
"pixaSelectWithString");
1206 if (perror) *perror = 0;
1208 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1210 return (
PIXA *)ERROR_PTR(
"str not defined", procName, NULL);
1213 return (
PIXA *)ERROR_PTR(
"na not made", procName, NULL);
1216 return (
PIXA *)ERROR_PTR(
"no indices found", procName, NULL);
1219 imaxval = (l_int32)(maxval + 0.1);
1222 if (imaxval >= npix) {
1223 if (perror) *perror = 1;
1224 L_ERROR(
"max index = %d, size of pixa = %d\n", procName, imaxval, npix);
1228 for (i = 0; i < nval; i++) {
1230 if (val < 0 || val >= npix) {
1231 L_ERROR(
"index %d out of range of pix\n", procName, val);
1268 l_int32 n, x, y, w, h, same, maxd;
1273 PROCNAME(
"pixaRenderComponent");
1276 return (
PIX *)ERROR_PTR(
"pixa not defined", procName, pixs);
1278 if (index < 0 || index >= n)
1279 return (
PIX *)ERROR_PTR(
"invalid index", procName, pixs);
1280 if (pixs && (pixGetDepth(pixs) != 1))
1281 return (
PIX *)ERROR_PTR(
"pixs not 1 bpp", procName, pixs);
1284 return (
PIX *)ERROR_PTR(
"not all pix with d == 1", procName, pixs);
1340 l_int32 i, n, nb, x, y, w, h;
1345 PROCNAME(
"pixaSort");
1347 if (pnaindex) *pnaindex = NULL;
1349 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1357 return (
PIXA *)ERROR_PTR(
"invalid sort type", procName, NULL);
1359 return (
PIXA *)ERROR_PTR(
"invalid sort order", procName, NULL);
1361 return (
PIXA *)ERROR_PTR(
"invalid copy flag", procName, NULL);
1365 L_INFO(
"no pix in pixa\n", procName);
1368 if ((boxa = pixas->
boxa) == NULL)
1369 return (
PIXA *)ERROR_PTR(
"boxa not found!", procName, NULL);
1376 L_WARNING(
"sort by x or y where all values are 0\n", procName);
1379 return (
PIXA *)ERROR_PTR(
"boxa and pixa counts differ", procName, NULL);
1382 if (n > MIN_COMPS_FOR_BIN_SORT &&
1386 return pixaBinSort(pixas, sorttype, sortorder, pnaindex, copyflag);
1390 return (
PIXA *)ERROR_PTR(
"na not made", procName, NULL);
1391 for (i = 0; i < n; i++) {
1423 L_WARNING(
"invalid sort type\n", procName);
1431 return (
PIXA *)ERROR_PTR(
"naindex not made", procName, NULL);
1436 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
1440 *pnaindex = naindex;
1480 l_int32 i, n, x, y, w, h;
1485 PROCNAME(
"pixaBinSort");
1487 if (pnaindex) *pnaindex = NULL;
1489 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1493 return (
PIXA *)ERROR_PTR(
"invalid sort type", procName, NULL);
1495 return (
PIXA *)ERROR_PTR(
"invalid sort order", procName, NULL);
1497 return (
PIXA *)ERROR_PTR(
"invalid copy flag", procName, NULL);
1500 if ((boxa = pixas->
boxa) == NULL)
1501 return (
PIXA *)ERROR_PTR(
"boxa not found", procName, NULL);
1504 return (
PIXA *)ERROR_PTR(
"boxa and pixa counts differ", procName, NULL);
1508 return (
PIXA *)ERROR_PTR(
"na not made", procName, NULL);
1509 for (i = 0; i < n; i++) {
1529 L_WARNING(
"invalid sort type\n", procName);
1537 return (
PIXA *)ERROR_PTR(
"naindex not made", procName, NULL);
1542 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
1546 *pnaindex = naindex;
1566 l_int32 i, n, index;
1571 PROCNAME(
"pixaSortByIndex");
1574 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1576 return (
PIXA *)ERROR_PTR(
"naindex not defined", procName, NULL);
1578 return (
PIXA *)ERROR_PTR(
"invalid copyflag", procName, NULL);
1582 for (i = 0; i < n; i++) {
1607 l_int32 pixtot, ntot, i, j, n, nn, index;
1614 PROCNAME(
"pixaSort2dByIndex");
1617 return (
PIXAA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1619 return (
PIXAA *)ERROR_PTR(
"naindex not defined", procName, NULL);
1625 return (
PIXAA *)ERROR_PTR(
"element count mismatch", procName, NULL);
1629 for (i = 0; i < n; i++) {
1633 for (j = 0; j < nn; j++) {
1677 PROCNAME(
"pixaSelectRange");
1680 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1682 return (
PIXA *)ERROR_PTR(
"invalid copyflag", procName, NULL);
1684 first = L_MAX(0, first);
1685 if (last < 0) last = n - 1;
1687 return (
PIXA *)ERROR_PTR(
"invalid first", procName, NULL);
1689 L_WARNING(
"last = %d is beyond max index = %d; adjusting\n",
1690 procName, last, n - 1);
1694 return (
PIXA *)ERROR_PTR(
"first > last", procName, NULL);
1696 npix = last - first + 1;
1698 for (i = first; i <= last; i++) {
1728 l_int32 n, npixa, i;
1732 PROCNAME(
"pixaaSelectRange");
1735 return (
PIXAA *)ERROR_PTR(
"paas not defined", procName, NULL);
1737 return (
PIXAA *)ERROR_PTR(
"invalid copyflag", procName, NULL);
1739 first = L_MAX(0, first);
1740 if (last < 0) last = n - 1;
1742 return (
PIXAA *)ERROR_PTR(
"invalid first", procName, NULL);
1744 L_WARNING(
"last = %d is beyond max index = %d; adjusting\n",
1745 procName, last, n - 1);
1749 return (
PIXAA *)ERROR_PTR(
"first > last", procName, NULL);
1751 npixa = last - first + 1;
1753 for (i = first; i <= last; i++) {
1789 PIXA *pixa1, *pixa2;
1792 PROCNAME(
"pixaaScaleToSize");
1795 return (
PIXAA *)ERROR_PTR(
"paas not defined", procName, NULL);
1796 if (wd <= 0 && hd <= 0)
1797 return (
PIXAA *)ERROR_PTR(
"neither wd nor hd > 0", procName, NULL);
1801 for (i = 0; i < n; i++) {
1837 l_int32 n, i, wd, hd;
1838 PIXA *pixa1, *pixa2;
1841 PROCNAME(
"pixaaScaleToSizeVar");
1844 return (
PIXAA *)ERROR_PTR(
"paas not defined", procName, NULL);
1846 return (
PIXAA *)ERROR_PTR(
"!nawd && !nahd", procName, NULL);
1850 return (
PIXAA *)ERROR_PTR(
"nawd wrong size", procName, NULL);
1852 return (
PIXAA *)ERROR_PTR(
"nahd wrong size", procName, NULL);
1854 for (i = 0; i < n; i++) {
1889 PROCNAME(
"pixaScaleToSize");
1892 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1894 if (wd <= 0 && hd <= 0)
1899 for (i = 0; i < n; i++) {
1902 pixCopyText(pix2, pix1);
1934 PROCNAME(
"pixaScaleToSizeRel");
1937 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1941 for (i = 0; i < n; i++) {
1947 L_WARNING(
"relative scale to size failed; use a copy\n", procName);
1975 BOXA *boxa1, *boxa2;
1979 PROCNAME(
"pixaScale");
1982 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
1983 if (scalex <= 0.0 || scaley <= 0.0)
1984 return (
PIXA *)ERROR_PTR(
"invalid scaling parameters", procName, NULL);
1988 for (i = 0; i < n; i++) {
1990 pix2 =
pixScale(pix1, scalex, scaley);
1991 pixCopyText(pix2, pix1);
2026 BOXA *boxa1, *boxa2;
2030 PROCNAME(
"pixaScaleBySampling");
2033 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
2034 if (scalex <= 0.0 || scaley <= 0.0)
2035 return (
PIXA *)ERROR_PTR(
"invalid scaling parameters", procName, NULL);
2039 for (i = 0; i < n; i++) {
2042 pixCopyText(pix2, pix1);
2098 PROCNAME(
"pixaRotate");
2101 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
2104 return (
PIXA *)ERROR_PTR(
"invalid type", procName, NULL);
2106 return (
PIXA *)ERROR_PTR(
"invalid incolor", procName, NULL);
2107 if (L_ABS(angle) < MIN_ANGLE_TO_ROTATE)
2112 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
2115 for (i = 0; i < n; i++) {
2118 return (
PIXA *)ERROR_PTR(
"pixs not found", procName, NULL);
2120 pixd =
pixRotate(pixs, angle, type, incolor, width, height);
2147 l_int32 i, n, nb, w, h;
2152 PROCNAME(
"pixaRotateOrth");
2155 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
2156 if (rotation < 0 || rotation > 3)
2157 return (
PIXA *)ERROR_PTR(
"rotation not in {0,1,2,3}", procName, NULL);
2164 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
2165 for (i = 0; i < n; i++) {
2168 return (
PIXA *)ERROR_PTR(
"pixs not found", procName, NULL);
2202 BOXA *boxas, *boxad;
2206 PROCNAME(
"pixaTranslate");
2209 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
2210 if (hshift == 0 && vshift == 0)
2216 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
2217 for (i = 0; i < n; i++) {
2220 return (
PIXA *)ERROR_PTR(
"pixs not found", procName, NULL);
2222 pixd =
pixTranslate(NULL, pixs, hshift, vshift, incolor);
2283 PROCNAME(
"pixaAddBorderGeneral");
2286 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, pixad);
2287 if (left < 0 || right < 0 || top < 0 || bot < 0)
2288 return (
PIXA *)ERROR_PTR(
"negative border added!", procName, pixad);
2289 if (pixad && (pixad != pixas))
2290 return (
PIXA *)ERROR_PTR(
"pixad defined but != pixas", procName, pixad);
2295 for (i = 0; i < n; i++) {
2307 for (i = 0; i < nbox; i++) {
2309 L_WARNING(
"box %d not found\n", procName, i);
2345 l_int32 i, j, m, mb, n;
2351 PROCNAME(
"pixaaFlattenToPixa");
2353 if (pnaindex) *pnaindex = NULL;
2355 return (
PIXA *)ERROR_PTR(
"paa not defined", procName, NULL);
2357 return (
PIXA *)ERROR_PTR(
"invalid copyflag", procName, NULL);
2361 *pnaindex = naindex;
2366 for (i = 0; i < n; i++) {
2370 for (j = 0; j < m; j++) {
2402 l_int32 minw, minh, maxw, maxh, minpw, minph, maxpw, maxph, i, n;
2405 PROCNAME(
"pixaaSizeRange");
2407 if (pminw) *pminw = 0;
2408 if (pminh) *pminh = 0;
2409 if (pmaxw) *pmaxw = 0;
2410 if (pmaxh) *pmaxh = 0;
2412 return ERROR_INT(
"paa not defined", procName, 1);
2413 if (!pminw && !pmaxw && !pminh && !pmaxh)
2414 return ERROR_INT(
"no data can be returned", procName, 1);
2416 minw = minh = 100000000;
2419 for (i = 0; i < n; i++) {
2433 if (pminw) *pminw = minw;
2434 if (pminh) *pminh = minh;
2435 if (pmaxw) *pmaxw = maxw;
2436 if (pmaxh) *pmaxh = maxh;
2456 l_int32 minw, minh, maxw, maxh, i, n, w, h;
2459 PROCNAME(
"pixaSizeRange");
2461 if (pminw) *pminw = 0;
2462 if (pminh) *pminh = 0;
2463 if (pmaxw) *pmaxw = 0;
2464 if (pmaxh) *pmaxh = 0;
2466 return ERROR_INT(
"pixa not defined", procName, 1);
2467 if (!pminw && !pmaxw && !pminh && !pmaxh)
2468 return ERROR_INT(
"no data can be returned", procName, 1);
2470 minw = minh = 1000000;
2473 for (i = 0; i < n; i++) {
2475 w = pixGetWidth(pix);
2476 h = pixGetHeight(pix);
2488 if (pminw) *pminw = minw;
2489 if (pminh) *pminh = minh;
2490 if (pmaxw) *pmaxw = maxw;
2491 if (pmaxh) *pmaxh = maxh;
2528 PROCNAME(
"pixaClipToPix");
2531 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
2533 return (
PIXA *)ERROR_PTR(
"pixs not defined", procName, NULL);
2537 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
2539 for (i = 0; i < n; i++) {
2577 PROCNAME(
"pixaClipToForeground");
2579 if (ppixad) *ppixad = NULL;
2580 if (pboxa) *pboxa = NULL;
2582 return ERROR_INT(
"pixas not defined", procName, 1);
2583 if (!ppixad && !pboxa)
2584 return ERROR_INT(
"no output requested", procName, 1);
2589 for (i = 0; i < n; i++) {
2618 l_int32 hascolor, maxdepth;
2620 PROCNAME(
"pixaGetRenderingDepth");
2623 return ERROR_INT(
"&depth not defined", procName, 1);
2626 return ERROR_INT(
"pixa not defined", procName, 1);
2655 l_int32 i, n, hascolor, d;
2659 PROCNAME(
"pixaHasColor");
2662 return ERROR_INT(
"&hascolor not defined", procName, 1);
2665 return ERROR_INT(
"pixa not defined", procName, 1);
2669 for (i = 0; i < n; i++) {
2671 if ((cmap = pixGetColormap(pix)) != NULL)
2673 d = pixGetDepth(pix);
2675 if (d == 32 || hascolor == 1) {
2700 PROCNAME(
"pixaAnyColormaps");
2703 return ERROR_INT(
"&hascmap not defined", procName, 1);
2706 return ERROR_INT(
"pixa not defined", procName, 1);
2709 for (i = 0; i < n; i++) {
2711 cmap = pixGetColormap(pix);
2736 l_int32 i, n, d, d0;
2739 PROCNAME(
"pixaGetDepthInfo");
2741 if (pmaxdepth) *pmaxdepth = 0;
2742 if (psame) *psame = TRUE;
2743 if (!pmaxdepth && !psame)
return 0;
2745 return ERROR_INT(
"pixa not defined", procName, 1);
2747 return ERROR_INT(
"pixa is empty", procName, 1);
2751 for (i = 0; i < n; i++) {
2757 if (d > maxd) maxd = d;
2760 if (pmaxdepth) *pmaxdepth = maxd;
2761 if (psame) *psame = same;
2783 l_int32 i, n, same, hascmap, maxdepth;
2786 PIXA *pixa1, *pixad;
2788 PROCNAME(
"pixaConvertToSameDepth");
2791 return (
PIXA *)ERROR_PTR(
"pixas not defined", procName, NULL);
2795 return (
PIXA *)ERROR_PTR(
"no components", procName, NULL);
2799 for (i = 0; i < n; i++) {
2812 for (i = 0; i < n; i++) {
2867 l_int32 i, j, n, empty1, empty2, same, sameboxa;
2868 BOXA *boxa1, *boxa2;
2872 PROCNAME(
"pixaEqual");
2874 if (pnaindex) *pnaindex = NULL;
2876 return ERROR_INT(
"&same not defined", procName, 1);
2880 if (!pixa1 || !pixa2)
2881 return ERROR_INT(
"pixa1 and pixa2 not both defined", procName, 1);
2892 if (!empty1 && !empty2) {
2893 boxaEqual(boxa1, boxa2, maxdist, &na, &sameboxa);
2903 if ((!empty1 && empty2) || (empty1 && !empty2))
2906 for (i = 0; i < n; i++) {
2952 PROCNAME(
"pixaSetFullSizeBoxa");
2955 return ERROR_INT(
"pixa not defined", procName, 1);
2957 L_INFO(
"pixa contains no pix\n", procName);
2963 for (i = 0; i < n; i++) {
PIXA * pixaSelectByPerimToAreaRatio(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByPerimToAreaRatio()
PIXA * pixaRotate(PIXA *pixas, l_float32 angle, l_int32 type, l_int32 incolor, l_int32 width, l_int32 height)
pixaRotate()
l_ok pixaEqual(PIXA *pixa1, PIXA *pixa2, l_int32 maxdist, NUMA **pnaindex, l_int32 *psame)
pixaEqual()
PIXA * pixaSortByIndex(PIXA *pixas, NUMA *naindex, l_int32 copyflag)
pixaSortByIndex()
PIXAA * pixaaCreate(l_int32 n)
pixaaCreate()
l_ok pixAddWithIndicator(PIX *pixs, PIXA *pixa, NUMA *na)
pixAddWithIndicator()
BOX * boxRotateOrth(BOX *box, l_int32 w, l_int32 h, l_int32 rotation)
boxRotateOrth()
l_ok boxaEqual(BOXA *boxa1, BOXA *boxa2, l_int32 maxdist, NUMA **pnaindex, l_int32 *psame)
boxaEqual()
PIXAA * pixaSort2dByIndex(PIXA *pixas, NUMAA *naa, l_int32 copyflag)
pixaSort2dByIndex()
NUMA * numaGetSortIndex(NUMA *na, l_int32 sortorder)
numaGetSortIndex()
NUMA * pixaFindAreaFraction(PIXA *pixa)
pixaFindAreaFraction()
PIX * pixScaleToSizeRel(PIX *pixs, l_int32 delw, l_int32 delh)
pixScaleToSizeRel()
PIX * pixConvertTo32(PIX *pixs)
pixConvertTo32()
l_ok pixaaSizeRange(PIXAA *paa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh)
pixaaSizeRange()
PIXA * pixaSelectWithIndicator(PIXA *pixas, NUMA *na, l_int32 *pchanged)
pixaSelectWithIndicator()
l_ok pixaVerifyDepth(PIXA *pixa, l_int32 *psame, l_int32 *pmaxd)
pixaVerifyDepth()
l_ok numaAddNumber(NUMA *na, l_float32 val)
numaAddNumber()
l_int32 numaaGetNumberCount(NUMAA *naa)
numaaGetNumberCount()
PIXA * pixaCreate(l_int32 n)
pixaCreate()
NUMA * numaGetBinSortIndex(NUMA *nas, l_int32 sortorder)
numaGetBinSortIndex()
l_ok pixaSetBoxa(PIXA *pixa, BOXA *boxa, l_int32 accesstype)
pixaSetBoxa()
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()
PIXA * pixaaGetPixa(PIXAA *paa, l_int32 index, l_int32 accesstype)
pixaaGetPixa()
PIX * pixConvertTo8(PIX *pixs, l_int32 cmapflag)
pixConvertTo8()
l_int32 pixaaGetCount(PIXAA *paa, NUMA **pna)
pixaaGetCount()
PIXA * pixaRotateOrth(PIXA *pixas, l_int32 rotation)
pixaRotateOrth()
PIXA * pixaaFlattenToPixa(PIXAA *paa, NUMA **pnaindex, l_int32 copyflag)
pixaaFlattenToPixa()
l_ok boxaReplaceBox(BOXA *boxa, l_int32 index, BOX *box)
boxaReplaceBox()
PIX * pixCreate(l_int32 width, l_int32 height, l_int32 depth)
pixCreate()
PIX * pixSelectBySize(PIX *pixs, l_int32 width, l_int32 height, l_int32 connectivity, l_int32 type, l_int32 relation, l_int32 *pchanged)
pixSelectBySize()
PIXA * pixaConvertToSameDepth(PIXA *pixas)
pixaConvertToSameDepth()
NUMA * pixaFindWidthHeightRatio(PIXA *pixa)
pixaFindWidthHeightRatio()
NUMA * numaCreate(l_int32 n)
numaCreate()
l_ok pixaGetDepthInfo(PIXA *pixa, l_int32 *pmaxdepth, l_int32 *psame)
pixaGetDepthInfo()
void boxaDestroy(BOXA **pboxa)
boxaDestroy()
BOX * pixaGetBox(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetBox()
NUMA * pixaFindPerimSizeRatio(PIXA *pixa)
pixaFindPerimSizeRatio()
PIX * pixScaleBySampling(PIX *pixs, l_float32 scalex, l_float32 scaley)
pixScaleBySampling()
PIX * pixaDisplay(PIXA *pixa, l_int32 w, l_int32 h)
pixaDisplay()
PIXA * pixaScaleToSize(PIXA *pixas, l_int32 wd, l_int32 hd)
pixaScaleToSize()
PIX * pixCreateTemplate(PIX *pixs)
pixCreateTemplate()
PIX * pixClipRectangle(PIX *pixs, BOX *box, BOX **pboxc)
pixClipRectangle()
NUMA * pixaFindPerimToAreaRatio(PIXA *pixa)
pixaFindPerimToAreaRatio()
l_ok pixaSetFullSizeBoxa(PIXA *pixa)
pixaSetFullSizeBoxa()
l_int32 pixaGetBoxaCount(PIXA *pixa)
pixaGetBoxaCount()
PIX * pixaRenderComponent(PIX *pixs, PIXA *pixa, l_int32 index)
pixaRenderComponent()
l_ok pixaHasColor(PIXA *pixa, l_int32 *phascolor)
pixaHasColor()
l_ok pixClipToForeground(PIX *pixs, PIX **ppixd, BOX **pbox)
pixClipToForeground()
PIXA * pixaCopy(PIXA *pixa, l_int32 copyflag)
pixaCopy()
PIXA * pixaSelectByNumConnComp(PIXA *pixas, l_int32 nmin, l_int32 nmax, l_int32 connectivity, l_int32 *pchanged)
pixaSelectByNumConnComp()
PIXAA * pixaaScaleToSize(PIXAA *paas, l_int32 wd, l_int32 hd)
pixaaScaleToSize()
BOXA * pixConnComp(PIX *pixs, PIXA **ppixa, l_int32 connectivity)
pixConnComp()
NUMA * numaaGetNuma(NUMAA *naa, l_int32 index, l_int32 accessflag)
numaaGetNuma()
l_ok numaGetIValue(NUMA *na, l_int32 index, l_int32 *pival)
numaGetIValue()
PIXA * pixaScaleBySampling(PIXA *pixas, l_float32 scalex, l_float32 scaley)
pixaScaleBySampling()
l_ok pixaAddPix(PIXA *pixa, PIX *pix, l_int32 copyflag)
pixaAddPix()
PIX * pixSelectByAreaFraction(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByAreaFraction()
PIXAA * pixaaSelectRange(PIXAA *paas, l_int32 first, l_int32 last, l_int32 copyflag)
pixaaSelectRange()
PIXA * pixaSelectByWidthHeightRatio(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByWidthHeightRatio()
BOXA * boxaTransform(BOXA *boxas, l_int32 shiftx, l_int32 shifty, l_float32 scalex, l_float32 scaley)
boxaTransform()
l_int32 numaGetCount(NUMA *na)
numaGetCount()
PIXA * pixaTranslate(PIXA *pixas, l_int32 hshift, l_int32 vshift, l_int32 incolor)
pixaTranslate()
PIX * pixAnd(PIX *pixd, PIX *pixs1, PIX *pixs2)
pixAnd()
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()
PIXA * pixaSelectBySize(PIXA *pixas, l_int32 width, l_int32 height, l_int32 type, l_int32 relation, l_int32 *pchanged)
pixaSelectBySize()
PIXA * pixaSelectByPerimSizeRatio(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByPerimSizeRatio()
PIX * pixSelectByPerimToAreaRatio(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByPerimToAreaRatio()
PIXAA * pixaaScaleToSizeVar(PIXAA *paas, NUMA *nawd, NUMA *nahd)
pixaaScaleToSizeVar()
BOX * boxAdjustSides(BOX *boxd, BOX *boxs, l_int32 delleft, l_int32 delright, l_int32 deltop, l_int32 delbot)
boxAdjustSides()
l_ok pixRemoveWithIndicator(PIX *pixs, PIXA *pixa, NUMA *na)
pixRemoveWithIndicator()
NUMA * numaMakeThresholdIndicator(NUMA *nas, l_float32 thresh, l_int32 type)
numaMakeThresholdIndicator()
PIX * pixScaleToSize(PIX *pixs, l_int32 wd, l_int32 hd)
pixScaleToSize()
void pixDestroy(PIX **ppix)
pixDestroy()
l_ok pixCopyColormap(PIX *pixd, PIX *pixs)
pixCopyColormap()
PIX * pixSelectByWidthHeightRatio(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByWidthHeightRatio()
PIX * pixRotateOrth(PIX *pixs, l_int32 quads)
pixRotateOrth()
BOX * boxaGetBox(BOXA *boxa, l_int32 index, l_int32 accessflag)
boxaGetBox()
PIXA * pixaScaleToSizeRel(PIXA *pixas, l_int32 delw, l_int32 delh)
pixaScaleToSizeRel()
PIXA * pixaSort(PIXA *pixas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex, l_int32 copyflag)
pixaSort()
l_ok pixcmapHasColor(PIXCMAP *cmap, l_int32 *pcolor)
pixcmapHasColor()
NUMA * numaCreateFromString(const char *str)
numaCreateFromString()
l_ok boxaGetExtent(BOXA *boxa, l_int32 *pw, l_int32 *ph, BOX **pbox)
boxaGetExtent()
void numaDestroy(NUMA **pna)
numaDestroy()
PIXA * pixaSelectByAreaFraction(PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged)
pixaSelectByAreaFraction()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
l_ok pixaSizeRange(PIXA *pixa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh)
pixaSizeRange()
NUMA * pixaMakeSizeIndicator(PIXA *pixa, l_int32 width, l_int32 height, l_int32 type, l_int32 relation)
pixaMakeSizeIndicator()
l_ok pixaGetRenderingDepth(PIXA *pixa, l_int32 *pdepth)
pixaGetRenderingDepth()
PIXA * pixaAddBorderGeneral(PIXA *pixad, PIXA *pixas, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_uint32 val)
pixaAddBorderGeneral()
l_int32 numaaGetCount(NUMAA *naa)
numaaGetCount()
PIXA * pixaScale(PIXA *pixas, l_float32 scalex, l_float32 scaley)
pixaScale()
PIX * pixaGetPix(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetPix()
PIX * pixSelectByPerimSizeRatio(PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged)
pixSelectByPerimSizeRatio()
l_ok pixaaAddPixa(PIXAA *paa, PIXA *pixa, l_int32 copyflag)
pixaaAddPixa()
PIXA * pixaBinSort(PIXA *pixas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex, l_int32 copyflag)
pixaBinSort()
l_ok pixZero(PIX *pix, l_int32 *pempty)
pixZero()
l_ok pixaGetPixDimensions(PIXA *pixa, l_int32 index, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixaGetPixDimensions()
BOXA * boxaCreate(l_int32 n)
boxaCreate()
PIX * pixCopy(PIX *pixd, PIX *pixs)
pixCopy()
PIXA * pixaSelectWithString(PIXA *pixas, const char *str, l_int32 *perror)
pixaSelectWithString()
PIXA * pixaClipToPix(PIXA *pixas, PIX *pixs)
pixaClipToPix()
void boxDestroy(BOX **pbox)
boxDestroy()
l_ok pixEqual(PIX *pix1, PIX *pix2, l_int32 *psame)
pixEqual()
l_int32 boxaGetCount(BOXA *boxa)
boxaGetCount()
l_ok numaGetMax(NUMA *na, l_float32 *pmaxval, l_int32 *pimaxloc)
numaGetMax()
PIXA * pixaSelectRange(PIXA *pixas, l_int32 first, l_int32 last, l_int32 copyflag)
pixaSelectRange()
l_ok pixaAddBox(PIXA *pixa, BOX *box, l_int32 copyflag)
pixaAddBox()
PIX * pixTranslate(PIX *pixd, PIX *pixs, l_int32 hshift, l_int32 vshift, l_int32 incolor)
pixTranslate()
l_ok boxGetGeometry(BOX *box, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
boxGetGeometry()
PIX * pixScale(PIX *pixs, l_float32 scalex, l_float32 scaley)
pixScale()
void pixaDestroy(PIXA **ppixa)
pixaDestroy()
BOX * boxCreate(l_int32 x, l_int32 y, l_int32 w, l_int32 h)
boxCreate()
l_ok pixCountConnComp(PIX *pixs, l_int32 connectivity, l_int32 *pcount)
pixCountConnComp()
l_ok pixaClipToForeground(PIXA *pixas, PIXA **ppixad, BOXA **pboxa)
pixaClipToForeground()
l_int32 pixaGetCount(PIXA *pixa)
pixaGetCount()
PIX * pixAddBorderGeneral(PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_uint32 val)
pixAddBorderGeneral()
PIX * pixRotate(PIX *pixs, l_float32 angle, l_int32 type, l_int32 incolor, l_int32 width, l_int32 height)
pixRotate()
l_ok pixaReplacePix(PIXA *pixa, l_int32 index, PIX *pix, BOX *box)
pixaReplacePix()
l_ok pixaAnyColormaps(PIXA *pixa, l_int32 *phascmap)
pixaAnyColormaps()
BOXA * pixaGetBoxa(PIXA *pixa, l_int32 accesstype)
pixaGetBoxa()