65#include <config_auto.h>
69#include "allheaders.h"
109l_int32 i, j, w, h, d, n, x1, y1, x2, y2, bw, bh, val, wpls;
111l_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);
123 n = pixcmapGetCount(cmap);
125 return ERROR_INT(
"sindex too large; no cmap entry", __func__, 1);
126 if (pixcmapGetIndex(cmap, rval, gval, bval, &index)) {
127 if (pixcmapAddColor(cmap, rval, gval, bval))
128 return ERROR_INT(
"error adding cmap entry", __func__, 1);
134 pixGetDimensions(pixs, &w, &h, NULL);
140 boxGetGeometry(box, &x1, &y1, &bw, &bh);
146 datas = pixGetData(pixs);
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);
228l_int32 i, j, k, w, h, n, nc, x1, y1, x2, y2, bw, bh, wpl;
231l_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);
247 nc = pixcmapGetCount(cmap);
249 return ERROR_INT(
"no room; cmap full", __func__, 1);
250 map = numaGetIArray(na);
253 return ERROR_INT(
"map not made", __func__, 1);
255 pixGetDimensions(pixs, &w, &h, NULL);
256 data = pixGetData(pixs);
257 wpl = pixGetWpl(pixs);
258 n = boxaGetCount(boxa);
259 for (k = 0; k < n; k++) {
260 box = boxaGetBox(boxa, k,
L_CLONE);
261 boxGetGeometry(box, &x1, &y1, &bw, &bh);
266 for (i = y1; i <= y2; i++) {
269 line = data + i * wpl;
270 for (j = x1; j <= x2; j++) {
274 if (val >= nc)
continue;
340 return ERROR_INT(
"pixs not defined", __func__, 1);
341 if ((cmap = pixGetColormap(pixs)) == NULL)
342 return ERROR_INT(
"no colormap", __func__, 1);
343 pixGetDimensions(pixs, &w, &h, &d);
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) {
351 pixt = pixConvertTo8(pixs, 1);
352 pixTransferAllData(pixs, &pixt, 0, 0);
356 boxa = boxaCreate(1);
358 boxaAddBox(boxa, box,
L_COPY);
360 box = boxCreate(0, 0, w, h);
400l_int32 i, j, w, h, wm, hm, wmin, hmin, wpl, wplm;
403l_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);
420 map = numaGetIArray(na);
423 return ERROR_INT(
"map not made", __func__, 1);
425 pixGetDimensions(pixs, &w, &h, NULL);
426 pixGetDimensions(pixm, &wm, &hm, NULL);
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);
434 data = pixGetData(pixs);
435 wpl = pixGetWpl(pixs);
436 datam = pixGetData(pixm);
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++) {
495l_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);
504 n = pixcmapGetCount(cmap);
506 for (i = 0; i < n; i++) {
507 pixcmapGetColor(cmap, i, &erval, &egval, &ebval);
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.);
513 if (pixcmapAddNewColor(cmap, nrval, ngval, nbval, &newindex)) {
515 L_WARNING(
"no room; colormap full\n", __func__);
518 numaAddNumber(na, newindex);
520 numaAddNumber(na, 256);
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.);
530 if (pixcmapAddNewColor(cmap, nrval, ngval, nbval, &newindex)) {
532 L_WARNING(
"no room; colormap full\n", __func__);
535 numaAddNumber(na, newindex);
537 numaAddNumber(na, 256);
586l_int32 i, j, w, h, d, n, wm, hm, wpls, wplm, val;
588l_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);
605 n = pixcmapGetCount(cmap);
607 return ERROR_INT(
"sindex too large; no cmap entry", __func__, 1);
608 if (pixcmapGetIndex(cmap, rval, gval, bval, &index)) {
609 if (pixcmapAddColor(cmap, rval, gval, bval))
610 return ERROR_INT(
"error adding cmap entry", __func__, 1);
617 pixGetDimensions(pixs, &w, &h, NULL);
618 datas = pixGetData(pixs);
619 wpls = pixGetWpl(pixs);
620 wm = pixGetWidth(pixm);
621 hm = pixGetHeight(pixm);
622 datam = pixGetData(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);
694l_int32 w, h, d, wpl, wm, hm, wplm;
696l_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);
714 if (pixcmapGetIndex(cmap, rval, gval, bval, &index)) {
715 if (pixcmapAddColor(cmap, rval, gval, bval))
716 return ERROR_INT(
"no room in cmap", __func__, 1);
717 index = pixcmapGetCount(cmap) - 1;
720 pixGetDimensions(pixs, &w, &h, NULL);
721 wpl = pixGetWpl(pixs);
722 data = pixGetData(pixs);
723 pixGetDimensions(pixm, &wm, &hm, NULL);
724 wplm = pixGetWpl(pixm);
725 datam = pixGetData(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 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()