136 #include "config_auto.h" 140 #include "allheaders.h" 142 static const l_int32 INITIAL_PTR_ARRAYSIZE = 20;
167 PROCNAME(
"pixaCreate");
170 n = INITIAL_PTR_ARRAYSIZE;
172 pixa = (
PIXA *)LEPT_CALLOC(1,
sizeof(
PIXA));
176 pixa->
pix = (
PIX **)LEPT_CALLOC(n,
sizeof(
PIX *));
178 if (!pixa->
pix || !pixa->
boxa) {
180 return (
PIXA *)ERROR_PTR(
"pix or boxa not made", procName, NULL);
207 l_int32 w, h, d, nw, nh, i, j, index;
211 PROCNAME(
"pixaCreateFromPix");
214 return (
PIXA *)ERROR_PTR(
"pixs not defined", procName, NULL);
216 return (
PIXA *)ERROR_PTR(
"n must be > 0", procName, NULL);
219 return (
PIXA *)ERROR_PTR(
"pixa not made", procName, NULL);
221 if ((pix1 =
pixCreate(cellw, cellh, d)) == NULL) {
223 return (
PIXA *)ERROR_PTR(
"pix1 not made", procName, NULL);
226 nw = (w + cellw - 1) / cellw;
227 nh = (h + cellh - 1) / cellh;
228 for (i = 0, index = 0; i < nh; i++) {
229 for (j = 0; j < nw && index < n; j++, index++) {
231 j * cellw, i * cellh);
274 l_int32 i, n, end, w, h, wbox, hbox, cropwarn;
279 PROCNAME(
"pixaCreateFromBoxa");
282 return (
PIXA *)ERROR_PTR(
"pixs not defined", procName, NULL);
284 return (
PIXA *)ERROR_PTR(
"boxa not defined", procName, NULL);
286 return (
PIXA *)ERROR_PTR(
"num must be >= 0", procName, NULL);
289 end = (num == 0) ? n - 1 : L_MIN(start + num - 1, n - 1);
290 if ((pixad =
pixaCreate(end - start + 1)) == NULL)
291 return (
PIXA *)ERROR_PTR(
"pixad not made", procName, NULL);
296 if (wbox > w || hbox > h)
299 *pcropwarn = cropwarn;
301 for (i = start; i <= end; i++) {
350 l_uint32 bordercolor)
352 l_int32 w, h, d, cellw, cellh, i, j;
356 PROCNAME(
"pixaSplitPix");
359 return (
PIXA *)ERROR_PTR(
"pixs not defined", procName, NULL);
360 if (nx <= 0 || ny <= 0)
361 return (
PIXA *)ERROR_PTR(
"nx and ny must be > 0", procName, NULL);
362 borderwidth = L_MAX(0, borderwidth);
365 return (
PIXA *)ERROR_PTR(
"pixa not made", procName, NULL);
367 cellw = (w + nx - 1) / nx;
368 cellh = (h + ny - 1) / ny;
370 for (i = 0; i < ny; i++) {
371 for (j = 0; j < nx; j++) {
372 if ((pix1 =
pixCreate(cellw + 2 * borderwidth,
373 cellh + 2 * borderwidth, d)) == NULL) {
375 return (
PIXA *)ERROR_PTR(
"pix1 not made", procName, NULL);
378 if (borderwidth == 0) {
386 pixRasterop(pix1, borderwidth, borderwidth, cellw, cellh,
387 PIX_SRC, pixs, j * cellw, i * cellh);
413 PROCNAME(
"pixaDestroy");
416 L_WARNING(
"ptr address is NULL!\n", procName);
420 if ((pixa = *ppixa) == NULL)
426 for (i = 0; i < pixa->
n; i++)
428 LEPT_FREE(pixa->
pix);
458 PROCNAME(
"pixaCopy");
461 return (
PIXA *)ERROR_PTR(
"pixa not defined", procName, NULL);
469 return (
PIXA *)ERROR_PTR(
"invalid copyflag", procName, NULL);
472 return (
PIXA *)ERROR_PTR(
"pixac not made", procName, NULL);
474 for (i = 0; i < pixa->
n; i++) {
510 PROCNAME(
"pixaAddPix");
513 return ERROR_INT(
"pixa not defined", procName, 1);
515 return ERROR_INT(
"pix not defined", procName, 1);
519 else if (copyflag ==
L_COPY)
524 return ERROR_INT(
"invalid copyflag", procName, 1);
526 return ERROR_INT(
"pixc not made", procName, 1);
551 PROCNAME(
"pixaAddBox");
554 return ERROR_INT(
"pixa not defined", procName, 1);
556 return ERROR_INT(
"box not defined", procName, 1);
558 return ERROR_INT(
"invalid copyflag", procName, 1);
579 PROCNAME(
"pixaExtendArray");
582 return ERROR_INT(
"pixa not defined", procName, 1);
605 PROCNAME(
"pixaExtendArrayToSize");
608 return ERROR_INT(
"pixa not defined", procName, 1);
610 if (size > pixa->
nalloc) {
613 size *
sizeof(
PIX *))) == NULL)
614 return ERROR_INT(
"new ptr array not returned", procName, 1);
633 PROCNAME(
"pixaGetCount");
636 return ERROR_INT(
"pixa not defined", procName, 0);
653 PROCNAME(
"pixaChangeRefcount");
656 return ERROR_INT(
"pixa not defined", procName, 1);
678 PROCNAME(
"pixaGetPix");
681 return (
PIX *)ERROR_PTR(
"pixa not defined", procName, NULL);
682 if (index < 0 || index >= pixa->
n)
683 return (
PIX *)ERROR_PTR(
"index not valid", procName, NULL);
684 if ((pix = pixa->
pix[index]) == NULL) {
685 L_ERROR(
"no pix at pixa[%d]\n", procName, index);
686 return (
PIX *)ERROR_PTR(
"pix not found!", procName, NULL);
691 else if (accesstype ==
L_CLONE)
694 return (
PIX *)ERROR_PTR(
"invalid accesstype", procName, NULL);
715 PROCNAME(
"pixaGetPixDimensions");
721 return ERROR_INT(
"pixa not defined", procName, 1);
722 if (index < 0 || index >= pixa->
n)
723 return ERROR_INT(
"index not valid", procName, 1);
726 return ERROR_INT(
"pix not found!", procName, 1);
744 PROCNAME(
"pixaGetBoxa");
747 return (
BOXA *)ERROR_PTR(
"pixa not defined", procName, NULL);
749 return (
BOXA *)ERROR_PTR(
"boxa not defined", procName, NULL);
752 return (
BOXA *)ERROR_PTR(
"invalid accesstype", procName, NULL);
767 PROCNAME(
"pixaGetBoxaCount");
770 return ERROR_INT(
"pixa not defined", procName, 0);
803 PROCNAME(
"pixaGetBox");
806 return (
BOX *)ERROR_PTR(
"pixa not defined", procName, NULL);
808 return (
BOX *)ERROR_PTR(
"boxa not defined", procName, NULL);
809 if (index < 0 || index >= pixa->
boxa->
n)
810 return (
BOX *)ERROR_PTR(
"index not valid", procName, NULL);
812 return (
BOX *)ERROR_PTR(
"invalid accesstype", procName, NULL);
844 PROCNAME(
"pixaGetBoxGeometry");
851 return ERROR_INT(
"pixa not defined", procName, 1);
852 if (index < 0 || index >= pixa->
n)
853 return ERROR_INT(
"index not valid", procName, 1);
856 return ERROR_INT(
"box not found!", procName, 1);
881 PROCNAME(
"pixaSetBoxa");
884 return ERROR_INT(
"pixa not defined", procName, 1);
886 return ERROR_INT(
"boxa not defined", procName, 1);
889 return ERROR_INT(
"invalid access type", procName, 1);
918 PROCNAME(
"pixaGetPixArray");
921 return (
PIX **)ERROR_PTR(
"pixa not defined", procName, NULL);
945 l_int32 i, n, d, maxd, same;
947 PROCNAME(
"pixaVerifyDepth");
949 if (pmaxd) *pmaxd = 0;
951 return ERROR_INT(
"psame not defined", procName, 1);
953 return ERROR_INT(
"pixa not defined", procName, 1);
955 return ERROR_INT(
"no pix in pixa", procName, 1);
959 for (i = 1; i < n; i++) {
961 return ERROR_INT(
"pix depth not found", procName, 1);
962 maxd = L_MAX(maxd, d);
967 if (pmaxd) *pmaxd = maxd;
992 l_int32 i, n, w, h, maxw, maxh, same;
994 PROCNAME(
"pixaVerifyDimensions");
996 if (pmaxw) *pmaxw = 0;
997 if (pmaxh) *pmaxh = 0;
999 return ERROR_INT(
"psame not defined", procName, 1);
1002 return ERROR_INT(
"pixa not defined", procName, 1);
1004 return ERROR_INT(
"no pix in pixa", procName, 1);
1008 for (i = 1; i < n; i++) {
1010 return ERROR_INT(
"pix dimensions not found", procName, 1);
1011 maxw = L_MAX(maxw, w);
1012 maxh = L_MAX(maxh, h);
1013 if (w != maxw || h != maxh)
1017 if (pmaxw) *pmaxw = maxw;
1018 if (pmaxh) *pmaxh = maxh;
1046 PROCNAME(
"pixaIsFull");
1048 if (pfullpa) *pfullpa = 0;
1049 if (pfullba) *pfullba = 0;
1051 return ERROR_INT(
"pixa not defined", procName, 1);
1056 for (i = 0; i < n; i++) {
1095 PROCNAME(
"pixaCountText");
1098 return ERROR_INT(
"&ntext not defined", procName, 1);
1101 return ERROR_INT(
"pixa not defined", procName, 1);
1104 for (i = 0; i < n; i++) {
1108 if (text && strlen(text) > 0)
1142 PROCNAME(
"pixaSetText");
1145 return ERROR_INT(
"pixa not defined", procName, 1);
1149 return ERROR_INT(
"pixa and sa sizes differ", procName, 1);
1152 for (i = 0; i < n; i++) {
1161 for (i = 0; i < n; i++) {
1201 PROCNAME(
"pixaGetLinePtrs");
1203 if (psize) *psize = 0;
1205 return (
void ***)ERROR_PTR(
"pixa not defined", procName, NULL);
1208 return (
void ***)ERROR_PTR(
"pixa not all same depth", procName, NULL);
1210 if (psize) *psize = n;
1211 if ((lineset = (
void ***)LEPT_CALLOC(n,
sizeof(
void **))) == NULL)
1212 return (
void ***)ERROR_PTR(
"lineset not made", procName, NULL);
1213 for (i = 0; i < n; i++) {
1216 lineset[i] = lineptrs;
1245 l_int32 i, n, w, h, d, spp, count, hastext;
1249 PROCNAME(
"pixaWriteStreamInfo");
1252 return ERROR_INT(
"stream not defined", procName, 1);
1254 return ERROR_INT(
"pixa not defined", procName, 1);
1257 for (i = 0; i < n; i++) {
1259 fprintf(fp,
"%d: no pix at this index\n", i);
1263 spp = pixGetSpp(pix);
1265 hastext = (text && strlen(text) > 0);
1266 if ((cmap = pixGetColormap(pix)) != NULL)
1268 fprintf(fp,
"Pix %d: w = %d, h = %d, d = %d, spp = %d",
1270 if (cmap) fprintf(fp,
", cmap(%d colors)", count);
1271 if (hastext) fprintf(fp,
", text = %s", text);
1306 PROCNAME(
"pixaReplacePix");
1309 return ERROR_INT(
"pixa not defined", procName, 1);
1310 if (index < 0 || index >= pixa->
n)
1311 return ERROR_INT(
"index not valid", procName, 1);
1313 return ERROR_INT(
"pix not defined", procName, 1);
1316 pixa->
pix[index] = pix;
1320 if (index > boxa->
n)
1321 return ERROR_INT(
"boxa index not valid", procName, 1);
1356 PROCNAME(
"pixaInsertPix");
1359 return ERROR_INT(
"pixa not defined", procName, 1);
1361 if (index < 0 || index > n)
1362 return ERROR_INT(
"index not in {0...n}", procName, 1);
1364 return ERROR_INT(
"pixs not defined", procName, 1);
1371 for (i = n; i > index; i--)
1372 pixa->
pix[i] = pixa->
pix[i - 1];
1373 pixa->
pix[index] = pixs;
1406 PROCNAME(
"pixaRemovePix");
1409 return ERROR_INT(
"pixa not defined", procName, 1);
1411 if (index < 0 || index >= n)
1412 return ERROR_INT(
"index not in {0...n - 1}", procName, 1);
1417 for (i = index + 1; i < n; i++)
1418 array[i - 1] = array[i];
1419 array[n - 1] = NULL;
1460 PROCNAME(
"pixaRemovePixAndSave");
1462 if (ppix) *ppix = NULL;
1463 if (pbox) *pbox = NULL;
1465 return ERROR_INT(
"pixa not defined", procName, 1);
1467 if (index < 0 || index >= n)
1468 return ERROR_INT(
"index not in {0...n - 1}", procName, 1);
1475 for (i = index + 1; i < n; i++)
1476 array[i - 1] = array[i];
1477 array[n - 1] = NULL;
1506 l_int32 i, n, npix, index;
1509 PROCNAME(
"pixaRemoveSelected");
1512 return ERROR_INT(
"pixa not defined", procName, 1);
1514 return ERROR_INT(
"naindex not defined", procName, 1);
1516 return ERROR_INT(
"naindex is empty", procName, 1);
1521 for (i = 0; i < n; i++) {
1573 PROCNAME(
"pixaInitFull");
1576 return ERROR_INT(
"pixa not defined", procName, 1);
1580 for (i = 0; i < n; i++) {
1612 PROCNAME(
"pixaClear");
1615 return ERROR_INT(
"pixa not defined", procName, 1);
1618 for (i = 0; i < n; i++)
1652 BOXA *boxas, *boxad;
1655 PROCNAME(
"pixaJoin");
1658 return ERROR_INT(
"pixad not defined", procName, 1);
1664 if (iend < 0 || iend >= n)
1667 return ERROR_INT(
"istart > iend; nothing to add", procName, 1);
1669 for (i = istart; i <= iend; i++) {
1677 iend = L_MIN(iend, nb - 1);
1678 boxaJoin(boxad, boxas, istart, iend);
1706 l_int32 i, n1, n2, n, nb1, nb2;
1711 PROCNAME(
"pixaInterleave");
1714 return (
PIXA *)ERROR_PTR(
"pixa1 not defined", procName, NULL);
1716 return (
PIXA *)ERROR_PTR(
"pixa2 not defined", procName, NULL);
1718 return (
PIXA *)ERROR_PTR(
"invalid copyflag", procName, NULL);
1723 return (
PIXA *)ERROR_PTR(
"at least one input pixa is empty",
1726 L_WARNING(
"counts differ: %d != %d\n", procName, n1, n2);
1731 for (i = 0; i < n; i++) {
1775 PROCNAME(
"pixaaJoin");
1778 return ERROR_INT(
"pixaad not defined", procName, 1);
1785 if (iend < 0 || iend >= n)
1788 return ERROR_INT(
"istart > iend; nothing to add", procName, 1);
1790 for (i = istart; i <= iend; i++) {
1829 PROCNAME(
"pixaaCreate");
1832 n = INITIAL_PTR_ARRAYSIZE;
1834 if ((paa = (
PIXAA *)LEPT_CALLOC(1,
sizeof(
PIXAA))) == NULL)
1835 return (
PIXAA *)ERROR_PTR(
"paa not made", procName, NULL);
1839 if ((paa->
pixa = (
PIXA **)LEPT_CALLOC(n,
sizeof(
PIXA *))) == NULL) {
1841 return (
PIXAA *)ERROR_PTR(
"pixa ptrs not made", procName, NULL);
1875 l_int32 count, i, j, npixa;
1880 PROCNAME(
"pixaaCreateFromPixa");
1883 return (
PIXAA *)ERROR_PTR(
"pixa not defined", procName, NULL);
1886 return (
PIXAA *)ERROR_PTR(
"no pix in pixa", procName, NULL);
1888 return (
PIXAA *)ERROR_PTR(
"n must be > 0", procName, NULL);
1890 return (
PIXAA *)ERROR_PTR(
"invalid type", procName, NULL);
1892 return (
PIXAA *)ERROR_PTR(
"invalid copyflag", procName, NULL);
1895 npixa = (count + n - 1) / n;
1897 npixa = L_MIN(n, count);
1900 for (i = 0; i < count; i++) {
1911 for (i = 0; i < npixa; i++) {
1913 for (j = i; j < count; j += n) {
1937 PROCNAME(
"pixaaDestroy");
1940 L_WARNING(
"ptr address is NULL!\n", procName);
1944 if ((paa = *ppaa) == NULL)
1947 for (i = 0; i < paa->
n; i++)
1949 LEPT_FREE(paa->
pixa);
1983 PROCNAME(
"pixaaAddPixa");
1986 return ERROR_INT(
"paa not defined", procName, 1);
1988 return ERROR_INT(
"pixa not defined", procName, 1);
1991 return ERROR_INT(
"invalid copyflag", procName, 1);
1996 if ((pixac =
pixaCopy(pixa, copyflag)) == NULL)
1997 return ERROR_INT(
"pixac not made", procName, 1);
2003 paa->
pixa[n] = pixac;
2019 PROCNAME(
"pixaaExtendArray");
2022 return ERROR_INT(
"paa not defined", procName, 1);
2027 return ERROR_INT(
"new ptr array not returned", procName, 1);
2053 PROCNAME(
"pixaaAddPix");
2056 return ERROR_INT(
"paa not defined", procName, 1);
2058 return ERROR_INT(
"pix not defined", procName, 1);
2061 return ERROR_INT(
"pixa not found", procName, 1);
2088 PROCNAME(
"pixaaAddBox");
2091 return ERROR_INT(
"paa not defined", procName, 1);
2093 return ERROR_INT(
"box not defined", procName, 1);
2095 return ERROR_INT(
"invalid copyflag", procName, 1);
2126 PROCNAME(
"pixaaGetCount");
2128 if (pna) *pna = NULL;
2130 return ERROR_INT(
"paa not defined", procName, 0);
2135 return ERROR_INT(
"na not made", procName, 0);
2137 for (i = 0; i < n; i++) {
2174 PROCNAME(
"pixaaGetPixa");
2177 return (
PIXA *)ERROR_PTR(
"paa not defined", procName, NULL);
2178 if (index < 0 || index >= paa->
n)
2179 return (
PIXA *)ERROR_PTR(
"index not valid", procName, NULL);
2182 return (
PIXA *)ERROR_PTR(
"invalid accesstype", procName, NULL);
2184 if ((pixa = paa->
pixa[index]) == NULL) {
2185 L_ERROR(
"missing pixa[%d]\n", procName, index);
2186 return (
PIXA *)ERROR_PTR(
"pixa not found at index", procName, NULL);
2209 PROCNAME(
"pixaaGetBoxa");
2212 return (
BOXA *)ERROR_PTR(
"paa not defined", procName, NULL);
2214 return (
BOXA *)ERROR_PTR(
"invalid access type", procName, NULL);
2238 PROCNAME(
"pixaaGetPix");
2241 return (
PIX *)ERROR_PTR(
"pixa not retrieved", procName, NULL);
2242 if ((pix =
pixaGetPix(pixa, ipix, accessflag)) == NULL)
2243 L_ERROR(
"pix not retrieved\n", procName);
2267 l_int32 i, n, d, maxd, same, samed;
2270 PROCNAME(
"pixaaVerifyDepth");
2272 if (pmaxd) *pmaxd = 0;
2274 return ERROR_INT(
"psame not defined", procName, 1);
2277 return ERROR_INT(
"paa not defined", procName, 1);
2279 return ERROR_INT(
"no pixa in paa", procName, 1);
2284 for (i = 1; i < n; i++) {
2288 maxd = L_MAX(maxd, d);
2289 if (!samed || maxd != d)
2293 if (pmaxd) *pmaxd = maxd;
2318 l_int32 i, n, w, h, maxw, maxh, same, same2;
2321 PROCNAME(
"pixaaVerifyDimensions");
2323 if (pmaxw) *pmaxw = 0;
2324 if (pmaxh) *pmaxh = 0;
2326 return ERROR_INT(
"psame not defined", procName, 1);
2329 return ERROR_INT(
"paa not defined", procName, 1);
2331 return ERROR_INT(
"no pixa in paa", procName, 1);
2338 for (i = 1; i < n; i++) {
2342 maxw = L_MAX(maxw, w);
2343 maxh = L_MAX(maxh, h);
2344 if (!same2 || maxw != w || maxh != h)
2348 if (pmaxw) *pmaxw = maxw;
2349 if (pmaxh) *pmaxh = maxh;
2373 PROCNAME(
"pixaaIsFull");
2376 return ERROR_INT(
"&full not defined", procName, 0);
2379 return ERROR_INT(
"paa not defined", procName, 0);
2383 for (i = 0; i < n; i++) {
2425 PROCNAME(
"pixaaInitFull");
2428 return ERROR_INT(
"paa not defined", procName, 1);
2430 return ERROR_INT(
"pixa not defined", procName, 1);
2434 for (i = 0; i < n; i++) {
2466 PROCNAME(
"pixaaReplacePixa");
2469 return ERROR_INT(
"paa not defined", procName, 1);
2470 if (index < 0 || index >= paa->
n)
2471 return ERROR_INT(
"index not valid", procName, 1);
2473 return ERROR_INT(
"pixa not defined", procName, 1);
2476 paa->
pixa[index] = pixa;
2498 PROCNAME(
"pixaClear");
2501 return ERROR_INT(
"paa not defined", procName, 1);
2504 for (i = 0; i < n; i++)
2530 PROCNAME(
"pixaaTruncate");
2533 return ERROR_INT(
"paa not defined", procName, 1);
2536 for (i = n - 1; i >= 0; i--) {
2577 PROCNAME(
"pixaRead");
2580 return (
PIXA *)ERROR_PTR(
"no libpng: can't read data", procName, NULL);
2584 return (
PIXA *)ERROR_PTR(
"filename not defined", procName, NULL);
2587 return (
PIXA *)ERROR_PTR(
"stream not opened", procName, NULL);
2591 return (
PIXA *)ERROR_PTR(
"pixa not read", procName, NULL);
2611 l_int32 n, i, xres, yres, version;
2617 PROCNAME(
"pixaReadStream");
2620 return (
PIXA *)ERROR_PTR(
"no libpng: can't read data", procName, NULL);
2624 return (
PIXA *)ERROR_PTR(
"stream not defined", procName, NULL);
2626 if (fscanf(fp,
"\nPixa Version %d\n", &version) != 1)
2627 return (
PIXA *)ERROR_PTR(
"not a pixa file", procName, NULL);
2629 return (
PIXA *)ERROR_PTR(
"invalid pixa version", procName, NULL);
2630 if (fscanf(fp,
"Number of pix = %d\n", &n) != 1)
2631 return (
PIXA *)ERROR_PTR(
"not a pixa file", procName, NULL);
2634 return (
PIXA *)ERROR_PTR(
"boxa not made", procName, NULL);
2637 return (
PIXA *)ERROR_PTR(
"pixa not made", procName, NULL);
2642 for (i = 0; i < n; i++) {
2643 if ((fscanf(fp,
" pix[%d]: xres = %d, yres = %d\n",
2644 &ignore, &xres, &yres)) != 3) {
2646 return (
PIXA *)ERROR_PTR(
"res reading error", procName, NULL);
2650 return (
PIXA *)ERROR_PTR(
"pix not read", procName, NULL);
2652 pixSetXRes(pix, xres);
2653 pixSetYRes(pix, yres);
2674 PROCNAME(
"pixaReadMem");
2677 return (
PIXA *)ERROR_PTR(
"data not defined", procName, NULL);
2679 return (
PIXA *)ERROR_PTR(
"stream not opened", procName, NULL);
2683 if (!pixa) L_ERROR(
"pixa not read\n", procName);
2708 PROCNAME(
"pixaWriteDebug");
2713 L_INFO(
"write to named temp file %s is disabled\n", procName, fname);
2739 PROCNAME(
"pixaWrite");
2742 return ERROR_INT(
"no libpng: can't write data", procName, 1);
2746 return ERROR_INT(
"filename not defined", procName, 1);
2748 return ERROR_INT(
"pixa not defined", procName, 1);
2751 return ERROR_INT(
"stream not opened", procName, 1);
2755 return ERROR_INT(
"pixa not written to stream", procName, 1);
2780 PROCNAME(
"pixaWriteStream");
2783 return ERROR_INT(
"no libpng: can't write data", procName, 1);
2787 return ERROR_INT(
"stream not defined", procName, 1);
2789 return ERROR_INT(
"pixa not defined", procName, 1);
2793 fprintf(fp,
"Number of pix = %d\n", n);
2795 for (i = 0; i < n; i++) {
2797 return ERROR_INT(
"pix not found", procName, 1);
2798 fprintf(fp,
" pix[%d]: xres = %d, yres = %d\n",
2828 PROCNAME(
"pixaWriteMem");
2830 if (pdata) *pdata = NULL;
2831 if (psize) *psize = 0;
2833 return ERROR_INT(
"&data not defined", procName, 1);
2835 return ERROR_INT(
"&size not defined", procName, 1);
2837 return ERROR_INT(
"pixa not defined", procName, 1);
2840 if ((fp = open_memstream((
char **)pdata, psize)) == NULL)
2841 return ERROR_INT(
"stream not opened", procName, 1);
2844 L_INFO(
"work-around: writing to a temp file\n", procName);
2847 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
2849 if ((fp = tmpfile()) == NULL)
2850 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
2881 PROCNAME(
"pixaReadBoth");
2884 return (
PIXA *)ERROR_PTR(
"filename not defined", procName, NULL);
2888 return (
PIXA *)ERROR_PTR(
"struct name not found", procName, NULL);
2889 snprintf(buf,
sizeof(buf),
"%s", sname);
2892 if (strcmp(buf,
"Pixacomp") == 0) {
2894 return (
PIXA *)ERROR_PTR(
"pac not made", procName, NULL);
2897 }
else if (strcmp(buf,
"Pixa") == 0) {
2898 if ((pixa =
pixaRead(filename)) == NULL)
2899 return (
PIXA *)ERROR_PTR(
"pixa not made", procName, NULL);
2901 return (
PIXA *)ERROR_PTR(
"invalid file type", procName, NULL);
2942 PROCNAME(
"pixaaReadFromFiles");
2945 return (
PIXAA *)ERROR_PTR(
"dirname not defined", procName, NULL);
2950 return (
PIXAA *)ERROR_PTR(
"no pixa files found", procName, NULL);
2954 for (i = 0; i < n; i++) {
2956 if ((pixa =
pixaRead(fname)) == NULL) {
2957 L_ERROR(
"pixa not read for %d-th file", procName, i);
2986 PROCNAME(
"pixaaRead");
2989 return (
PIXAA *)ERROR_PTR(
"no libpng: can't read data", procName, NULL);
2993 return (
PIXAA *)ERROR_PTR(
"filename not defined", procName, NULL);
2996 return (
PIXAA *)ERROR_PTR(
"stream not opened", procName, NULL);
3000 return (
PIXAA *)ERROR_PTR(
"paa not read", procName, NULL);
3020 l_int32 n, i, version;
3026 PROCNAME(
"pixaaReadStream");
3029 return (
PIXAA *)ERROR_PTR(
"no libpng: can't read data", procName, NULL);
3033 return (
PIXAA *)ERROR_PTR(
"stream not defined", procName, NULL);
3035 if (fscanf(fp,
"\nPixaa Version %d\n", &version) != 1)
3036 return (
PIXAA *)ERROR_PTR(
"not a pixaa file", procName, NULL);
3038 return (
PIXAA *)ERROR_PTR(
"invalid pixaa version", procName, NULL);
3039 if (fscanf(fp,
"Number of pixa = %d\n", &n) != 1)
3040 return (
PIXAA *)ERROR_PTR(
"not a pixaa file", procName, NULL);
3043 return (
PIXAA *)ERROR_PTR(
"paa not made", procName, NULL);
3046 return (
PIXAA *)ERROR_PTR(
"boxa not made", procName, NULL);
3051 for (i = 0; i < n; i++) {
3052 if ((fscanf(fp,
"\n\n --------------- pixa[%d] ---------------\n",
3055 return (
PIXAA *)ERROR_PTR(
"text reading", procName, NULL);
3059 return (
PIXAA *)ERROR_PTR(
"pixa not read", procName, NULL);
3082 PROCNAME(
"paaReadMem");
3085 return (
PIXAA *)ERROR_PTR(
"data not defined", procName, NULL);
3087 return (
PIXAA *)ERROR_PTR(
"stream not opened", procName, NULL);
3091 if (!paa) L_ERROR(
"paa not read\n", procName);
3116 PROCNAME(
"pixaaWrite");
3119 return ERROR_INT(
"no libpng: can't read data", procName, 1);
3123 return ERROR_INT(
"filename not defined", procName, 1);
3125 return ERROR_INT(
"paa not defined", procName, 1);
3128 return ERROR_INT(
"stream not opened", procName, 1);
3132 return ERROR_INT(
"paa not written to stream", procName, 1);
3157 PROCNAME(
"pixaaWriteStream");
3160 return ERROR_INT(
"no libpng: can't read data", procName, 1);
3164 return ERROR_INT(
"stream not defined", procName, 1);
3166 return ERROR_INT(
"paa not defined", procName, 1);
3170 fprintf(fp,
"Number of pixa = %d\n", n);
3172 for (i = 0; i < n; i++) {
3174 return ERROR_INT(
"pixa not found", procName, 1);
3175 fprintf(fp,
"\n\n --------------- pixa[%d] ---------------\n", i);
3204 PROCNAME(
"pixaaWriteMem");
3206 if (pdata) *pdata = NULL;
3207 if (psize) *psize = 0;
3209 return ERROR_INT(
"&data not defined", procName, 1);
3211 return ERROR_INT(
"&size not defined", procName, 1);
3213 return ERROR_INT(
"paa not defined", procName, 1);
3216 if ((fp = open_memstream((
char **)pdata, psize)) == NULL)
3217 return ERROR_INT(
"stream not opened", procName, 1);
3220 L_INFO(
"work-around: writing to a temp file\n", procName);
3223 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
3225 if ((fp = tmpfile()) == NULL)
3226 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
BOXA * boxaReadStream(FILE *fp)
boxaReadStream()
PIXA * pixaInterleave(PIXA *pixa1, PIXA *pixa2, l_int32 copyflag)
pixaInterleave()
void pixaaDestroy(PIXAA **ppaa)
pixaaDestroy()
PIXAA * pixaaCreate(l_int32 n)
pixaaCreate()
l_ok pixaInitFull(PIXA *pixa, PIX *pix, BOX *box)
pixaInitFull()
l_ok boxaJoin(BOXA *boxad, BOXA *boxas, l_int32 istart, l_int32 iend)
boxaJoin()
l_int32 pixaaIsFull(PIXAA *paa, l_int32 *pfull)
pixaaIsFull()
l_ok boxaExtendArrayToSize(BOXA *boxa, l_int32 size)
boxaExtendArrayToSize()
PIX * pixReadStreamPng(FILE *fp)
pixReadStreamPng()
l_ok pixaSetText(PIXA *pixa, const char *text, SARRAY *sa)
pixaSetText()
PIXAA * pixaaReadMem(const l_uint8 *data, size_t size)
pixaaReadMem()
l_ok pixaWriteDebug(const char *fname, PIXA *pixa)
pixaWriteDebug()
l_ok pixaVerifyDepth(PIXA *pixa, l_int32 *psame, l_int32 *pmaxd)
pixaVerifyDepth()
l_ok pixaaAddBox(PIXAA *paa, BOX *box, l_int32 copyflag)
pixaaAddBox()
l_ok numaAddNumber(NUMA *na, l_float32 val)
numaAddNumber()
PIXA * pixaReadMem(const l_uint8 *data, size_t size)
pixaReadMem()
PIXA * pixaCreate(l_int32 n)
pixaCreate()
l_ok pixaWriteStreamInfo(FILE *fp, PIXA *pixa)
pixaWriteStreamInfo()
l_ok pixaRemovePixAndSave(PIXA *pixa, l_int32 index, PIX **ppix, BOX **pbox)
pixaRemovePixAndSave()
PIXAC * pixacompRead(const char *filename)
pixacompRead()
l_ok pixaExtendArrayToSize(PIXA *pixa, l_int32 size)
pixaExtendArrayToSize()
l_ok boxaExtendArray(BOXA *boxa)
boxaExtendArray()
l_ok pixaCountText(PIXA *pixa, l_int32 *pntext)
pixaCountText()
l_ok pixaSetBoxa(PIXA *pixa, BOXA *boxa, l_int32 accesstype)
pixaSetBoxa()
l_ok pixaWrite(const char *filename, PIXA *pixa)
pixaWrite()
l_ok pixaJoin(PIXA *pixad, PIXA *pixas, l_int32 istart, l_int32 iend)
pixaJoin()
PIXAA * pixaaReadStream(FILE *fp)
pixaaReadStream()
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()
l_ok pixaaExtendArray(PIXAA *paa)
pixaaExtendArray()
PIXA * pixaaGetPixa(PIXAA *paa, l_int32 index, l_int32 accesstype)
pixaaGetPixa()
PIXA * pixaCreateFromPixacomp(PIXAC *pixac, l_int32 accesstype)
pixaCreateFromPixacomp()
l_ok boxaWriteStream(FILE *fp, BOXA *boxa)
boxaWriteStream()
void ** pixGetLinePtrs(PIX *pix, l_int32 *psize)
pixGetLinePtrs()
PIXA * pixaRead(const char *filename)
pixaRead()
l_int32 pixaaGetCount(PIXAA *paa, NUMA **pna)
pixaaGetCount()
NUMA * numaSort(NUMA *naout, NUMA *nain, l_int32 sortorder)
numaSort()
PIXAA * pixaaReadFromFiles(const char *dirname, const char *substr, l_int32 first, l_int32 nfiles)
pixaaReadFromFiles()
l_ok boxaReplaceBox(BOXA *boxa, l_int32 index, BOX *box)
boxaReplaceBox()
PIX * pixCreate(l_int32 width, l_int32 height, l_int32 depth)
pixCreate()
PIXA * pixaSplitPix(PIX *pixs, l_int32 nx, l_int32 ny, l_int32 borderwidth, l_uint32 bordercolor)
pixaSplitPix()
l_ok pixSetAll(PIX *pix)
pixSetAll()
FILE * fopenReadFromMemory(const l_uint8 *data, size_t size)
fopenReadFromMemory()
PIXA * pixaReadBoth(const char *filename)
pixaReadBoth()
BOXA * boxaCopy(BOXA *boxa, l_int32 copyflag)
boxaCopy()
NUMA * numaCreate(l_int32 n)
numaCreate()
void boxaDestroy(BOXA **pboxa)
boxaDestroy()
BOX * pixaGetBox(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetBox()
PIXA * pixaCreateFromBoxa(PIX *pixs, BOXA *boxa, l_int32 start, l_int32 num, l_int32 *pcropwarn)
pixaCreateFromBoxa()
l_ok pixWriteStreamPng(FILE *fp, PIX *pix, l_float32 gamma)
pixWriteStreamPng()
l_ok pixaInsertPix(PIXA *pixa, l_int32 index, PIX *pixs, BOX *box)
pixaInsertPix()
PIX * pixClipRectangle(PIX *pixs, BOX *box, BOX **pboxc)
pixClipRectangle()
void * reallocNew(void **pindata, l_int32 oldsize, l_int32 newsize)
reallocNew()
l_int32 pixaGetBoxaCount(PIXA *pixa)
pixaGetBoxaCount()
PIX ** pixaGetPixArray(PIXA *pixa)
pixaGetPixArray()
l_ok pixaaJoin(PIXAA *paad, PIXAA *paas, l_int32 istart, l_int32 iend)
pixaaJoin()
l_ok pixaaWrite(const char *filename, PIXAA *paa)
pixaaWrite()
l_ok pixaChangeRefcount(PIXA *pixa, l_int32 delta)
pixaChangeRefcount()
PIX * pixaaGetPix(PIXAA *paa, l_int32 index, l_int32 ipix, l_int32 accessflag)
pixaaGetPix()
l_ok pixSetText(PIX *pix, const char *textstring)
pixSetText()
BOX * boxClone(BOX *box)
boxClone()
l_ok pixSetAllArbitrary(PIX *pix, l_uint32 val)
pixSetAllArbitrary()
l_int32 l_getStructStrFromFile(const char *filename, l_int32 field, char **pstr)
l_getStructStrFromFile()
l_ok pixClipToForeground(PIX *pixs, PIX **ppixd, BOX **pbox)
pixClipToForeground()
PIXA * pixaCopy(PIXA *pixa, l_int32 copyflag)
pixaCopy()
l_ok pixaWriteMem(l_uint8 **pdata, size_t *psize, PIXA *pixa)
pixaWriteMem()
l_ok numaGetIValue(NUMA *na, l_int32 index, l_int32 *pival)
numaGetIValue()
l_ok pixaAddPix(PIXA *pixa, PIX *pix, l_int32 copyflag)
pixaAddPix()
l_ok pixaaVerifyDimensions(PIXAA *paa, l_int32 *psame, l_int32 *pmaxw, l_int32 *pmaxh)
pixaaVerifyDimensions()
l_ok pixaClear(PIXA *pixa)
pixaClear()
l_ok boxaRemoveBoxAndSave(BOXA *boxa, l_int32 index, BOX **pbox)
boxaRemoveBoxAndSave()
l_int32 numaGetCount(NUMA *na)
numaGetCount()
l_ok pixaaReplacePixa(PIXAA *paa, l_int32 index, PIXA *pixa)
pixaaReplacePixa()
l_ok pixClearAll(PIX *pix)
pixClearAll()
PIXA * pixaCreateFromPix(PIX *pixs, l_int32 n, l_int32 cellw, l_int32 cellh)
pixaCreateFromPix()
l_ok boxaAddBox(BOXA *boxa, BOX *box, l_int32 copyflag)
boxaAddBox()
l_ok pixaaClear(PIXAA *paa)
pixaaClear()
#define PIXAA_VERSION_NUMBER
l_ok pixaaTruncate(PIXAA *paa)
pixaaTruncate()
FILE * fopenWriteWinTempfile()
fopenWriteWinTempfile()
char * sarrayGetString(SARRAY *sa, l_int32 index, l_int32 copyflag)
sarrayGetString()
l_ok pixaGetBoxGeometry(PIXA *pixa, l_int32 index, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
pixaGetBoxGeometry()
PIXA * pixaReadStream(FILE *fp)
pixaReadStream()
PIX * pixClone(PIX *pixs)
pixClone()
void pixacompDestroy(PIXAC **ppixac)
pixacompDestroy()
PIXAA * pixaaRead(const char *filename)
pixaaRead()
void pixDestroy(PIX **ppix)
pixDestroy()
l_ok pixCopyColormap(PIX *pixd, PIX *pixs)
pixCopyColormap()
l_ok pixaRemoveSelected(PIXA *pixa, NUMA *naindex)
pixaRemoveSelected()
BOX * boxaGetBox(BOXA *boxa, l_int32 index, l_int32 accessflag)
boxaGetBox()
static l_int32 pixaExtendArray(PIXA *pixa)
pixaExtendArray()
void *** pixaGetLinePtrs(PIXA *pixa, l_int32 *psize)
pixaGetLinePtrs()
SARRAY * getSortedPathnamesInDirectory(const char *dirname, const char *substr, l_int32 first, l_int32 nfiles)
getSortedPathnamesInDirectory()
l_ok boxaGetExtent(BOXA *boxa, l_int32 *pw, l_int32 *ph, BOX **pbox)
boxaGetExtent()
void numaDestroy(NUMA **pna)
numaDestroy()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
FILE * fopenWriteStream(const char *filename, const char *modestring)
fopenWriteStream()
#define PIXA_VERSION_NUMBER
FILE * fopenReadStream(const char *filename)
fopenReadStream()
PIXAA * pixaaCreateFromPixa(PIXA *pixa, l_int32 n, l_int32 type, l_int32 copyflag)
pixaaCreateFromPixa()
l_ok boxaInitFull(BOXA *boxa, BOX *box)
boxaInitFull()
l_ok pixaVerifyDimensions(PIXA *pixa, l_int32 *psame, l_int32 *pmaxw, l_int32 *pmaxh)
pixaVerifyDimensions()
l_uint8 * l_binaryReadStream(FILE *fp, size_t *pnbytes)
l_binaryReadStream()
l_int32 sarrayGetCount(SARRAY *sa)
sarrayGetCount()
l_ok boxaIsFull(BOXA *boxa, l_int32 *pfull)
boxaIsFull()
char * pixGetText(PIX *pix)
pixGetText()
l_ok pixaIsFull(PIXA *pixa, l_int32 *pfullpa, l_int32 *pfullba)
pixaIsFull()
l_ok pixaaWriteMem(l_uint8 **pdata, size_t *psize, PIXAA *paa)
pixaaWriteMem()
l_ok boxaRemoveBox(BOXA *boxa, l_int32 index)
boxaRemoveBox()
PIX * pixaGetPix(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetPix()
l_ok pixaaInitFull(PIXAA *paa, PIXA *pixa)
pixaaInitFull()
l_ok pixaaAddPixa(PIXAA *paa, PIXA *pixa, l_int32 copyflag)
pixaaAddPixa()
l_int32 pixcmapGetCount(PIXCMAP *cmap)
pixcmapGetCount()
l_ok pixaRemovePix(PIXA *pixa, l_int32 index)
pixaRemovePix()
BOX * boxCopy(BOX *box)
boxCopy()
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()
void boxDestroy(BOX **pbox)
boxDestroy()
l_ok pixaaVerifyDepth(PIXAA *paa, l_int32 *psame, l_int32 *pmaxd)
pixaaVerifyDepth()
l_int32 boxaGetCount(BOXA *boxa)
boxaGetCount()
BOXA * pixaaGetBoxa(PIXAA *paa, l_int32 accesstype)
pixaaGetBoxa()
l_ok pixaaWriteStream(FILE *fp, PIXAA *paa)
pixaaWriteStream()
l_ok boxaClear(BOXA *boxa)
boxaClear()
l_ok pixaWriteStream(FILE *fp, PIXA *pixa)
pixaWriteStream()
l_ok pixaAddBox(PIXA *pixa, BOX *box, l_int32 copyflag)
pixaAddBox()
l_ok boxGetGeometry(BOX *box, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
boxGetGeometry()
void pixaDestroy(PIXA **ppixa)
pixaDestroy()
l_int32 pixaGetCount(PIXA *pixa)
pixaGetCount()
l_ok pixaaAddPix(PIXAA *paa, l_int32 index, PIX *pix, BOX *box, l_int32 copyflag)
pixaaAddPix()
l_ok pixaReplacePix(PIXA *pixa, l_int32 index, PIX *pix, BOX *box)
pixaReplacePix()
l_ok boxaInsertBox(BOXA *boxa, l_int32 index, BOX *box)
boxaInsertBox()
void sarrayDestroy(SARRAY **psa)
sarrayDestroy()
BOXA * pixaGetBoxa(PIXA *pixa, l_int32 accesstype)
pixaGetBoxa()