54 #include <config_auto.h> 58 #include "allheaders.h" 78 PROCNAME(
"pixRotateOrth");
81 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
82 if (quads < 0 || quads > 3)
83 return (
PIX *)ERROR_PTR(
"quads not in {0,1,2,3}", procName, NULL);
129 PROCNAME(
"pixRotate180");
132 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
133 d = pixGetDepth(pixs);
134 if (d != 1 && d != 2 && d != 4 && d != 8 && d != 16 && d != 32)
135 return (
PIX *)ERROR_PTR(
"pixs not in {1,2,4,8,16,32} bpp",
139 if ((pixd =
pixCopy(pixd, pixs)) == NULL)
140 return (
PIX *)ERROR_PTR(
"pixd not made", procName, NULL);
169 l_int32 wd, hd, d, wpls, wpld;
170 l_int32 i, j, k, m, iend, nswords;
172 l_uint32 *lines, *datas, *lined, *datad;
175 PROCNAME(
"pixRotate90");
178 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
180 if (d != 1 && d != 2 && d != 4 && d != 8 && d != 16 && d != 32)
181 return (
PIX *)ERROR_PTR(
"pixs not in {1,2,4,8,16,32} bpp",
183 if (direction != 1 && direction != -1)
184 return (
PIX *)ERROR_PTR(
"invalid direction", procName, NULL);
186 if ((pixd =
pixCreate(wd, hd, d)) == NULL)
187 return (
PIX *)ERROR_PTR(
"pixd not made", procName, NULL);
189 pixCopyResolution(pixd, pixs);
190 pixCopyInputFormat(pixd, pixs);
194 wpls = pixGetWpl(pixs);
196 wpld = pixGetWpl(pixd);
198 if (direction == 1) {
202 for (i = 0; i < hd; i++) {
203 lined = datad + i * wpld;
204 lines = datas + (wd - 1) * wpls;
205 for (j = 0; j < wd; j++) {
212 for (i = 0; i < hd; i++) {
213 lined = datad + i * wpld;
214 lines = datas + (wd - 1) * wpls;
215 for (j = 0; j < wd; j++) {
223 for (i = 0; i < hd; i++) {
224 lined = datad + i * wpld;
225 lines = datas + (wd - 1) * wpls;
226 for (j = 0; j < wd; j++) {
234 for (i = 0; i < hd; i++) {
235 lined = datad + i * wpld;
236 lines = datas + (wd - 1) * wpls;
237 for (j = 0; j < wd; j++) {
245 for (i = 0; i < hd; i++) {
246 lined = datad + i * wpld;
247 lines = datas + (wd - 1) * wpls;
248 for (j = 0; j < wd; j++) {
257 for (j = 0; j < wd; j++) {
259 lines = datas + (wd - 1 - j) * wpls;
260 for (k = 0; k < nswords; k++) {
267 for (m = 0, i = 32 * k; i < iend; i++, m++) {
268 if ((word << m) & 0x80000000)
274 for (i = 32 * nswords; i < hd; i++) {
283 L_ERROR(
"illegal depth: %d\n", procName, d);
290 for (i = 0; i < hd; i++) {
291 lined = datad + i * wpld;
293 for (j = 0; j < wd; j++) {
294 lined[j] = lines[hd - 1 - i];
300 for (i = 0; i < hd; i++) {
301 lined = datad + i * wpld;
303 for (j = 0; j < wd; j++) {
311 for (i = 0; i < hd; i++) {
312 lined = datad + i * wpld;
314 for (j = 0; j < wd; j++) {
322 for (i = 0; i < hd; i++) {
323 lined = datad + i * wpld;
325 for (j = 0; j < wd; j++) {
333 for (i = 0; i < hd; i++) {
334 lined = datad + i * wpld;
336 for (j = 0; j < wd; j++) {
345 for (j = 0; j < wd; j++) {
346 lined = datad + (hd - 1) * wpld;
347 lines = datas + (wd - 1 - j) * wpls;
348 for (k = 0; k < nswords; k++) {
355 for (m = 0, i = 32 * k; i < iend; i++, m++) {
356 if ((word << m) & 0x80000000)
362 for (i = 32 * nswords; i < hd; i++) {
371 L_ERROR(
"illegal depth: %d\n", procName, d);
431 l_int32 w, h, d, wpl;
432 l_int32 extra, shift, databpl, bpl, i, j;
434 l_uint32 *line, *data, *buffer;
436 PROCNAME(
"pixFlipLR");
439 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
441 if (d != 1 && d != 2 && d != 4 && d != 8 && d != 16 && d != 32)
442 return (
PIX *)ERROR_PTR(
"pixs not in {1,2,4,8,16,32} bpp",
446 if ((pixd =
pixCopy(pixd, pixs)) == NULL)
447 return (
PIX *)ERROR_PTR(
"pixd not made", procName, NULL);
450 wpl = pixGetWpl(pixd);
468 if ((buffer = (l_uint32 *)LEPT_CALLOC(wpl,
sizeof(l_uint32))) == NULL) {
469 if (tab) LEPT_FREE(tab);
470 return (
PIX *)ERROR_PTR(
"buffer not made", procName, pixd);
477 for (i = 0; i < h; i++) {
478 line = data + i * wpl;
479 memcpy(buffer, line, bpl);
480 for (j = 0; j < w; j++)
481 line[j] = buffer[w - 1 - j];
485 for (i = 0; i < h; i++) {
486 line = data + i * wpl;
487 memcpy(buffer, line, bpl);
488 for (j = 0; j < w; j++) {
495 for (i = 0; i < h; i++) {
496 line = data + i * wpl;
497 memcpy(buffer, line, bpl);
498 for (j = 0; j < w; j++) {
505 extra = (w * d) & 31;
507 shift = 8 - extra / 4;
513 databpl = (w + 1) / 2;
514 for (i = 0; i < h; i++) {
515 line = data + i * wpl;
516 memcpy(buffer, line, bpl);
517 for (j = 0; j < databpl; j++) {
524 extra = (w * d) & 31;
526 shift = 16 - extra / 2;
532 databpl = (w + 3) / 4;
533 for (i = 0; i < h; i++) {
534 line = data + i * wpl;
535 memcpy(buffer, line, bpl);
536 for (j = 0; j < databpl; j++) {
543 extra = (w * d) & 31;
551 databpl = (w + 7) / 8;
552 for (i = 0; i < h; i++) {
553 line = data + i * wpl;
554 memcpy(buffer, line, bpl);
555 for (j = 0; j < databpl; j++) {
563 L_ERROR(
"illegal depth: %d\n", procName, d);
568 if (tab) LEPT_FREE(tab);
608 l_int32 h, d, wpl, i, k, h2, bpl;
609 l_uint32 *linet, *lineb;
610 l_uint32 *data, *buffer;
612 PROCNAME(
"pixFlipTB");
615 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
617 if (d != 1 && d != 2 && d != 4 && d != 8 && d != 16 && d != 32)
618 return (
PIX *)ERROR_PTR(
"pixs not in {1,2,4,8,16,32} bpp",
622 if ((pixd =
pixCopy(pixd, pixs)) == NULL)
623 return (
PIX *)ERROR_PTR(
"pixd not made", procName, NULL);
626 wpl = pixGetWpl(pixd);
627 if ((buffer = (l_uint32 *)LEPT_CALLOC(wpl,
sizeof(l_uint32))) == NULL)
628 return (
PIX *)ERROR_PTR(
"buffer not made", procName, pixd);
632 for (i = 0, k = h - 1; i < h2; i++, k--) {
633 linet = data + i * wpl;
634 lineb = data + k * wpl;
635 memcpy(buffer, linet, bpl);
636 memcpy(linet, lineb, bpl);
637 memcpy(lineb, buffer, bpl);
661 tab = (l_uint8 *)LEPT_CALLOC(256,
sizeof(l_uint8));
662 for (i = 0; i < 256; i++)
663 tab[i] = ((0x80 & i) >> 7) |
688 tab = (l_uint8 *)LEPT_CALLOC(256,
sizeof(l_uint8));
689 for (i = 0; i < 256; i++)
690 tab[i] = ((0xc0 & i) >> 6) |
711 tab = (l_uint8 *)LEPT_CALLOC(256,
sizeof(l_uint8));
712 for (i = 0; i < 256; i++)
713 tab[i] = ((0xf0 & i) >> 4) | ((0x0f & i) << 4);
PIX * pixFlipLR(PIX *pixd, PIX *pixs)
pixFlipLR()
static l_uint8 * makeReverseByteTab4(void)
makeReverseByteTab4()
static l_uint8 * makeReverseByteTab2(void)
makeReverseByteTab2()
PIX * pixRotate180(PIX *pixd, PIX *pixs)
pixRotate180()
PIX * pixCopy(PIX *pixd, const PIX *pixs)
pixCopy()
PIX * pixCreate(l_int32 width, l_int32 height, l_int32 depth)
pixCreate()
#define SET_DATA_QBIT(pdata, n, val)
l_uint32 * pixGetData(PIX *pix)
pixGetData()
#define GET_DATA_BIT(pdata, n)
static l_uint8 * makeReverseByteTab1(void)
makeReverseByteTab1()
#define SET_DATA_DIBIT(pdata, n, val)
PIX * pixFlipTB(PIX *pixd, PIX *pixs)
pixFlipTB()
#define SET_DATA_BYTE(pdata, n, val)
#define GET_DATA_QBIT(pdata, n)
#define GET_DATA_BYTE(pdata, n)
void pixDestroy(PIX **ppix)
pixDestroy()
PIX * pixRotateOrth(PIX *pixs, l_int32 quads)
pixRotateOrth()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
void rasteropHipLow(l_uint32 *data, l_int32 pixh, l_int32 depth, l_int32 wpl, l_int32 y, l_int32 h, l_int32 shift)
rasteropHipLow()
#define GET_DATA_TWO_BYTES(pdata, n)
#define GET_DATA_DIBIT(pdata, n)
l_ok pixCopyColormap(PIX *pixd, const PIX *pixs)
pixCopyColormap()
PIX * pixRotate90(PIX *pixs, l_int32 direction)
pixRotate90()
l_ok pixCopySpp(PIX *pixd, const PIX *pixs)
pixCopySpp()
#define SET_DATA_TWO_BYTES(pdata, n, val)
#define SET_DATA_BIT(pdata, n)