152 #include "allheaders.h" 154 static const l_int32 INITIAL_PTR_ARRAYSIZE = 20;
157 extern l_int32 NumImageFileFormatExtensions;
158 extern const char *ImageFileFormatExtensions[];
163 l_uint8 **pdata,
size_t *pnbytes);
194 PROCNAME(
"pixcompCreateFromPix");
197 return (
PIXC *)ERROR_PTR(
"pix not defined", procName, NULL);
198 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
199 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
200 return (
PIXC *)ERROR_PTR(
"invalid comptype", procName, NULL);
202 if ((pixc = (
PIXC *)LEPT_CALLOC(1,
sizeof(
PIXC))) == NULL)
203 return (
PIXC *)ERROR_PTR(
"pixc not made", procName, NULL);
206 if (pixGetColormap(pix))
213 ret = pixWriteMem(&data, &size, pix, format);
215 L_ERROR(
"write to memory failed\n", procName);
246 l_int32 format, w, h, d, bps, spp, iscmap;
249 PROCNAME(
"pixcompCreateFromString");
252 return (
PIXC *)ERROR_PTR(
"data not defined", procName, NULL);
254 return (
PIXC *)ERROR_PTR(
"invalid copyflag", procName, NULL);
256 if (
pixReadHeaderMem(data, size, &format, &w, &h, &bps, &spp, &iscmap) == 1)
257 return (
PIXC *)ERROR_PTR(
"header data not read", procName, NULL);
258 if ((pixc = (
PIXC *)LEPT_CALLOC(1,
sizeof(
PIXC))) == NULL)
259 return (
PIXC *)ERROR_PTR(
"pixc not made", procName, NULL);
260 d = (spp == 3) ? 32 : bps * spp;
300 PROCNAME(
"pixcompCreateFromFile");
303 return (
PIXC *)ERROR_PTR(
"filename not defined", procName, NULL);
304 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
305 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
306 return (
PIXC *)ERROR_PTR(
"invalid comptype", procName, NULL);
309 if (format == IFF_UNKNOWN) {
310 L_ERROR(
"unreadable file: %s\n", procName, filename);
318 if ((format == IFF_TIFF_G4 && comptype != IFF_PNG) ||
319 (format == IFF_JFIF_JPEG && comptype != IFF_PNG))
321 if (comptype != IFF_DEFAULT && comptype == format) {
325 return (
PIXC *)ERROR_PTR(
"pixc not made (string)", procName, NULL);
331 if ((pix =
pixRead(filename)) == NULL)
332 return (
PIXC *)ERROR_PTR(
"pix not read", procName, NULL);
335 return (
PIXC *)ERROR_PTR(
"pixc not made", procName, NULL);
358 PROCNAME(
"pixcompDestroy");
361 L_WARNING(
"ptr address is null!\n", procName);
365 if ((pixc = *ppixc) == NULL)
368 LEPT_FREE(pixc->
data);
370 LEPT_FREE(pixc->
text);
387 l_uint8 *datas, *datad;
390 PROCNAME(
"pixcompCopy");
393 return (
PIXC *)ERROR_PTR(
"pixcs not defined", procName, NULL);
395 if ((pixcd = (
PIXC *)LEPT_CALLOC(1,
sizeof(
PIXC))) == NULL)
396 return (
PIXC *)ERROR_PTR(
"pixcd not made", procName, NULL);
403 if (pixcs->
text != NULL)
410 datad = (l_uint8 *)LEPT_CALLOC(size,
sizeof(l_int8));
411 memcpy(datad, datas, size);
434 PROCNAME(
"pixcompGetDimensions");
437 return ERROR_INT(
"pixc not defined", procName, 1);
438 if (pw) *pw = pixc->
w;
439 if (ph) *ph = pixc->
h;
440 if (pd) *pd = pixc->
d;
459 PROCNAME(
"pixcompGetParameters");
462 return ERROR_INT(
"pixc not defined", procName, 1);
463 if (pxres) *pxres = pixc->
xres;
464 if (pyres) *pyres = pixc->
yres;
465 if (pcomptype) *pcomptype = pixc->
comptype;
466 if (pcmapflag) *pcmapflag = pixc->
cmapflag;
501 PROCNAME(
"pixcompDetermineFormat");
504 return ERROR_INT(
"&format not defined", procName, 1);
506 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
507 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
508 return ERROR_INT(
"invalid comptype", procName, 1);
510 if (comptype == IFF_DEFAULT) {
512 *pformat = IFF_TIFF_G4;
515 else if (d >= 8 && !cmapflag)
516 *pformat = IFF_JFIF_JPEG;
517 }
else if (comptype == IFF_TIFF_G4 && d == 1) {
518 *pformat = IFF_TIFF_G4;
519 }
else if (comptype == IFF_JFIF_JPEG && d >= 8 && !cmapflag) {
520 *pformat = IFF_JFIF_JPEG;
539 l_int32 w, h, d, cmapinpix, format;
542 PROCNAME(
"pixCreateFromPixcomp");
545 return (
PIX *)ERROR_PTR(
"pixc not defined", procName, NULL);
548 return (
PIX *)ERROR_PTR(
"pix not read", procName, NULL);
556 L_INFO(
"pix width %d != pixc width %d\n", procName, w, pixc->
w);
557 L_ERROR(
"pix width %d != pixc width\n", procName, w);
560 L_ERROR(
"pix height %d != pixc height\n", procName, h);
563 L_WARNING(
"pix depth %d != pixc depth 16\n", procName, d);
565 L_ERROR(
"pix depth %d != pixc depth\n", procName, d);
567 cmapinpix = (pixGetColormap(pix) != NULL);
569 L_ERROR(
"pix cmap flag inconsistent\n", procName);
570 format = pixGetInputFormat(pix);
572 L_ERROR(
"pix comptype %d not equal to pixc comptype\n",
594 PROCNAME(
"pixacompCreate");
597 n = INITIAL_PTR_ARRAYSIZE;
599 if ((pixac = (
PIXAC *)LEPT_CALLOC(1,
sizeof(
PIXAC))) == NULL)
600 return (
PIXAC *)ERROR_PTR(
"pixac not made", procName, NULL);
605 if ((pixac->
pixc = (
PIXC **)LEPT_CALLOC(n,
sizeof(
PIXC *))) == NULL) {
607 return (
PIXAC *)ERROR_PTR(
"pixc ptrs not made", procName, NULL);
611 return (
PIXAC *)ERROR_PTR(
"boxa not made", procName, NULL);
667 PROCNAME(
"pixacompCreateWithInit");
670 return (
PIXAC *)ERROR_PTR(
"n must be > 0", procName, NULL);
672 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
673 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
674 return (
PIXAC *)ERROR_PTR(
"invalid comptype", procName, NULL);
676 comptype = IFF_TIFF_G4;
679 L_WARNING(
"offset < 0; setting to 0\n", procName);
684 return (
PIXAC *)ERROR_PTR(
"pixac not made", procName, NULL);
690 for (i = 0; i < n; i++) {
730 PROCNAME(
"pixacompCreateFromPixa");
733 return (
PIXAC *)ERROR_PTR(
"pixa not defined", procName, NULL);
734 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
735 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
736 return (
PIXAC *)ERROR_PTR(
"invalid comptype", procName, NULL);
739 return (
PIXAC *)ERROR_PTR(
"invalid accesstype", procName, NULL);
743 return (
PIXAC *)ERROR_PTR(
"pixac not made", procName, NULL);
744 for (i = 0; i < n; i++) {
749 if ((boxa =
pixaGetBoxa(pixa, accesstype)) != NULL) {
787 PROCNAME(
"pixacompCreateFromFiles");
790 return (
PIXAC *)ERROR_PTR(
"dirname not defined", procName, NULL);
791 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
792 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
793 return (
PIXAC *)ERROR_PTR(
"invalid comptype", procName, NULL);
796 return (
PIXAC *)ERROR_PTR(
"sa not made", procName, NULL);
827 PROCNAME(
"pixacompCreateFromSA");
830 return (
PIXAC *)ERROR_PTR(
"sarray not defined", procName, NULL);
831 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
832 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
833 return (
PIXAC *)ERROR_PTR(
"invalid comptype", procName, NULL);
837 for (i = 0; i < n; i++) {
840 L_ERROR(
"pixc not read from file: %s\n", procName, str);
866 PROCNAME(
"pixacompDestroy");
868 if (ppixac == NULL) {
869 L_WARNING(
"ptr address is NULL!\n", procName);
873 if ((pixac = *ppixac) == NULL)
876 for (i = 0; i < pixac->
n; i++)
878 LEPT_FREE(pixac->
pixc);
912 l_int32 cmapflag, format;
915 PROCNAME(
"pixacompAddPix");
918 return ERROR_INT(
"pixac not defined", procName, 1);
920 return ERROR_INT(
"pix not defined", procName, 1);
921 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
922 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
923 return ERROR_INT(
"invalid format", procName, 1);
925 cmapflag = pixGetColormap(pix) ? 1 : 0;
928 return ERROR_INT(
"pixc not made", procName, 1);
956 PROCNAME(
"pixacompAddPixcomp");
959 return ERROR_INT(
"pixac not defined", procName, 1);
961 return ERROR_INT(
"pixc not defined", procName, 1);
963 return ERROR_INT(
"invalid copyflag", procName, 1);
969 pixac->
pixc[n] = pixc;
995 PROCNAME(
"pixacompExtendArray");
998 return ERROR_INT(
"pixac not defined", procName, 1);
1002 2 *
sizeof(
PIXC *) * pixac->
nalloc)) == NULL)
1003 return ERROR_INT(
"new ptr array not returned", procName, 1);
1036 PROCNAME(
"pixacompReplacePix");
1039 return ERROR_INT(
"pixac not defined", procName, 1);
1041 aindex = index - pixac->
offset;
1042 if (aindex < 0 || aindex >= n)
1043 return ERROR_INT(
"array index out of bounds", procName, 1);
1045 return ERROR_INT(
"pix not defined", procName, 1);
1046 if (comptype != IFF_DEFAULT && comptype != IFF_TIFF_G4 &&
1047 comptype != IFF_PNG && comptype != IFF_JFIF_JPEG)
1048 return ERROR_INT(
"invalid format", procName, 1);
1080 PROCNAME(
"pixacompReplacePixcomp");
1083 return ERROR_INT(
"pixac not defined", procName, 1);
1085 aindex = index - pixac->
offset;
1086 if (aindex < 0 || aindex >= n)
1087 return ERROR_INT(
"array index out of bounds", procName, 1);
1089 return ERROR_INT(
"pixc not defined", procName, 1);
1093 pixac->
pixc[aindex] = pixc;
1112 PROCNAME(
"pixacompAddBox");
1115 return ERROR_INT(
"pixac not defined", procName, 1);
1117 return ERROR_INT(
"box not defined", procName, 1);
1119 return ERROR_INT(
"invalid copyflag", procName, 1);
1138 PROCNAME(
"pixacompGetCount");
1141 return ERROR_INT(
"pixac not defined", procName, 0);
1170 PROCNAME(
"pixacompGetPixcomp");
1173 return (
PIXC *)ERROR_PTR(
"pixac not defined", procName, NULL);
1175 return (
PIXC *)ERROR_PTR(
"invalid copyflag", procName, NULL);
1176 aindex = index - pixac->
offset;
1177 if (aindex < 0 || aindex >= pixac->
n)
1178 return (
PIXC *)ERROR_PTR(
"array index not valid", procName, NULL);
1181 return pixac->
pixc[aindex];
1207 PROCNAME(
"pixacompGetPix");
1210 return (
PIX *)ERROR_PTR(
"pixac not defined", procName, NULL);
1211 aindex = index - pixac->
offset;
1212 if (aindex < 0 || aindex >= pixac->
n)
1213 return (
PIX *)ERROR_PTR(
"array index not valid", procName, NULL);
1245 PROCNAME(
"pixacompGetPixDimensions");
1248 return ERROR_INT(
"pixac not defined", procName, 1);
1249 aindex = index - pixac->
offset;
1250 if (aindex < 0 || aindex >= pixac->
n)
1251 return ERROR_INT(
"array index not valid", procName, 1);
1253 if ((pixc = pixac->
pixc[aindex]) == NULL)
1254 return ERROR_INT(
"pixc not found!", procName, 1);
1271 PROCNAME(
"pixacompGetBoxa");
1274 return (
BOXA *)ERROR_PTR(
"pixac not defined", procName, NULL);
1276 return (
BOXA *)ERROR_PTR(
"boxa not defined", procName, NULL);
1279 return (
BOXA *)ERROR_PTR(
"invalid accesstype", procName, NULL);
1294 PROCNAME(
"pixacompGetBoxaCount");
1297 return ERROR_INT(
"pixac not defined", procName, 0);
1334 PROCNAME(
"pixacompGetBox");
1337 return (
BOX *)ERROR_PTR(
"pixac not defined", procName, NULL);
1339 return (
BOX *)ERROR_PTR(
"boxa not defined", procName, NULL);
1340 aindex = index - pixac->
offset;
1341 if (aindex < 0 || aindex >= pixac->
boxa->
n)
1342 return (
BOX *)ERROR_PTR(
"array index not valid", procName, NULL);
1344 return (
BOX *)ERROR_PTR(
"invalid accesstype", procName, NULL);
1346 box = pixac->
boxa->
box[aindex];
1348 if (accesstype ==
L_COPY)
1384 PROCNAME(
"pixacompGetBoxGeometry");
1387 return ERROR_INT(
"pixac not defined", procName, 1);
1388 aindex = index - pixac->
offset;
1389 if (aindex < 0 || aindex >= pixac->
n)
1390 return ERROR_INT(
"array index not valid", procName, 1);
1393 return ERROR_INT(
"box not found!", procName, 1);
1416 PROCNAME(
"pixacompGetOffset");
1419 return ERROR_INT(
"pixac not defined", procName, 0);
1442 PROCNAME(
"pixacompSetOffset");
1445 return ERROR_INT(
"pixac not defined", procName, 1);
1446 pixac->
offset = L_MAX(0, offset);
1472 l_int32 i, n, offset;
1476 PROCNAME(
"pixaCreateFromPixacomp");
1479 return (
PIXA *)ERROR_PTR(
"pixac not defined", procName, NULL);
1482 return (
PIXA *)ERROR_PTR(
"invalid accesstype", procName, NULL);
1488 return (
PIXA *)ERROR_PTR(
"pixa not made", procName, NULL);
1489 for (i = 0; i < n; i++) {
1491 L_WARNING(
"pix %d not made\n", procName, i);
1533 BOXA *boxas, *boxad;
1536 PROCNAME(
"pixacompJoin");
1539 return ERROR_INT(
"pixacd not defined", procName, 1);
1545 if (iend < 0 || iend >= n)
1548 return ERROR_INT(
"istart > iend; nothing to add", procName, 1);
1550 for (i = istart; i <= iend; i++) {
1558 iend = L_MIN(iend, nb - 1);
1559 boxaJoin(boxad, boxas, istart, iend);
1583 l_int32 i, n1, n2, n, nb1, nb2;
1585 PIXC *pixc1, *pixc2;
1588 PROCNAME(
"pixacompInterleave");
1591 return (
PIXAC *)ERROR_PTR(
"pixac1 not defined", procName, NULL);
1593 return (
PIXAC *)ERROR_PTR(
"pixac2 not defined", procName, NULL);
1598 return (
PIXAC *)ERROR_PTR(
"at least one input pixac is empty",
1601 L_WARNING(
"counts differ: %d != %d\n", procName, n1, n2);
1606 for (i = 0; i < n; i++) {
1647 PROCNAME(
"pixacompRead");
1650 return (
PIXAC *)ERROR_PTR(
"filename not defined", procName, NULL);
1653 return (
PIXAC *)ERROR_PTR(
"stream not opened", procName, NULL);
1657 return (
PIXAC *)ERROR_PTR(
"pixac not read", procName, NULL);
1673 l_int32 n, offset, i, w, h, d, ignore;
1674 l_int32 comptype, size, cmapflag, version, xres, yres;
1679 PROCNAME(
"pixacompReadStream");
1682 return (
PIXAC *)ERROR_PTR(
"stream not defined", procName, NULL);
1684 if (fscanf(fp,
"\nPixacomp Version %d\n", &version) != 1)
1685 return (
PIXAC *)ERROR_PTR(
"not a pixacomp file", procName, NULL);
1687 return (
PIXAC *)ERROR_PTR(
"invalid pixacomp version", procName, NULL);
1688 if (fscanf(fp,
"Number of pixcomp = %d\n", &n) != 1)
1689 return (
PIXAC *)ERROR_PTR(
"not a pixacomp file", procName, NULL);
1690 if (fscanf(fp,
"Offset of index into array = %d", &offset) != 1)
1691 return (
PIXAC *)ERROR_PTR(
"offset not read", procName, NULL);
1694 return (
PIXAC *)ERROR_PTR(
"pixac not made", procName, NULL);
1697 return (
PIXAC *)ERROR_PTR(
"boxa not made", procName, NULL);
1703 for (i = 0; i < n; i++) {
1704 if (fscanf(fp,
"\nPixcomp[%d]: w = %d, h = %d, d = %d\n",
1705 &ignore, &w, &h, &d) != 4) {
1707 return (
PIXAC *)ERROR_PTR(
"size reading", procName, NULL);
1709 if (fscanf(fp,
" comptype = %d, size = %d, cmapflag = %d\n",
1710 &comptype, &size, &cmapflag) != 3) {
1712 return (
PIXAC *)ERROR_PTR(
"comptype/size reading", procName, NULL);
1720 if (fgets(buf,
sizeof(buf), fp) == NULL) {
1722 return (
PIXAC *)ERROR_PTR(
"fgets read fail", procName, NULL);
1724 if (sscanf(buf,
" xres = %d, yres = %d\n", &xres, &yres) != 2) {
1726 return (
PIXAC *)ERROR_PTR(
"read fail for res", procName, NULL);
1728 if ((data = (l_uint8 *)LEPT_CALLOC(1, size)) == NULL) {
1730 return (
PIXAC *)ERROR_PTR(
"calloc fail for data", procName, NULL);
1732 if (fread(data, 1, size, fp) != size) {
1735 return (
PIXAC *)ERROR_PTR(
"error reading data", procName, NULL);
1738 pixc = (
PIXC *)LEPT_CALLOC(1,
sizeof(
PIXC));
1773 PROCNAME(
"pixacompReadMem");
1776 return (
PIXAC *)ERROR_PTR(
"data not defined", procName, NULL);
1778 return (
PIXAC *)ERROR_PTR(
"stream not opened", procName, NULL);
1782 if (!pixac) L_ERROR(
"pixac not read\n", procName);
1808 PROCNAME(
"pixacompWrite");
1811 return ERROR_INT(
"filename not defined", procName, 1);
1813 return ERROR_INT(
"pixacomp not defined", procName, 1);
1816 return ERROR_INT(
"stream not opened", procName, 1);
1820 return ERROR_INT(
"pixacomp not written to stream", procName, 1);
1839 PROCNAME(
"pixacompWriteStream");
1842 return ERROR_INT(
"stream not defined", procName, 1);
1844 return ERROR_INT(
"pixac not defined", procName, 1);
1848 fprintf(fp,
"Number of pixcomp = %d\n", n);
1849 fprintf(fp,
"Offset of index into array = %d", pixac->
offset);
1851 for (i = 0; i < n; i++) {
1854 return ERROR_INT(
"pixc not found", procName, 1);
1855 fprintf(fp,
"\nPixcomp[%d]: w = %d, h = %d, d = %d\n",
1856 i, pixc->
w, pixc->
h, pixc->
d);
1857 fprintf(fp,
" comptype = %d, size = %lu, cmapflag = %d\n",
1859 fprintf(fp,
" xres = %d, yres = %d\n", pixc->
xres, pixc->
yres);
1860 fwrite(pixc->
data, 1, pixc->
size, fp);
1888 PROCNAME(
"pixacompWriteMem");
1890 if (pdata) *pdata = NULL;
1891 if (psize) *psize = 0;
1893 return ERROR_INT(
"&data not defined", procName, 1);
1895 return ERROR_INT(
"&size not defined", procName, 1);
1897 return ERROR_INT(
"&pixac not defined", procName, 1);
1900 if ((fp = open_memstream((
char **)pdata, psize)) == NULL)
1901 return ERROR_INT(
"stream not opened", procName, 1);
1904 L_INFO(
"work-around: writing to a temp file\n", procName);
1907 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
1909 if ((fp = tmpfile()) == NULL)
1910 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
1958 l_float32 scalefactor,
1962 const char *fileout)
1968 PROCNAME(
"pixacompConvertToPdf");
1971 return ERROR_INT(
"pixac not defined", procName, 1);
1977 return ERROR_INT(
"conversion to pdf failed", procName, 1);
1983 L_ERROR(
"pdf data not written to file\n", procName);
2010 l_float32 scalefactor,
2018 l_int32 i, n, ret, scaledres, pagetype;
2024 PROCNAME(
"pixacompConvertToPdfData");
2027 return ERROR_INT(
"&data not defined", procName, 1);
2030 return ERROR_INT(
"&nbytes not defined", procName, 1);
2033 return ERROR_INT(
"pixac not defined", procName, 1);
2034 if (scalefactor <= 0.0) scalefactor = 1.0;
2036 L_WARNING(
"invalid compression type; using per-page default\n",
2044 for (i = 0; i < n; i++) {
2047 L_ERROR(
"pix[%d] not retrieved\n", procName, i);
2050 if (pixGetWidth(pixs) == 1) {
2051 L_INFO(
"placeholder image[%d] has w = 1\n", procName, i);
2055 if (scalefactor != 1.0)
2056 pix =
pixScale(pixs, scalefactor, scalefactor);
2060 scaledres = (l_int32)(res * scalefactor);
2064 L_ERROR(
"encoding type selection failed for pix[%d]\n",
2070 0, 0, scaledres, title, NULL, 0);
2073 L_ERROR(
"pdf encoding failed for pix[%d]\n", procName, i);
2082 L_ERROR(
"no pdf files made\n", procName);
2091 for (i = 0; i < n; i++) {
2125 l_int32 i, n, ret, comptype;
2131 PROCNAME(
"pixacompFastConvertToPdfData");
2134 return ERROR_INT(
"&data not defined", procName, 1);
2137 return ERROR_INT(
"&nbytes not defined", procName, 1);
2140 return ERROR_INT(
"pixac not defined", procName, 1);
2145 for (i = 0; i < n; i++) {
2147 L_ERROR(
"pixc[%d] not retrieved\n", procName, i);
2151 if (comptype != IFF_JFIF_JPEG) {
2152 L_ERROR(
"pixc[%d] not jpeg compressed\n", procName, i);
2157 L_ERROR(
"pdf encoding failed for pixc[%d]\n", procName, i);
2166 L_ERROR(
"no pdf files made\n", procName);
2176 for (i = 0; i < n; i++) {
2212 PROCNAME(
"pixacompFastConvertToPdfData");
2215 return ERROR_INT(
"&data not defined", procName, 1);
2218 return ERROR_INT(
"&nbytes not defined", procName, 1);
2221 return ERROR_INT(
"pixc not defined", procName, 1);
2248 l_int32 i, n, nboxes;
2251 PROCNAME(
"pixacompWriteStreamInfo");
2254 return ERROR_INT(
"fp not defined", procName, 1);
2256 return ERROR_INT(
"pixac not defined", procName, 1);
2259 fprintf(fp,
"Pixacomp Info for %s:\n", text);
2261 fprintf(fp,
"Pixacomp Info:\n");
2264 fprintf(fp,
"Number of pixcomp: %d\n", n);
2265 fprintf(fp,
"Size of pixcomp array alloc: %d\n", pixac->
nalloc);
2266 fprintf(fp,
"Offset of index into array: %d\n", pixac->
offset);
2268 fprintf(fp,
"Boxa has %d boxes\n", nboxes);
2270 fprintf(fp,
"Boxa is empty\n");
2271 for (i = 0; i < n; i++) {
2292 PROCNAME(
"pixcompWriteStreamInfo");
2295 return ERROR_INT(
"fp not defined", procName, 1);
2297 return ERROR_INT(
"pixc not defined", procName, 1);
2300 fprintf(fp,
" Pixcomp Info for %s:", text);
2302 fprintf(fp,
" Pixcomp Info:");
2303 fprintf(fp,
" width = %d, height = %d, depth = %d\n",
2304 pixc->
w, pixc->
h, pixc->
d);
2305 fprintf(fp,
" xres = %d, yres = %d, size in bytes = %lu\n",
2308 fprintf(fp,
" has colormap\n");
2310 fprintf(fp,
" no colormap\n");
2311 if (pixc->
comptype < NumImageFileFormatExtensions) {
2312 fprintf(fp,
" comptype = %s (%d)\n",
2315 fprintf(fp,
" Error!! Invalid comptype index: %d\n", pixc->
comptype);
2355 PROCNAME(
"pixacompDisplayTiledAndScaled");
2358 return (
PIX *)ERROR_PTR(
"pixac not defined", procName, NULL);
2361 return (
PIX *)ERROR_PTR(
"pixa not made", procName, NULL);
2364 background, spacing, border);
2385 PROCNAME(
"pixacompWriteFiles");
2388 return ERROR_INT(
"pixac not defined", procName, 1);
2391 return ERROR_INT(
"invalid subdir", procName, 1);
2394 for (i = 0; i < n; i++) {
2396 snprintf(buf,
sizeof(buf),
"/tmp/%s/%03d", subdir, i);
2402 extern const char *ImageFileFormatExtensions[];
2423 PROCNAME(
"pixcompWriteFile");
2426 return ERROR_INT(
"pixc not defined", procName, 1);
2428 snprintf(buf,
sizeof(buf),
"%s.%s", rootname,
2429 ImageFileFormatExtensions[pixc->
comptype]);
BOXA * boxaReadStream(FILE *fp)
boxaReadStream()
PIXAC * pixacompCreateFromPixa(PIXA *pixa, l_int32 comptype, l_int32 accesstype)
pixacompCreateFromPixa()
PIX * pixacompGetPix(PIXAC *pixac, l_int32 index)
pixacompGetPix()
l_int32 lept_mkdir(const char *subdir)
lept_mkdir()
l_ok ptraConcatenatePdfToData(L_PTRA *pa_data, SARRAY *sa, l_uint8 **pdata, size_t *pnbytes)
ptraConcatenatePdfToData()
l_ok boxaJoin(BOXA *boxad, BOXA *boxas, l_int32 istart, l_int32 iend)
boxaJoin()
l_ok pixacompAddPix(PIXAC *pixac, PIX *pix, l_int32 comptype)
pixacompAddPix()
l_ok ptraGetActualCount(L_PTRA *pa, l_int32 *pcount)
ptraGetActualCount()
l_int32 pixacompGetOffset(PIXAC *pixac)
pixacompGetOffset()
PIXC * pixcompCreateFromPix(PIX *pix, l_int32 comptype)
pixcompCreateFromPix()
l_int32 pixacompGetBoxaCount(PIXAC *pixac)
pixacompGetBoxaCount()
PIX * pixCreateFromPixcomp(PIXC *pixc)
pixCreateFromPixcomp()
PIXA * pixaCreate(l_int32 n)
pixaCreate()
PIXAC * pixacompRead(const char *filename)
pixacompRead()
l_ok boxaExtendArray(BOXA *boxa)
boxaExtendArray()
char * stringNew(const char *src)
stringNew()
PIXA * pixaCreateFromPixacomp(PIXAC *pixac, l_int32 accesstype)
pixaCreateFromPixacomp()
l_ok boxaWriteStream(FILE *fp, BOXA *boxa)
boxaWriteStream()
PIXAC * pixacompReadMem(const l_uint8 *data, size_t size)
pixacompReadMem()
L_BYTEA * l_byteaInitFromMem(const l_uint8 *data, size_t size)
l_byteaInitFromMem()
PIX * pixCreate(l_int32 width, l_int32 height, l_int32 depth)
pixCreate()
FILE * fopenReadFromMemory(const l_uint8 *data, size_t size)
fopenReadFromMemory()
l_ok pixacompGetPixDimensions(PIXAC *pixac, l_int32 index, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixacompGetPixDimensions()
BOXA * boxaCopy(BOXA *boxa, l_int32 copyflag)
boxaCopy()
void boxaDestroy(BOXA **pboxa)
boxaDestroy()
l_ok pixacompFastConvertToPdfData(PIXAC *pixac, const char *title, l_uint8 **pdata, size_t *pnbytes)
pixacompFastConvertToPdfData()
PIXAC * pixacompCreate(l_int32 n)
pixacompCreate()
l_ok pixacompReplacePixcomp(PIXAC *pixac, l_int32 index, PIXC *pixc)
pixacompReplacePixcomp()
l_ok cidConvertToPdfData(L_COMP_DATA *cid, const char *title, l_uint8 **pdata, size_t *pnbytes)
cidConvertToPdfData()
l_uint8 * l_binaryCopy(l_uint8 *datas, size_t size)
l_binaryCopy()
l_ok pixacompConvertToPdf(PIXAC *pixac, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, const char *fileout)
pixacompConvertToPdf()
BOX * pixacompGetBox(PIXAC *pixac, l_int32 index, l_int32 accesstype)
pixacompGetBox()
PIX * pixReadMem(const l_uint8 *data, size_t size)
pixReadMem()
l_ok pixacompJoin(PIXAC *pixacd, PIXAC *pixacs, l_int32 istart, l_int32 iend)
pixacompJoin()
void * reallocNew(void **pindata, l_int32 oldsize, l_int32 newsize)
reallocNew()
l_ok pixacompWriteMem(l_uint8 **pdata, size_t *psize, PIXAC *pixac)
pixacompWriteMem()
l_ok pixacompGetBoxGeometry(PIXAC *pixac, l_int32 index, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
pixacompGetBoxGeometry()
l_ok pixSetText(PIX *pix, const char *textstring)
pixSetText()
l_ok pixGetResolution(const PIX *pix, l_int32 *pxres, l_int32 *pyres)
pixGetResolution()
BOX * boxClone(BOX *box)
boxClone()
l_ok l_binaryWrite(const char *filename, const char *operation, const void *data, size_t nbytes)
l_binaryWrite()
#define PIXACOMP_VERSION_NUMBER
l_uint8 * l_binaryRead(const char *filename, size_t *pnbytes)
l_binaryRead()
l_ok pixaAddPix(PIXA *pixa, PIX *pix, l_int32 copyflag)
pixaAddPix()
L_PTRA * ptraCreate(l_int32 n)
ptraCreate()
l_ok pixcompWriteStreamInfo(FILE *fp, PIXC *pixc, const char *text)
pixcompWriteStreamInfo()
static l_int32 pixcompFastConvertToPdfData(PIXC *pixc, const char *title, l_uint8 **pdata, size_t *pnbytes)
pixcompFastConvertToPdfData()
PIXAC * pixacompCreateWithInit(l_int32 n, l_int32 offset, PIX *pix, l_int32 comptype)
pixacompCreateWithInit()
l_ok boxaAddBox(BOXA *boxa, BOX *box, l_int32 copyflag)
boxaAddBox()
l_ok pixcompGetDimensions(PIXC *pixc, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixcompGetDimensions()
PIXAC * pixacompInterleave(PIXAC *pixac1, PIXAC *pixac2)
pixacompInterleave()
FILE * fopenWriteWinTempfile()
fopenWriteWinTempfile()
l_ok findFileFormat(const char *filename, l_int32 *pformat)
findFileFormat()
char * sarrayGetString(SARRAY *sa, l_int32 index, l_int32 copyflag)
sarrayGetString()
PIXAC * pixacompCreateFromFiles(const char *dirname, const char *substr, l_int32 comptype)
pixacompCreateFromFiles()
PIXAC * pixacompReadStream(FILE *fp)
pixacompReadStream()
l_ok pixcompGetParameters(PIXC *pixc, l_int32 *pxres, l_int32 *pyres, l_int32 *pcomptype, l_int32 *pcmapflag)
pixcompGetParameters()
l_ok pixacompAddPixcomp(PIXAC *pixac, PIXC *pixc, l_int32 copyflag)
pixacompAddPixcomp()
PIX * pixClone(PIX *pixs)
pixClone()
PIX * pixaDisplayTiledAndScaled(PIXA *pixa, l_int32 outdepth, l_int32 tilewidth, l_int32 ncols, l_int32 background, l_int32 spacing, l_int32 border)
pixaDisplayTiledAndScaled()
PIXC * pixacompGetPixcomp(PIXAC *pixac, l_int32 index, l_int32 copyflag)
pixacompGetPixcomp()
void pixacompDestroy(PIXAC **ppixac)
pixacompDestroy()
void pixDestroy(PIX **ppix)
pixDestroy()
static l_int32 pixacompExtendArray(PIXAC *pixac)
pixacompExtendArray()
l_ok pixacompReplacePix(PIXAC *pixac, l_int32 index, PIX *pix, l_int32 comptype)
pixacompReplacePix()
l_ok selectDefaultPdfEncoding(PIX *pix, l_int32 *ptype)
selectDefaultPdfEncoding()
l_ok pixacompWriteStreamInfo(FILE *fp, PIXAC *pixac, const char *text)
pixacompWriteStreamInfo()
SARRAY * getSortedPathnamesInDirectory(const char *dirname, const char *substr, l_int32 first, l_int32 nfiles)
getSortedPathnamesInDirectory()
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()
l_ok pixacompConvertToPdfData(PIXAC *pixac, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, l_uint8 **pdata, size_t *pnbytes)
pixacompConvertToPdfData()
PIXAC * pixacompCreateFromSA(SARRAY *sa, l_int32 comptype)
pixacompCreateFromSA()
l_ok pixConvertToPdfData(PIX *pix, l_int32 type, l_int32 quality, l_uint8 **pdata, size_t *pnbytes, l_int32 x, l_int32 y, l_int32 res, const char *title, L_PDF_DATA **plpd, l_int32 position)
pixConvertToPdfData()
void ptraDestroy(L_PTRA **ppa, l_int32 freeflag, l_int32 warnflag)
ptraDestroy()
FILE * fopenReadStream(const char *filename)
fopenReadStream()
l_ok pixacompWrite(const char *filename, PIXAC *pixac)
pixacompWrite()
l_uint8 * l_binaryReadStream(FILE *fp, size_t *pnbytes)
l_binaryReadStream()
PIX * pixacompDisplayTiledAndScaled(PIXAC *pixac, l_int32 outdepth, l_int32 tilewidth, l_int32 ncols, l_int32 background, l_int32 spacing, l_int32 border)
pixacompDisplayTiledAndScaled()
l_int32 sarrayGetCount(SARRAY *sa)
sarrayGetCount()
l_ok ptraAdd(L_PTRA *pa, void *item)
ptraAdd()
PIX * pixRead(const char *filename)
pixRead()
char * pixGetText(PIX *pix)
pixGetText()
l_ok pixacompWriteFiles(PIXAC *pixac, const char *subdir)
pixacompWriteFiles()
PIXC * pixcompCreateFromString(l_uint8 *data, size_t size, l_int32 copyflag)
pixcompCreateFromString()
PIX * pixaGetPix(PIXA *pixa, l_int32 index, l_int32 accesstype)
pixaGetPix()
l_ok pixReadHeaderMem(const l_uint8 *data, size_t size, l_int32 *pformat, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap)
pixReadHeaderMem()
PIXC * pixcompCreateFromFile(const char *filename, l_int32 comptype)
pixcompCreateFromFile()
void * ptraRemove(L_PTRA *pa, l_int32 index, l_int32 flag)
ptraRemove()
BOX * boxCopy(BOX *box)
boxCopy()
PIXC * pixcompCopy(PIXC *pixcs)
pixcompCopy()
void pixcompDestroy(PIXC **ppixc)
pixcompDestroy()
BOXA * boxaCreate(l_int32 n)
boxaCreate()
void boxDestroy(BOX **pbox)
boxDestroy()
l_int32 boxaGetCount(BOXA *boxa)
boxaGetCount()
l_int32 pixacompGetCount(PIXAC *pixac)
pixacompGetCount()
l_ok pixSetResolution(PIX *pix, l_int32 xres, l_int32 yres)
pixSetResolution()
void l_byteaDestroy(L_BYTEA **pba)
l_byteaDestroy()
L_COMP_DATA * l_generateJpegDataMem(l_uint8 *data, size_t nbytes, l_int32 ascii85flag)
l_generateJpegDataMem()
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()
l_ok pixacompWriteStream(FILE *fp, PIXAC *pixac)
pixacompWriteStream()
l_ok pixcompDetermineFormat(l_int32 comptype, l_int32 d, l_int32 cmapflag, l_int32 *pformat)
pixcompDetermineFormat()
l_ok pixcompWriteFile(const char *rootname, PIXC *pixc)
pixcompWriteFile()
l_int32 pixaGetCount(PIXA *pixa)
pixaGetCount()
BOXA * pixacompGetBoxa(PIXAC *pixac, l_int32 accesstype)
pixacompGetBoxa()
void sarrayDestroy(SARRAY **psa)
sarrayDestroy()
l_ok pixacompSetOffset(PIXAC *pixac, l_int32 offset)
pixacompSetOffset()
l_ok pixacompAddBox(PIXAC *pixac, BOX *box, l_int32 copyflag)
pixacompAddBox()
BOXA * pixaGetBoxa(PIXA *pixa, l_int32 accesstype)
pixaGetBoxa()