98 #include "allheaders.h" 115 PROCNAME(
"pixcmapCreate");
117 if (depth != 1 && depth != 2 && depth !=4 && depth != 8)
118 return (
PIXCMAP *)ERROR_PTR(
"depth not in {1,2,4,8}", procName, NULL);
122 cmap->
nalloc = 1 << depth;
162 l_int32 red[256], green[256], blue[256];
165 PROCNAME(
"pixcmapCreateRandom");
167 if (depth != 2 && depth != 4 && depth != 8)
168 return (
PIXCMAP *)ERROR_PTR(
"depth not in {2, 4, 8}", procName, NULL);
169 if (hasblack != 0) hasblack = 1;
170 if (haswhite != 0) haswhite = 1;
173 ncolors = 1 << depth;
176 for (i = hasblack; i < ncolors - haswhite; i++) {
177 red[i] = (l_uint32)rand() & 0xff;
178 green[i] = (l_uint32)rand() & 0xff;
179 blue[i] = (l_uint32)rand() & 0xff;
206 l_int32 maxlevels, i, val;
209 PROCNAME(
"pixcmapCreateLinear");
211 if (d != 1 && d != 2 && d !=4 && d != 8)
212 return (
PIXCMAP *)ERROR_PTR(
"d not in {1, 2, 4, 8}", procName, NULL);
214 if (nlevels < 2 || nlevels > maxlevels)
215 return (
PIXCMAP *)ERROR_PTR(
"invalid nlevels", procName, NULL);
218 for (i = 0; i < nlevels; i++) {
219 val = (255 * i) / (nlevels - 1);
238 PROCNAME(
"pixcmapCopy");
241 return (
PIXCMAP *)ERROR_PTR(
"cmaps not defined", procName, NULL);
243 return (
PIXCMAP *)ERROR_PTR(
"nalloc > 256", procName, NULL);
247 cmapd->
array = (
void *)LEPT_CALLOC(1, nbytes);
267 PROCNAME(
"pixcmapDestroy");
270 L_WARNING(
"ptr address is null!\n", procName);
274 if ((cmap = *pcmap) == NULL)
277 LEPT_FREE(cmap->
array);
306 PROCNAME(
"pixcmapAddColor");
309 return ERROR_INT(
"cmap not defined", procName, 1);
311 return ERROR_INT(
"no free color entries", procName, 1);
314 cta[cmap->
n].
red = rval;
315 cta[cmap->
n].
green = gval;
316 cta[cmap->
n].
blue = bval;
345 PROCNAME(
"pixcmapAddRGBA");
348 return ERROR_INT(
"cmap not defined", procName, 1);
350 return ERROR_INT(
"no free color entries", procName, 1);
353 cta[cmap->
n].
red = rval;
354 cta[cmap->
n].
green = gval;
355 cta[cmap->
n].
blue = bval;
356 cta[cmap->
n].
alpha = aval;
387 PROCNAME(
"pixcmapAddNewColor");
390 return ERROR_INT(
"&index not defined", procName, 1);
393 return ERROR_INT(
"cmap not defined", procName, 1);
401 L_WARNING(
"no free color entries\n", procName);
436 PROCNAME(
"pixcmapAddNearestColor");
439 return ERROR_INT(
"&index not defined", procName, 1);
442 return ERROR_INT(
"cmap not defined", procName, 1);
485 PROCNAME(
"pixcmapUsableColor");
488 return ERROR_INT(
"&usable not defined", procName, 1);
491 return ERROR_INT(
"cmap not defined", procName, 1);
530 PROCNAME(
"pixcmapAddBlackOrWhite");
532 if (pindex) *pindex = 0;
534 return ERROR_INT(
"cmap not defined", procName, 1);
569 PROCNAME(
"pixcmapSetBlackAndWhite");
572 return ERROR_INT(
"cmap not defined", procName, 1);
595 PROCNAME(
"pixcmapGetCount");
598 return ERROR_INT(
"cmap not defined", procName, 0);
612 PROCNAME(
"pixcmapGetFreeCount");
615 return ERROR_INT(
"cmap not defined", procName, 0);
616 return (cmap->
nalloc - cmap->
n);
629 PROCNAME(
"pixcmapGetDepth");
632 return ERROR_INT(
"cmap not defined", procName, 0);
655 PROCNAME(
"pixcmapGetMinDepth");
658 return ERROR_INT(
"&mindepth not defined", procName, 1);
661 return ERROR_INT(
"cmap not defined", procName, 1);
666 else if (ncolors <= 16)
688 PROCNAME(
"pixcmapClear");
691 return ERROR_INT(
"cmap not defined", procName, 1);
717 PROCNAME(
"pixcmapGetColor");
719 if (!prval || !pgval || !pbval)
720 return ERROR_INT(
"&rval, &gval, &bval not all defined", procName, 1);
721 *prval = *pgval = *pbval = 0;
723 return ERROR_INT(
"cmap not defined", procName, 1);
724 if (index < 0 || index >= cmap->
n)
725 return ERROR_INT(
"index out of bounds", procName, 1);
728 *prval = cta[index].
red;
729 *pgval = cta[index].
green;
730 *pbval = cta[index].
blue;
753 l_int32 rval, gval, bval;
755 PROCNAME(
"pixcmapGetColor32");
758 return ERROR_INT(
"&val32 not defined", procName, 1);
762 return ERROR_INT(
"rgb values not found", procName, 1);
786 PROCNAME(
"pixcmapGetRGBA");
788 if (!prval || !pgval || !pbval || !paval)
789 return ERROR_INT(
"&rval, &gval, &bval, &aval not all defined",
791 *prval = *pgval = *pbval = *paval = 0;
793 return ERROR_INT(
"cmap not defined", procName, 1);
794 if (index < 0 || index >= cmap->
n)
795 return ERROR_INT(
"index out of bounds", procName, 1);
798 *prval = cta[index].
red;
799 *pgval = cta[index].
green;
800 *pbval = cta[index].
blue;
801 *paval = cta[index].
alpha;
819 l_int32 rval, gval, bval, aval;
821 PROCNAME(
"pixcmapGetRGBA32");
824 return ERROR_INT(
"&val32 not defined", procName, 1);
828 return ERROR_INT(
"rgba values not found", procName, 1);
859 PROCNAME(
"pixcmapResetColor");
862 return ERROR_INT(
"cmap not defined", procName, 1);
863 if (index < 0 || index >= cmap->
n)
864 return ERROR_INT(
"index out of bounds", procName, 1);
867 cta[index].
red = rval;
868 cta[index].
green = gval;
869 cta[index].
blue = bval;
870 cta[index].
alpha = 255;
898 PROCNAME(
"pixcmapSetAlpha");
901 return ERROR_INT(
"cmap not defined", procName, 1);
902 if (index < 0 || index >= cmap->
n)
903 return ERROR_INT(
"index out of bounds", procName, 1);
906 cta[index].
alpha = aval;
930 PROCNAME(
"pixcmapGetIndex");
933 return ERROR_INT(
"&index not defined", procName, 1);
936 return ERROR_INT(
"cmap not defined", procName, 1);
940 for (i = 0; i <
n; i++) {
941 if (rval == cta[i].red &&
942 gval == cta[i].green &&
943 bval == cta[i].blue) {
964 l_int32 *rmap, *gmap, *bmap;
966 PROCNAME(
"pixcmapHasColor");
969 return ERROR_INT(
"&color not defined", procName, 1);
972 return ERROR_INT(
"cmap not defined", procName, 1);
975 return ERROR_INT(
"colormap arrays not made", procName, 1);
977 for (i = 0; i <
n; i++) {
978 if ((rmap[i] != gmap[i]) || (rmap[i] != bmap[i])) {
1005 PROCNAME(
"pixcmapIsOpaque");
1008 return ERROR_INT(
"&opaque not defined", procName, 1);
1011 return ERROR_INT(
"cmap not defined", procName, 1);
1015 for (i = 0; i <
n; i++) {
1016 if (cta[i].alpha != 255) {
1035 l_int32 *pblackwhite)
1037 l_int32 val0, val1, hascolor;
1040 PROCNAME(
"pixcmapIsBlackAndWhite");
1043 return ERROR_INT(
"&blackwhite not defined", procName, 1);
1044 *pblackwhite = FALSE;
1046 return ERROR_INT(
"cmap not defined", procName, 1);
1051 if (hascolor)
return 0;
1056 if ((val0 == 0 && val1 == 255) || (val0 == 255 && val1 == 0))
1057 *pblackwhite = TRUE;
1078 l_int32
n, i, rval, gval, bval, count;
1081 PROCNAME(
"pixcmapCountGrayColors");
1084 return ERROR_INT(
"&ngray not defined", procName, 1);
1087 return ERROR_INT(
"cmap not defined", procName, 1);
1089 array = (l_int32 *)LEPT_CALLOC(256,
sizeof(l_int32));
1092 for (i = 0; i <
n; i++) {
1094 if ((rval == gval) && (rval == bval) && (array[rval] == 0)) {
1120 l_int32
n, i, rval, gval, bval, rankindex;
1123 PROCNAME(
"pixcmapGetRankIntensity");
1126 return ERROR_INT(
"&index not defined", procName, 1);
1129 return ERROR_INT(
"cmap not defined", procName, 1);
1130 if (rankval < 0.0 || rankval > 1.0)
1131 return ERROR_INT(
"rankval not in [0.0 ... 1.0]", procName, 1);
1135 for (i = 0; i <
n; i++) {
1140 rankindex = (l_int32)(rankval * (
n - 1) + 0.5);
1173 l_int32 i,
n, delta, dist, mindist;
1176 PROCNAME(
"pixcmapGetNearestIndex");
1179 return ERROR_INT(
"&index not defined", procName, 1);
1182 return ERROR_INT(
"cmap not defined", procName, 1);
1185 return ERROR_INT(
"cta not defined(!)", procName, 1);
1188 mindist = 3 * 255 * 255 + 1;
1189 for (i = 0; i <
n; i++) {
1190 delta = cta[i].
red - rval;
1191 dist = delta * delta;
1192 delta = cta[i].
green - gval;
1193 dist += delta * delta;
1194 delta = cta[i].
blue - bval;
1195 dist += delta * delta;
1196 if (dist < mindist) {
1229 l_int32 i,
n, dist, mindist;
1232 PROCNAME(
"pixcmapGetNearestGrayIndex");
1235 return ERROR_INT(
"&index not defined", procName, 1);
1238 return ERROR_INT(
"cmap not defined", procName, 1);
1239 if (val < 0 || val > 255)
1240 return ERROR_INT(
"val not in [0 ... 255]", procName, 1);
1243 return ERROR_INT(
"cta not defined(!)", procName, 1);
1247 for (i = 0; i <
n; i++) {
1248 dist = cta[i].
green - val;
1250 if (dist < mindist) {
1285 l_int32
n, delta, dist;
1288 PROCNAME(
"pixcmapGetDistanceToColor");
1291 return ERROR_INT(
"&dist not defined", procName, 1);
1294 return ERROR_INT(
"cmap not defined", procName, 1);
1297 return ERROR_INT(
"invalid index", procName, 1);
1300 return ERROR_INT(
"cta not defined(!)", procName, 1);
1302 delta = cta[index].
red - rval;
1303 dist = delta * delta;
1304 delta = cta[index].
green - gval;
1305 dist += delta * delta;
1306 delta = cta[index].
blue - bval;
1307 dist += delta * delta;
1341 l_int32 i,
n, imin, imax, minval, maxval, rval, gval, bval, aveval;
1343 PROCNAME(
"pixcmapGetRangeValues");
1345 if (pminval) *pminval = UNDEF;
1346 if (pmaxval) *pmaxval = UNDEF;
1347 if (pminindex) *pminindex = UNDEF;
1348 if (pmaxindex) *pmaxindex = UNDEF;
1349 if (!pminval && !pmaxval && !pminindex && !pmaxindex)
1350 return ERROR_INT(
"no result requested", procName, 1);
1352 return ERROR_INT(
"cmap not defined", procName, 1);
1359 for (i = 0; i <
n; i++) {
1362 if (rval < minval) {
1366 if (rval > maxval) {
1371 if (gval < minval) {
1375 if (gval > maxval) {
1380 if (bval < minval) {
1384 if (bval > maxval) {
1389 aveval = (rval + gval + bval) / 3;
1390 if (aveval < minval) {
1394 if (aveval > maxval) {
1399 return ERROR_INT(
"invalid selection", procName, 1);
1403 if (pminval) *pminval = minval;
1404 if (pmaxval) *pmaxval = maxval;
1405 if (pminindex) *pminindex = imin;
1406 if (pmaxindex) *pmaxindex = imax;
1432 l_int32 i, rval, gval, bval;
1437 for (i = 0; i < 256; i++) {
1439 gval + (i * (255 - gval)) / 255,
1440 bval + (i * (255 - bval)) / 255);
1467 l_int32 i,
n, rval, gval, bval, val;
1471 PROCNAME(
"pixcmapColorToGray");
1474 return (
PIXCMAP *)ERROR_PTR(
"cmaps not defined", procName, NULL);
1475 if (rwt < 0.0 || gwt < 0.0 || bwt < 0.0)
1476 return (
PIXCMAP *)ERROR_PTR(
"weights not all >= 0.0", procName, NULL);
1480 sum = rwt + gwt + bwt;
1482 L_WARNING(
"all weights zero; setting equal to 1/3\n", procName);
1483 rwt = gwt = bwt = 0.33333;
1486 if (L_ABS(sum - 1.0) > 0.0001) {
1487 L_WARNING(
"weights don't sum to 1; maintaining ratios\n", procName);
1495 for (i = 0; i <
n; i++) {
1497 val = (l_int32)(rwt * rval + gwt * gval + bwt * bval + 0.5);
1520 l_int32 i,
n, rval, gval, bval;
1523 PROCNAME(
"pixcmapConvertTo4");
1526 return (
PIXCMAP *)ERROR_PTR(
"cmaps not defined", procName, NULL);
1528 return (
PIXCMAP *)ERROR_PTR(
"cmaps not for 2 bpp pix", procName, NULL);
1532 for (i = 0; i <
n; i++) {
1555 l_int32 i,
n, depth, rval, gval, bval;
1558 PROCNAME(
"pixcmapConvertTo8");
1561 return (
PIXCMAP *)ERROR_PTR(
"cmaps not defined", procName, NULL);
1564 if (depth != 2 && depth != 4)
1565 return (
PIXCMAP *)ERROR_PTR(
"cmaps not 2 or 4 bpp", procName, NULL);
1569 for (i = 0; i <
n; i++) {
1592 PROCNAME(
"pixcmapRead");
1595 return (
PIXCMAP *)ERROR_PTR(
"filename not defined", procName, NULL);
1598 return (
PIXCMAP *)ERROR_PTR(
"stream not opened", procName, NULL);
1602 return (
PIXCMAP *)ERROR_PTR(
"cmap not read", procName, NULL);
1616 l_int32 rval, gval, bval, aval, ignore;
1617 l_int32 i, index, ret, depth, ncolors;
1620 PROCNAME(
"pixcmapReadStream");
1623 return (
PIXCMAP *)ERROR_PTR(
"stream not defined", procName, NULL);
1625 ret = fscanf(fp,
"\nPixcmap: depth = %d bpp; %d colors\n",
1628 (depth != 1 && depth != 2 && depth != 4 && depth != 8) ||
1629 (ncolors < 2 || ncolors > 256))
1630 return (
PIXCMAP *)ERROR_PTR(
"invalid cmap size", procName, NULL);
1631 ignore = fscanf(fp,
"Color R-val G-val B-val Alpha\n");
1632 ignore = fscanf(fp,
"----------------------------------------\n");
1635 for (i = 0; i < ncolors; i++) {
1636 if (fscanf(fp,
"%3d %3d %3d %3d %3d\n",
1637 &index, &rval, &gval, &bval, &aval) != 5) {
1639 return (
PIXCMAP *)ERROR_PTR(
"invalid entry", procName, NULL);
1661 PROCNAME(
"pixcmapReadMem");
1664 return (
PIXCMAP *)ERROR_PTR(
"data not defined", procName, NULL);
1666 return (
PIXCMAP *)ERROR_PTR(
"stream not opened", procName, NULL);
1670 if (!cmap) L_ERROR(
"cmap not read\n", procName);
1689 PROCNAME(
"pixcmapWrite");
1692 return ERROR_INT(
"filename not defined", procName, 1);
1694 return ERROR_INT(
"cmap not defined", procName, 1);
1697 return ERROR_INT(
"stream not opened", procName, 1);
1701 return ERROR_INT(
"cmap not written to stream", procName, 1);
1718 l_int32 *rmap, *gmap, *bmap, *amap;
1721 PROCNAME(
"pixcmapWriteStream");
1724 return ERROR_INT(
"stream not defined", procName, 1);
1726 return ERROR_INT(
"cmap not defined", procName, 1);
1729 return ERROR_INT(
"colormap arrays not made", procName, 1);
1731 fprintf(fp,
"\nPixcmap: depth = %d bpp; %d colors\n", cmap->
depth, cmap->
n);
1732 fprintf(fp,
"Color R-val G-val B-val Alpha\n");
1733 fprintf(fp,
"----------------------------------------\n");
1734 for (i = 0; i < cmap->
n; i++)
1735 fprintf(fp,
"%3d %3d %3d %3d %3d\n",
1736 i, rmap[i], gmap[i], bmap[i], amap[i]);
1768 PROCNAME(
"pixcmapWriteMem");
1770 if (pdata) *pdata = NULL;
1771 if (psize) *psize = 0;
1773 return ERROR_INT(
"&data not defined", procName, 1);
1775 return ERROR_INT(
"&size not defined", procName, 1);
1777 return ERROR_INT(
"cmap not defined", procName, 1);
1780 if ((fp = open_memstream((
char **)pdata, psize)) == NULL)
1781 return ERROR_INT(
"stream not opened", procName, 1);
1784 L_INFO(
"work-around: writing to a temp file\n", procName);
1787 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
1789 if ((fp = tmpfile()) == NULL)
1790 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
1819 l_int32 *rmap, *gmap, *bmap, *amap;
1823 PROCNAME(
"pixcmapToArrays");
1825 if (!prmap || !pgmap || !pbmap)
1826 return ERROR_INT(
"&rmap, &gmap, &bmap not all defined", procName, 1);
1827 *prmap = *pgmap = *pbmap = NULL;
1828 if (pamap) *pamap = NULL;
1830 return ERROR_INT(
"cmap not defined", procName, 1);
1833 if (((rmap = (l_int32 *)LEPT_CALLOC(ncolors,
sizeof(l_int32))) == NULL) ||
1834 ((gmap = (l_int32 *)LEPT_CALLOC(ncolors,
sizeof(l_int32))) == NULL) ||
1835 ((bmap = (l_int32 *)LEPT_CALLOC(ncolors,
sizeof(l_int32))) == NULL))
1836 return ERROR_INT(
"calloc fail for *map", procName, 1);
1841 amap = (l_int32 *)LEPT_CALLOC(ncolors,
sizeof(l_int32));
1846 for (i = 0; i < ncolors; i++) {
1847 rmap[i] = cta[i].
red;
1848 gmap[i] = cta[i].
green;
1849 bmap[i] = cta[i].
blue;
1851 amap[i] = cta[i].
alpha;
1871 l_int32 i, ncolors, rval, gval, bval, aval;
1874 PROCNAME(
"pixcmapToRGBTable");
1877 return ERROR_INT(
"&tab not defined", procName, 1);
1880 return ERROR_INT(
"cmap not defined", procName, 1);
1884 *pncolors = ncolors;
1885 if ((tab = (l_uint32 *)LEPT_CALLOC(ncolors,
sizeof(l_uint32))) == NULL)
1886 return ERROR_INT(
"tab not made", procName, 1);
1889 for (i = 0; i < ncolors; i++) {
1917 l_int32 i, ncolors, rval, gval, bval, aval;
1920 PROCNAME(
"pixcmapSerializeToMemory");
1923 return ERROR_INT(
"&data not defined", procName, 1);
1926 return ERROR_INT(
"&ncolors not defined", procName, 1);
1929 return ERROR_INT(
"cmap not defined", procName, 1);
1930 if (cpc != 3 && cpc != 4)
1931 return ERROR_INT(
"cpc not 3 or 4", procName, 1);
1934 *pncolors = ncolors;
1935 if ((data = (l_uint8 *)LEPT_CALLOC(cpc * ncolors,
sizeof(l_uint8))) == NULL)
1936 return ERROR_INT(
"data not made", procName, 1);
1939 for (i = 0; i < ncolors; i++) {
1941 data[cpc * i] = rval;
1942 data[cpc * i + 1] = gval;
1943 data[cpc * i + 2] = bval;
1945 data[cpc * i + 3] = aval;
1964 l_int32 i, d, rval, gval, bval, aval;
1967 PROCNAME(
"pixcmapDeserializeFromMemory");
1970 return (
PIXCMAP *)ERROR_PTR(
"data not defined", procName, NULL);
1971 if (cpc != 3 && cpc != 4)
1972 return (
PIXCMAP *)ERROR_PTR(
"cpc not 3 or 4", procName, NULL);
1974 return (
PIXCMAP *)ERROR_PTR(
"no entries", procName, NULL);
1976 return (
PIXCMAP *)ERROR_PTR(
"ncolors > 256", procName, NULL);
1980 else if (ncolors > 4)
1982 else if (ncolors > 2)
1987 for (i = 0; i < ncolors; i++) {
1988 rval = data[cpc * i];
1989 gval = data[cpc * i + 1];
1990 bval = data[cpc * i + 2];
1992 aval = data[cpc * i + 3];
2024 l_int32 i, j, hexbytes;
2025 char *hexdata = NULL;
2028 PROCNAME(
"pixcmapConvertToHex");
2031 return (
char *)ERROR_PTR(
"data not defined", procName, NULL);
2033 return (
char *)ERROR_PTR(
"no colors", procName, NULL);
2035 hexbytes = 2 + (2 * 3 + 1) * ncolors + 2;
2036 hexdata = (
char *)LEPT_CALLOC(hexbytes,
sizeof(
char));
2040 for (i = 0; i < ncolors; i++) {
2041 j = 2 + (2 * 3 + 1) * i;
2042 snprintf(buf,
sizeof(buf),
"%02x", data[3 * i]);
2043 hexdata[j] = buf[0];
2044 hexdata[j + 1] = buf[1];
2045 snprintf(buf,
sizeof(buf),
"%02x", data[3 * i + 1]);
2046 hexdata[j + 2] = buf[0];
2047 hexdata[j + 3] = buf[1];
2048 snprintf(buf,
sizeof(buf),
"%02x", data[3 * i + 2]);
2049 hexdata[j + 4] = buf[0];
2050 hexdata[j + 5] = buf[1];
2051 hexdata[j + 6] =
' ';
2053 hexdata[j + 7] =
'>';
2054 hexdata[j + 8] =
'\0';
2084 l_int32 rval, gval, bval, trval, tgval, tbval, i, ncolors;
2087 PROCNAME(
"pixcmapGammaTRC");
2090 return ERROR_INT(
"cmap not defined", procName, 1);
2092 L_WARNING(
"gamma must be > 0.0; setting to 1.0\n", procName);
2095 if (minval >= maxval)
2096 return ERROR_INT(
"minval not < maxval", procName, 1);
2098 if (gamma == 1.0 && minval == 0 && maxval == 255)
2101 if ((nag =
numaGammaTRC(gamma, minval, maxval)) == NULL)
2102 return ERROR_INT(
"nag not made", procName, 1);
2105 for (i = 0; i < ncolors; i++) {
2137 l_int32 i, ncolors, rval, gval, bval, trval, tgval, tbval;
2140 PROCNAME(
"pixcmapContrastTRC");
2143 return ERROR_INT(
"cmap not defined", procName, 1);
2145 L_WARNING(
"factor must be >= 0.0; setting to 0.0\n", procName);
2150 return ERROR_INT(
"nac not made", procName, 1);
2153 for (i = 0; i < ncolors; i++) {
2189 l_int32 i, ncolors, rval, gval, bval;
2191 PROCNAME(
"pixcmapShiftIntensity");
2194 return ERROR_INT(
"cmap not defined", procName, 1);
2195 if (fraction < -1.0 || fraction > 1.0)
2196 return ERROR_INT(
"fraction not in [-1.0, 1.0]", procName, 1);
2199 for (i = 0; i < ncolors; i++) {
2203 (l_int32)((1.0 + fraction) * rval),
2204 (l_int32)((1.0 + fraction) * gval),
2205 (l_int32)((1.0 + fraction) * bval));
2208 rval + (l_int32)(fraction * (255 - rval)),
2209 gval + (l_int32)(fraction * (255 - gval)),
2210 bval + (l_int32)(fraction * (255 - bval)));
2240 l_int32 i, ncolors, rval, gval, bval;
2243 PROCNAME(
"pixcmapShiftByComponent");
2246 return ERROR_INT(
"cmap not defined", procName, 1);
2249 for (i = 0; i < ncolors; i++) {
l_int32 pixcmapIsBlackAndWhite(PIXCMAP *cmap, l_int32 *pblackwhite)
pixcmapIsBlackAndWhite()
l_int32 pixcmapGetNearestIndex(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex)
pixcmapGetNearestIndex()
l_int32 pixcmapGetDepth(PIXCMAP *cmap)
pixcmapGetDepth()
l_int32 numaAddNumber(NUMA *na, l_float32 val)
numaAddNumber()
NUMA * numaGetSortIndex(NUMA *na, l_int32 sortorder)
numaGetSortIndex()
l_int32 pixelShiftByComponent(l_int32 rval, l_int32 gval, l_int32 bval, l_uint32 srcval, l_uint32 dstval, l_uint32 *ppixel)
pixelShiftByComponent()
char * pixcmapConvertToHex(l_uint8 *data, l_int32 ncolors)
pixcmapConvertToHex()
PIXCMAP * pixcmapReadStream(FILE *fp)
pixcmapReadStream()
PIXCMAP * pixcmapConvertTo8(PIXCMAP *cmaps)
pixcmapConvertTo8()
l_int32 pixcmapSetBlackAndWhite(PIXCMAP *cmap, l_int32 setblack, l_int32 setwhite)
pixcmapSetBlackAndWhite()
NUMA * numaGammaTRC(l_float32 gamma, l_int32 minval, l_int32 maxval)
numaGammaTRC()
PIXCMAP * pixcmapGrayToColor(l_uint32 color)
pixcmapGrayToColor()
PIXCMAP * pixcmapRead(const char *filename)
pixcmapRead()
l_int32 pixcmapShiftByComponent(PIXCMAP *cmap, l_uint32 srcval, l_uint32 dstval)
pixcmapShiftByComponent()
FILE * fopenReadFromMemory(const l_uint8 *data, size_t size)
fopenReadFromMemory()
l_int32 composeRGBAPixel(l_int32 rval, l_int32 gval, l_int32 bval, l_int32 aval, l_uint32 *ppixel)
composeRGBAPixel()
l_int32 pixcmapAddNewColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex)
pixcmapAddNewColor()
void pixcmapDestroy(PIXCMAP **pcmap)
pixcmapDestroy()
NUMA * numaCreate(l_int32 n)
numaCreate()
PIXCMAP * pixcmapReadMem(const l_uint8 *data, size_t size)
pixcmapReadMem()
PIXCMAP * pixcmapConvertTo4(PIXCMAP *cmaps)
pixcmapConvertTo4()
l_int32 pixcmapGetColor(PIXCMAP *cmap, l_int32 index, l_int32 *prval, l_int32 *pgval, l_int32 *pbval)
pixcmapGetColor()
l_int32 pixcmapToArrays(PIXCMAP *cmap, l_int32 **prmap, l_int32 **pgmap, l_int32 **pbmap, l_int32 **pamap)
pixcmapToArrays()
l_int32 pixcmapClear(PIXCMAP *cmap)
pixcmapClear()
l_int32 pixcmapGetRGBA32(PIXCMAP *cmap, l_int32 index, l_uint32 *pval32)
pixcmapGetRGBA32()
l_int32 pixcmapAddBlackOrWhite(PIXCMAP *cmap, l_int32 color, l_int32 *pindex)
pixcmapAddBlackOrWhite()
PIXCMAP * pixcmapCreateLinear(l_int32 d, l_int32 nlevels)
pixcmapCreateLinear()
l_int32 pixcmapShiftIntensity(PIXCMAP *cmap, l_float32 fraction)
pixcmapShiftIntensity()
PIXCMAP * pixcmapCreate(l_int32 depth)
pixcmapCreate()
l_int32 pixcmapGetRGBA(PIXCMAP *cmap, l_int32 index, l_int32 *prval, l_int32 *pgval, l_int32 *pbval, l_int32 *paval)
pixcmapGetRGBA()
l_int32 pixcmapGetIndex(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex)
pixcmapGetIndex()
l_int32 pixcmapWriteStream(FILE *fp, PIXCMAP *cmap)
pixcmapWriteStream()
l_int32 pixcmapIsOpaque(PIXCMAP *cmap, l_int32 *popaque)
pixcmapIsOpaque()
l_int32 pixcmapAddColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval)
pixcmapAddColor()
l_int32 pixcmapUsableColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pusable)
pixcmapUsableColor()
PIXCMAP * pixcmapColorToGray(PIXCMAP *cmaps, l_float32 rwt, l_float32 gwt, l_float32 bwt)
pixcmapColorToGray()
FILE * fopenWriteWinTempfile()
fopenWriteWinTempfile()
l_int32 pixcmapGetRankIntensity(PIXCMAP *cmap, l_float32 rankval, l_int32 *pindex)
pixcmapGetRankIntensity()
PIXCMAP * pixcmapDeserializeFromMemory(l_uint8 *data, l_int32 cpc, l_int32 ncolors)
pixcmapDeserializeFromMemory()
l_int32 pixcmapGetFreeCount(PIXCMAP *cmap)
pixcmapGetFreeCount()
l_int32 pixcmapGetColor32(PIXCMAP *cmap, l_int32 index, l_uint32 *pval32)
pixcmapGetColor32()
NUMA * numaContrastTRC(l_float32 factor)
numaContrastTRC()
l_int32 pixcmapGetMinDepth(PIXCMAP *cmap, l_int32 *pmindepth)
pixcmapGetMinDepth()
l_int32 pixcmapAddNearestColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex)
pixcmapAddNearestColor()
void numaDestroy(NUMA **pna)
numaDestroy()
l_int32 pixcmapGetDistanceToColor(PIXCMAP *cmap, l_int32 index, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pdist)
pixcmapGetDistanceToColor()
FILE * fopenWriteStream(const char *filename, const char *modestring)
fopenWriteStream()
FILE * fopenReadStream(const char *filename)
fopenReadStream()
l_uint8 * l_binaryReadStream(FILE *fp, size_t *pnbytes)
l_binaryReadStream()
l_int32 pixcmapContrastTRC(PIXCMAP *cmap, l_float32 factor)
pixcmapContrastTRC()
l_int32 pixcmapGetNearestGrayIndex(PIXCMAP *cmap, l_int32 val, l_int32 *pindex)
pixcmapGetNearestGrayIndex()
l_int32 pixcmapResetColor(PIXCMAP *cmap, l_int32 index, l_int32 rval, l_int32 gval, l_int32 bval)
pixcmapResetColor()
l_int32 pixcmapWrite(const char *filename, PIXCMAP *cmap)
pixcmapWrite()
l_int32 pixcmapToRGBTable(PIXCMAP *cmap, l_uint32 **ptab, l_int32 *pncolors)
pixcmapToRGBTable()
l_int32 pixcmapAddRGBA(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 aval)
pixcmapAddRGBA()
l_int32 pixcmapGetCount(PIXCMAP *cmap)
pixcmapGetCount()
l_int32 pixcmapWriteMem(l_uint8 **pdata, size_t *psize, PIXCMAP *cmap)
pixcmapWriteMem()
l_int32 pixcmapGammaTRC(PIXCMAP *cmap, l_float32 gamma, l_int32 minval, l_int32 maxval)
pixcmapGammaTRC()
l_int32 numaGetIValue(NUMA *na, l_int32 index, l_int32 *pival)
numaGetIValue()
l_int32 pixcmapSerializeToMemory(PIXCMAP *cmap, l_int32 cpc, l_int32 *pncolors, l_uint8 **pdata)
pixcmapSerializeToMemory()
PIXCMAP * pixcmapCopy(PIXCMAP *cmaps)
pixcmapCopy()
void extractRGBValues(l_uint32 pixel, l_int32 *prval, l_int32 *pgval, l_int32 *pbval)
extractRGBValues()
l_int32 pixcmapGetRangeValues(PIXCMAP *cmap, l_int32 select, l_int32 *pminval, l_int32 *pmaxval, l_int32 *pminindex, l_int32 *pmaxindex)
pixcmapGetRangeValues()
l_int32 pixcmapSetAlpha(PIXCMAP *cmap, l_int32 index, l_int32 aval)
pixcmapSetAlpha()
l_int32 pixcmapCountGrayColors(PIXCMAP *cmap, l_int32 *pngray)
pixcmapCountGrayColors()
PIXCMAP * pixcmapCreateRandom(l_int32 depth, l_int32 hasblack, l_int32 haswhite)
pixcmapCreateRandom()
l_int32 pixcmapHasColor(PIXCMAP *cmap, l_int32 *pcolor)
pixcmapHasColor()