65 #include "allheaders.h" 105 l_int32 i, j, w, h, d, n, x1, y1, x2, y2, bw, bh, val, wpls;
107 l_uint32 *lines, *datas;
110 PROCNAME(
"pixSetSelectCmap");
113 return ERROR_INT(
"pixs not defined", procName, 1);
114 if ((cmap = pixGetColormap(pixs)) == NULL)
115 return ERROR_INT(
"no colormap", procName, 1);
116 d = pixGetDepth(pixs);
117 if (d != 1 && d != 2 && d != 4 && d != 8)
118 return ERROR_INT(
"depth not in {1,2,4,8}", procName, 1);
123 return ERROR_INT(
"sindex too large; no cmap entry", procName, 1);
126 return ERROR_INT(
"error adding cmap entry", procName, 1);
145 wpls = pixGetWpl(pixs);
146 for (i = y1; i <= y2; i++) {
149 lines = datas + i * wpls;
150 for (j = x1; j <= x2; j++) {
179 return ERROR_INT(
"depth not in {1,2,4,8}", procName, 1);
226 l_int32 i, j, k, w, h, n, nc, x1, y1, x2, y2, bw, bh, wpl;
229 l_uint32 *line, *
data;
234 PROCNAME(
"pixColorGrayRegionsCmap");
237 return ERROR_INT(
"pixs not defined", procName, 1);
239 return ERROR_INT(
"boxa not defined", procName, 1);
240 if ((cmap = pixGetColormap(pixs)) == NULL)
241 return ERROR_INT(
"no colormap", procName, 1);
242 if (pixGetDepth(pixs) != 8)
243 return ERROR_INT(
"depth not 8 bpp", procName, 1);
245 return ERROR_INT(
"invalid type", procName, 1);
249 return ERROR_INT(
"no room; cmap full", procName, 1);
253 return ERROR_INT(
"map not made", procName, 1);
257 wpl = pixGetWpl(pixs);
259 for (k = 0; k < n; k++) {
266 for (i = y1; i <= y2; i++) {
269 line =
data + i * wpl;
270 for (j = x1; j <= x2; j++) {
274 if (val >= nc)
continue;
334 l_int32 w, h, d, ret;
339 PROCNAME(
"pixColorGrayCmap");
342 return ERROR_INT(
"pixs not defined", procName, 1);
343 if ((cmap = pixGetColormap(pixs)) == NULL)
344 return ERROR_INT(
"no colormap", procName, 1);
346 if (d != 2 && d != 4 && d != 8)
347 return ERROR_INT(
"depth not in {2, 4, 8}", procName, 1);
349 return ERROR_INT(
"invalid type", procName, 1);
352 if (d == 2 || d == 4) {
402 l_int32 i, j, w, h, wm, hm, wmin, hmin, wpl, wplm;
405 l_uint32 *line, *
data, *linem, *datam;
409 PROCNAME(
"pixColorGrayMaskedCmap");
412 return ERROR_INT(
"pixs not defined", procName, 1);
413 if (!pixm || pixGetDepth(pixm) != 1)
414 return ERROR_INT(
"pixm undefined or not 1 bpp", procName, 1);
415 if ((cmap = pixGetColormap(pixs)) == NULL)
416 return ERROR_INT(
"no colormap", procName, 1);
417 if (pixGetDepth(pixs) != 8)
418 return ERROR_INT(
"depth not 8 bpp", procName, 1);
420 return ERROR_INT(
"invalid type", procName, 1);
423 return ERROR_INT(
"no room; cmap full", procName, 1);
427 return ERROR_INT(
"map not made", procName, 1);
432 L_WARNING(
"wm = %d differs from w = %d\n", procName, wm, w);
434 L_WARNING(
"hm = %d differs from h = %d\n", procName, hm, h);
439 wpl = pixGetWpl(pixs);
441 wplm = pixGetWpl(pixm);
444 for (i = 0; i < hmin; i++) {
445 line =
data + i * wpl;
446 linem = datam + i * wplm;
447 for (j = 0; j < wmin; j++) {
499 l_int32 i, n, erval, egval, ebval, nrval, ngval, nbval, newindex;
502 PROCNAME(
"addColorizedGrayToCmap");
504 if (pna) *pna = NULL;
506 return ERROR_INT(
"cmap not defined", procName, 1);
508 return ERROR_INT(
"invalid type", procName, 1);
512 for (i = 0; i < n; i++) {
515 if (erval == egval && erval == ebval && erval != 0) {
516 nrval = (l_int32)(rval * (l_float32)erval / 255.);
517 ngval = (l_int32)(gval * (l_float32)egval / 255.);
518 nbval = (l_int32)(bval * (l_float32)ebval / 255.);
521 L_WARNING(
"no room; colormap full\n", procName);
529 if (erval == egval && erval == ebval && erval != 255) {
531 (l_int32)((255. - rval) * (l_float32)erval / 255.);
533 (l_int32)((255. - gval) * (l_float32)egval / 255.);
535 (l_int32)((255. - bval) * (l_float32)ebval / 255.);
538 L_WARNING(
"no room; colormap full\n", procName);
592 l_int32 i, j, w, h, d, n, wm, hm, wpls, wplm, val;
594 l_uint32 *lines, *linem, *datas, *datam;
597 PROCNAME(
"pixSetSelectMaskedCmap");
600 return ERROR_INT(
"pixs not defined", procName, 1);
601 if ((cmap = pixGetColormap(pixs)) == NULL)
602 return ERROR_INT(
"no colormap", procName, 1);
604 L_WARNING(
"no mask; nothing to do\n", procName);
608 d = pixGetDepth(pixs);
609 if (d != 2 && d != 4 && d != 8)
610 return ERROR_INT(
"depth not in {2, 4, 8}", procName, 1);
615 return ERROR_INT(
"sindex too large; no cmap entry", procName, 1);
618 return ERROR_INT(
"error adding cmap entry", procName, 1);
627 wpls = pixGetWpl(pixs);
628 wm = pixGetWidth(pixm);
629 hm = pixGetHeight(pixm);
631 wplm = pixGetWpl(pixm);
632 for (i = 0; i < hm; i++) {
633 if (i + y < 0 || i + y >= h)
continue;
634 lines = datas + (y + i) * wpls;
635 linem = datam + i * wplm;
636 for (j = 0; j < wm; j++) {
637 if (j + x < 0 || j + x >= w)
continue;
656 return ERROR_INT(
"depth not in {1,2,4,8}", procName, 1);
701 l_int32 w, h, d, wpl, wm, hm, wplm;
703 l_uint32 *
data, *datam, *line, *linem;
706 PROCNAME(
"pixSetMaskedCmap");
709 return ERROR_INT(
"pixs not defined", procName, 1);
710 if ((cmap = pixGetColormap(pixs)) == NULL)
711 return ERROR_INT(
"no colormap in pixs", procName, 1);
713 L_WARNING(
"no mask; nothing to do\n", procName);
716 d = pixGetDepth(pixs);
717 if (d != 2 && d != 4 && d != 8)
718 return ERROR_INT(
"depth not in {2,4,8}", procName, 1);
719 if (pixGetDepth(pixm) != 1)
720 return ERROR_INT(
"pixm not 1 bpp", procName, 1);
725 return ERROR_INT(
"no room in cmap", procName, 1);
730 wpl = pixGetWpl(pixs);
733 wplm = pixGetWpl(pixm);
735 for (i = 0; i < hm; i++) {
736 if (i + y < 0 || i + y >= h)
continue;
737 line =
data + (i + y) * wpl;
738 linem = datam + i * wplm;
739 for (j = 0; j < wm; j++) {
740 if (j + x < 0 || j + x >= w)
continue;
753 return ERROR_INT(
"depth not in {2,4,8}", procName, 1);
l_ok numaAddNumber(NUMA *na, l_float32 val)
numaAddNumber()
PIX * pixConvertTo8(PIX *pixs, l_int32 cmapflag)
pixConvertTo8()
#define SET_DATA_QBIT(pdata, n, val)
NUMA * numaCreate(l_int32 n)
numaCreate()
void boxaDestroy(BOXA **pboxa)
boxaDestroy()
l_uint32 * pixGetData(PIX *pix)
pixGetData()
#define GET_DATA_BIT(pdata, n)
l_ok pixColorGrayCmap(PIX *pixs, BOX *box, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval)
pixColorGrayCmap()
#define SET_DATA_DIBIT(pdata, n, val)
l_ok pixColorGrayMaskedCmap(PIX *pixs, PIX *pixm, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval)
pixColorGrayMaskedCmap()
#define CLEAR_DATA_BIT(pdata, n)
l_int32 * numaGetIArray(NUMA *na)
numaGetIArray()
l_int32 pixcmapGetIndex(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex)
pixcmapGetIndex()
l_ok pixColorGrayRegionsCmap(PIX *pixs, BOXA *boxa, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval)
pixColorGrayRegionsCmap()
l_ok pixcmapGetColor(PIXCMAP *cmap, l_int32 index, l_int32 *prval, l_int32 *pgval, l_int32 *pbval)
pixcmapGetColor()
l_ok boxaAddBox(BOXA *boxa, BOX *box, l_int32 copyflag)
boxaAddBox()
#define SET_DATA_BYTE(pdata, n, val)
l_ok pixcmapAddNewColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex)
pixcmapAddNewColor()
#define GET_DATA_QBIT(pdata, n)
l_ok pixSetMaskedCmap(PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 rval, l_int32 gval, l_int32 bval)
pixSetMaskedCmap()
#define GET_DATA_BYTE(pdata, n)
BOX * boxaGetBox(BOXA *boxa, l_int32 index, l_int32 accessflag)
boxaGetBox()
void numaDestroy(NUMA **pna)
numaDestroy()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
l_ok pixSetSelectMaskedCmap(PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 sindex, l_int32 rval, l_int32 gval, l_int32 bval)
pixSetSelectMaskedCmap()
#define GET_DATA_DIBIT(pdata, n)
l_int32 pixcmapGetCount(PIXCMAP *cmap)
pixcmapGetCount()
BOXA * boxaCreate(l_int32 n)
boxaCreate()
void boxDestroy(BOX **pbox)
boxDestroy()
l_int32 boxaGetCount(BOXA *boxa)
boxaGetCount()
l_ok pixTransferAllData(PIX *pixd, PIX **ppixs, l_int32 copytext, l_int32 copyformat)
pixTransferAllData()
l_ok pixcmapAddColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval)
pixcmapAddColor()
l_ok boxGetGeometry(BOX *box, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
boxGetGeometry()
BOX * boxCreate(l_int32 x, l_int32 y, l_int32 w, l_int32 h)
boxCreate()
l_ok addColorizedGrayToCmap(PIXCMAP *cmap, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval, NUMA **pna)
addColorizedGrayToCmap()
#define SET_DATA_BIT(pdata, n)
l_ok pixSetSelectCmap(PIX *pixs, BOX *box, l_int32 sindex, l_int32 rval, l_int32 gval, l_int32 bval)
pixSetSelectCmap()