65 #include <config_auto.h>
69 #include "allheaders.h"
109 l_int32 i, j, w, h, d, n, x1, y1, x2, y2, bw, bh, val, wpls;
111 l_uint32 *lines, *datas;
115 return ERROR_INT(
"pixs not defined", __func__, 1);
116 if ((cmap = pixGetColormap(pixs)) == NULL)
117 return ERROR_INT(
"no colormap", __func__, 1);
118 d = pixGetDepth(pixs);
119 if (d != 1 && d != 2 && d != 4 && d != 8)
120 return ERROR_INT(
"depth not in {1,2,4,8}", __func__, 1);
125 return ERROR_INT(
"sindex too large; no cmap entry", __func__, 1);
128 return ERROR_INT(
"error adding cmap entry", __func__, 1);
147 wpls = pixGetWpl(pixs);
148 for (i = y1; i <= y2; i++) {
151 lines = datas + i * wpls;
152 for (j = x1; j <= x2; j++) {
181 return ERROR_INT(
"depth not in {1,2,4,8}", __func__, 1);
228 l_int32 i, j, k, w, h, n, nc, x1, y1, x2, y2, bw, bh, wpl;
231 l_uint32 *line, *data;
237 return ERROR_INT(
"pixs not defined", __func__, 1);
239 return ERROR_INT(
"boxa not defined", __func__, 1);
240 if ((cmap = pixGetColormap(pixs)) == NULL)
241 return ERROR_INT(
"no colormap", __func__, 1);
242 if (pixGetDepth(pixs) != 8)
243 return ERROR_INT(
"depth not 8 bpp", __func__, 1);
245 return ERROR_INT(
"invalid type", __func__, 1);
249 return ERROR_INT(
"no room; cmap full", __func__, 1);
253 return ERROR_INT(
"map not made", __func__, 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;
340 return ERROR_INT(
"pixs not defined", __func__, 1);
341 if ((cmap = pixGetColormap(pixs)) == NULL)
342 return ERROR_INT(
"no colormap", __func__, 1);
344 if (d != 2 && d != 4 && d != 8)
345 return ERROR_INT(
"depth not in {2, 4, 8}", __func__, 1);
347 return ERROR_INT(
"invalid type", __func__, 1);
350 if (d == 2 || d == 4) {
400 l_int32 i, j, w, h, wm, hm, wmin, hmin, wpl, wplm;
403 l_uint32 *line, *data, *linem, *datam;
408 return ERROR_INT(
"pixs not defined", __func__, 1);
409 if (!pixm || pixGetDepth(pixm) != 1)
410 return ERROR_INT(
"pixm undefined or not 1 bpp", __func__, 1);
411 if ((cmap = pixGetColormap(pixs)) == NULL)
412 return ERROR_INT(
"no colormap", __func__, 1);
413 if (pixGetDepth(pixs) != 8)
414 return ERROR_INT(
"depth not 8 bpp", __func__, 1);
416 return ERROR_INT(
"invalid type", __func__, 1);
419 return ERROR_INT(
"no room; cmap full", __func__, 1);
423 return ERROR_INT(
"map not made", __func__, 1);
428 L_WARNING(
"wm = %d differs from w = %d\n", __func__, wm, w);
430 L_WARNING(
"hm = %d differs from h = %d\n", __func__, hm, h);
435 wpl = pixGetWpl(pixs);
437 wplm = pixGetWpl(pixm);
440 for (i = 0; i < hmin; i++) {
441 line = data + i * wpl;
442 linem = datam + i * wplm;
443 for (j = 0; j < wmin; j++) {
495 l_int32 i, n, erval, egval, ebval, nrval, ngval, nbval, newindex;
498 if (pna) *pna = NULL;
500 return ERROR_INT(
"cmap not defined", __func__, 1);
502 return ERROR_INT(
"invalid type", __func__, 1);
506 for (i = 0; i < n; i++) {
509 if (erval == egval && erval == ebval && erval != 0) {
510 nrval = (l_int32)(rval * (l_float32)erval / 255.);
511 ngval = (l_int32)(gval * (l_float32)egval / 255.);
512 nbval = (l_int32)(bval * (l_float32)ebval / 255.);
515 L_WARNING(
"no room; colormap full\n", __func__);
523 if (erval == egval && erval == ebval && erval != 255) {
525 (l_int32)((255. - rval) * (l_float32)erval / 255.);
527 (l_int32)((255. - gval) * (l_float32)egval / 255.);
529 (l_int32)((255. - bval) * (l_float32)ebval / 255.);
532 L_WARNING(
"no room; colormap full\n", __func__);
586 l_int32 i, j, w, h, d, n, wm, hm, wpls, wplm, val;
588 l_uint32 *lines, *linem, *datas, *datam;
592 return ERROR_INT(
"pixs not defined", __func__, 1);
593 if ((cmap = pixGetColormap(pixs)) == NULL)
594 return ERROR_INT(
"no colormap", __func__, 1);
596 L_WARNING(
"no mask; nothing to do\n", __func__);
600 d = pixGetDepth(pixs);
601 if (d != 2 && d != 4 && d != 8)
602 return ERROR_INT(
"depth not in {2, 4, 8}", __func__, 1);
607 return ERROR_INT(
"sindex too large; no cmap entry", __func__, 1);
610 return ERROR_INT(
"error adding cmap entry", __func__, 1);
619 wpls = pixGetWpl(pixs);
620 wm = pixGetWidth(pixm);
621 hm = pixGetHeight(pixm);
623 wplm = pixGetWpl(pixm);
624 for (i = 0; i < hm; i++) {
625 if (i + y < 0 || i + y >= h)
continue;
626 lines = datas + (y + i) * wpls;
627 linem = datam + i * wplm;
628 for (j = 0; j < wm; j++) {
629 if (j + x < 0 || j + x >= w)
continue;
648 return ERROR_INT(
"depth not in {1,2,4,8}", __func__, 1);
694 l_int32 w, h, d, wpl, wm, hm, wplm;
696 l_uint32 *data, *datam, *line, *linem;
700 return ERROR_INT(
"pixs not defined", __func__, 1);
701 if ((cmap = pixGetColormap(pixs)) == NULL)
702 return ERROR_INT(
"no colormap in pixs", __func__, 1);
704 L_WARNING(
"no mask; nothing to do\n", __func__);
707 d = pixGetDepth(pixs);
708 if (d != 2 && d != 4 && d != 8)
709 return ERROR_INT(
"depth not in {2,4,8}", __func__, 1);
710 if (pixGetDepth(pixm) != 1)
711 return ERROR_INT(
"pixm not 1 bpp", __func__, 1);
716 return ERROR_INT(
"no room in cmap", __func__, 1);
721 wpl = pixGetWpl(pixs);
724 wplm = pixGetWpl(pixm);
726 for (i = 0; i < hm; i++) {
727 if (i + y < 0 || i + y >= h)
continue;
728 line = data + (i + y) * wpl;
729 linem = datam + i * wplm;
730 for (j = 0; j < wm; j++) {
731 if (j + x < 0 || j + x >= w)
continue;
744 return ERROR_INT(
"depth not in {2,4,8}", __func__, 1);
#define GET_DATA_QBIT(pdata, n)
#define SET_DATA_BIT(pdata, n)
#define SET_DATA_DIBIT(pdata, n, val)
#define GET_DATA_BYTE(pdata, n)
#define GET_DATA_DIBIT(pdata, n)
#define SET_DATA_BYTE(pdata, n, val)
#define CLEAR_DATA_BIT(pdata, n)
#define GET_DATA_BIT(pdata, n)
#define SET_DATA_QBIT(pdata, n, val)
l_ok boxGetGeometry(const BOX *box, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph)
boxGetGeometry()
void boxDestroy(BOX **pbox)
boxDestroy()
l_ok boxaAddBox(BOXA *boxa, BOX *box, l_int32 copyflag)
boxaAddBox()
void boxaDestroy(BOXA **pboxa)
boxaDestroy()
l_int32 boxaGetCount(const BOXA *boxa)
boxaGetCount()
BOX * boxaGetBox(BOXA *boxa, l_int32 index, l_int32 accessflag)
boxaGetBox()
BOX * boxCreate(l_int32 x, l_int32 y, l_int32 w, l_int32 h)
boxCreate()
BOXA * boxaCreate(l_int32 n)
boxaCreate()
l_int32 pixcmapGetCount(const PIXCMAP *cmap)
pixcmapGetCount()
l_ok pixcmapAddNewColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex)
pixcmapAddNewColor()
l_int32 pixcmapGetIndex(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex)
pixcmapGetIndex()
l_ok pixcmapGetColor(PIXCMAP *cmap, l_int32 index, l_int32 *prval, l_int32 *pgval, l_int32 *pbval)
pixcmapGetColor()
l_ok pixcmapAddColor(PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval)
pixcmapAddColor()
l_ok numaAddNumber(NUMA *na, l_float32 val)
numaAddNumber()
NUMA * numaCreate(l_int32 n)
numaCreate()
void numaDestroy(NUMA **pna)
numaDestroy()
l_int32 * numaGetIArray(NUMA *na)
numaGetIArray()
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()
l_ok pixColorGrayCmap(PIX *pixs, BOX *box, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval)
pixColorGrayCmap()
l_ok addColorizedGrayToCmap(PIXCMAP *cmap, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval, NUMA **pna)
addColorizedGrayToCmap()
l_ok pixColorGrayMaskedCmap(PIX *pixs, PIX *pixm, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval)
pixColorGrayMaskedCmap()
l_ok pixSetSelectCmap(PIX *pixs, BOX *box, l_int32 sindex, l_int32 rval, l_int32 gval, l_int32 bval)
pixSetSelectCmap()
l_ok pixColorGrayRegionsCmap(PIX *pixs, BOXA *boxa, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval)
pixColorGrayRegionsCmap()
l_ok pixSetMaskedCmap(PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 rval, l_int32 gval, l_int32 bval)
pixSetMaskedCmap()
l_uint32 * pixGetData(PIX *pix)
pixGetData()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
l_ok pixTransferAllData(PIX *pixd, PIX **ppixs, l_int32 copytext, l_int32 copyformat)
pixTransferAllData()
PIX * pixConvertTo8(PIX *pixs, l_int32 cmapflag)
pixConvertTo8()