107 #include "allheaders.h" 109 static void rotateAMColorLow(l_uint32 *datad, l_int32 w, l_int32 h,
110 l_int32 wpld, l_uint32 *datas, l_int32 wpls,
111 l_float32 angle, l_uint32 colorval);
112 static void rotateAMGrayLow(l_uint32 *datad, l_int32 w, l_int32 h,
113 l_int32 wpld, l_uint32 *datas, l_int32 wpls,
114 l_float32 angle, l_uint8 grayval);
115 static void rotateAMColorCornerLow(l_uint32 *datad, l_int32 w, l_int32 h,
116 l_int32 wpld, l_uint32 *datas,
117 l_int32 wpls, l_float32 angle,
119 static void rotateAMGrayCornerLow(l_uint32 *datad, l_int32 w, l_int32 h,
120 l_int32 wpld, l_uint32 *datas, l_int32 wpls,
121 l_float32 angle, l_uint8 grayval);
124 l_int32 wpld, l_uint32 *datas, l_int32 wpls,
125 l_float32 angle, l_uint32 colorval);
127 static const l_float32 MIN_ANGLE_TO_ROTATE = 0.001;
155 PIX *pixt1, *pixt2, *pixd;
157 PROCNAME(
"pixRotateAM");
160 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
161 if (pixGetDepth(pixs) == 1)
162 return (
PIX *)ERROR_PTR(
"pixs is 1 bpp", procName, NULL);
164 if (L_ABS(angle) < MIN_ANGLE_TO_ROTATE)
169 d = pixGetDepth(pixt1);
174 d = pixGetDepth(pixt2);
182 fillval = 0xffffff00;
216 l_int32 w, h, wpls, wpld;
217 l_uint32 *datas, *datad;
218 PIX *pix1, *pix2, *pixd;
220 PROCNAME(
"pixRotateAMColor");
223 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
224 if (pixGetDepth(pixs) != 32)
225 return (
PIX *)ERROR_PTR(
"pixs must be 32 bpp", procName, NULL);
227 if (L_ABS(angle) < MIN_ANGLE_TO_ROTATE)
232 wpls = pixGetWpl(pixs);
235 wpld = pixGetWpl(pixd);
237 rotateAMColorLow(datad, w, h, wpld, datas, wpls, angle, colorval);
238 if (pixGetSpp(pixs) == 4) {
270 l_int32 w, h, wpls, wpld;
271 l_uint32 *datas, *datad;
274 PROCNAME(
"pixRotateAMGray");
277 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
278 if (pixGetDepth(pixs) != 8)
279 return (
PIX *)ERROR_PTR(
"pixs must be 8 bpp", procName, NULL);
281 if (L_ABS(angle) < MIN_ANGLE_TO_ROTATE)
286 wpls = pixGetWpl(pixs);
289 wpld = pixGetWpl(pixd);
291 rotateAMGrayLow(datad, w, h, wpld, datas, wpls, angle, grayval);
298 rotateAMColorLow(l_uint32 *datad,
307 l_int32 i, j, xcen, ycen, wm2, hm2;
308 l_int32 xdif, ydif, xpm, ypm, xp, yp, xf, yf;
309 l_int32 rval, gval, bval;
310 l_uint32 word00, word01, word10, word11;
311 l_uint32 *lines, *lined;
312 l_float32 sina, cosa;
318 sina = 16. * sin(angle);
319 cosa = 16. * cos(angle);
321 for (i = 0; i < h; i++) {
323 lined = datad + i * wpld;
324 for (j = 0; j < w; j++) {
326 xpm = (l_int32)(-xdif * cosa - ydif * sina);
327 ypm = (l_int32)(-ydif * cosa + xdif * sina);
328 xp = xcen + (xpm >> 4);
329 yp = ycen + (ypm >> 4);
334 if (xp < 0 || yp < 0 || xp > wm2 || yp > hm2) {
335 *(lined + j) = colorval;
339 lines = datas + yp * wpls;
346 word00 = *(lines + xp);
347 word10 = *(lines + xp + 1);
348 word01 = *(lines + wpls + xp);
349 word11 = *(lines + wpls + xp + 1);
350 rval = ((16 - xf) * (16 - yf) * ((word00 >> L_RED_SHIFT) & 0xff) +
351 xf * (16 - yf) * ((word10 >> L_RED_SHIFT) & 0xff) +
352 (16 - xf) * yf * ((word01 >> L_RED_SHIFT) & 0xff) +
353 xf * yf * ((word11 >> L_RED_SHIFT) & 0xff) + 128) / 256;
354 gval = ((16 - xf) * (16 - yf) * ((word00 >> L_GREEN_SHIFT) & 0xff) +
355 xf * (16 - yf) * ((word10 >> L_GREEN_SHIFT) & 0xff) +
356 (16 - xf) * yf * ((word01 >> L_GREEN_SHIFT) & 0xff) +
357 xf * yf * ((word11 >> L_GREEN_SHIFT) & 0xff) + 128) / 256;
358 bval = ((16 - xf) * (16 - yf) * ((word00 >> L_BLUE_SHIFT) & 0xff) +
359 xf * (16 - yf) * ((word10 >> L_BLUE_SHIFT) & 0xff) +
360 (16 - xf) * yf * ((word01 >> L_BLUE_SHIFT) & 0xff) +
361 xf * yf * ((word11 >> L_BLUE_SHIFT) & 0xff) + 128) / 256;
369 rotateAMGrayLow(l_uint32 *datad,
378 l_int32 i, j, xcen, ycen, wm2, hm2;
379 l_int32 xdif, ydif, xpm, ypm, xp, yp, xf, yf;
380 l_int32 v00, v01, v10, v11;
382 l_uint32 *lines, *lined;
383 l_float32 sina, cosa;
389 sina = 16. * sin(angle);
390 cosa = 16. * cos(angle);
392 for (i = 0; i < h; i++) {
394 lined = datad + i * wpld;
395 for (j = 0; j < w; j++) {
397 xpm = (l_int32)(-xdif * cosa - ydif * sina);
398 ypm = (l_int32)(-ydif * cosa + xdif * sina);
399 xp = xcen + (xpm >> 4);
400 yp = ycen + (ypm >> 4);
405 if (xp < 0 || yp < 0 || xp > wm2 || yp > hm2) {
410 lines = datas + yp * wpls;
421 val = (l_uint8)((v00 + v01 + v10 + v11 + 128) / 256);
453 PIX *pixt1, *pixt2, *pixd;
455 PROCNAME(
"pixRotateAMCorner");
458 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
460 if (L_ABS(angle) < MIN_ANGLE_TO_ROTATE)
465 d = pixGetDepth(pixt1);
470 d = pixGetDepth(pixt2);
478 fillval = 0xffffff00;
512 l_int32 w, h, wpls, wpld;
513 l_uint32 *datas, *datad;
514 PIX *pix1, *pix2, *pixd;
516 PROCNAME(
"pixRotateAMColorCorner");
519 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
520 if (pixGetDepth(pixs) != 32)
521 return (
PIX *)ERROR_PTR(
"pixs must be 32 bpp", procName, NULL);
523 if (L_ABS(angle) < MIN_ANGLE_TO_ROTATE)
528 wpls = pixGetWpl(pixs);
531 wpld = pixGetWpl(pixd);
533 rotateAMColorCornerLow(datad, w, h, wpld, datas, wpls, angle, fillval);
534 if (pixGetSpp(pixs) == 4) {
566 l_int32 w, h, wpls, wpld;
567 l_uint32 *datas, *datad;
570 PROCNAME(
"pixRotateAMGrayCorner");
573 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
574 if (pixGetDepth(pixs) != 8)
575 return (
PIX *)ERROR_PTR(
"pixs must be 8 bpp", procName, NULL);
577 if (L_ABS(angle) < MIN_ANGLE_TO_ROTATE)
582 wpls = pixGetWpl(pixs);
585 wpld = pixGetWpl(pixd);
587 rotateAMGrayCornerLow(datad, w, h, wpld, datas, wpls, angle, grayval);
594 rotateAMColorCornerLow(l_uint32 *datad,
603 l_int32 i, j, wm2, hm2;
604 l_int32 xpm, ypm, xp, yp, xf, yf;
605 l_int32 rval, gval, bval;
606 l_uint32 word00, word01, word10, word11;
607 l_uint32 *lines, *lined;
608 l_float32 sina, cosa;
612 sina = 16. * sin(angle);
613 cosa = 16. * cos(angle);
615 for (i = 0; i < h; i++) {
616 lined = datad + i * wpld;
617 for (j = 0; j < w; j++) {
618 xpm = (l_int32)(j * cosa + i * sina);
619 ypm = (l_int32)(i * cosa - j * sina);
626 if (xp < 0 || yp < 0 || xp > wm2 || yp > hm2) {
627 *(lined + j) = colorval;
631 lines = datas + yp * wpls;
638 word00 = *(lines + xp);
639 word10 = *(lines + xp + 1);
640 word01 = *(lines + wpls + xp);
641 word11 = *(lines + wpls + xp + 1);
642 rval = ((16 - xf) * (16 - yf) * ((word00 >> L_RED_SHIFT) & 0xff) +
643 xf * (16 - yf) * ((word10 >> L_RED_SHIFT) & 0xff) +
644 (16 - xf) * yf * ((word01 >> L_RED_SHIFT) & 0xff) +
645 xf * yf * ((word11 >> L_RED_SHIFT) & 0xff) + 128) / 256;
646 gval = ((16 - xf) * (16 - yf) * ((word00 >> L_GREEN_SHIFT) & 0xff) +
647 xf * (16 - yf) * ((word10 >> L_GREEN_SHIFT) & 0xff) +
648 (16 - xf) * yf * ((word01 >> L_GREEN_SHIFT) & 0xff) +
649 xf * yf * ((word11 >> L_GREEN_SHIFT) & 0xff) + 128) / 256;
650 bval = ((16 - xf) * (16 - yf) * ((word00 >> L_BLUE_SHIFT) & 0xff) +
651 xf * (16 - yf) * ((word10 >> L_BLUE_SHIFT) & 0xff) +
652 (16 - xf) * yf * ((word01 >> L_BLUE_SHIFT) & 0xff) +
653 xf * yf * ((word11 >> L_BLUE_SHIFT) & 0xff) + 128) / 256;
661 rotateAMGrayCornerLow(l_uint32 *datad,
670 l_int32 i, j, wm2, hm2;
671 l_int32 xpm, ypm, xp, yp, xf, yf;
672 l_int32 v00, v01, v10, v11;
674 l_uint32 *lines, *lined;
675 l_float32 sina, cosa;
679 sina = 16. * sin(angle);
680 cosa = 16. * cos(angle);
682 for (i = 0; i < h; i++) {
683 lined = datad + i * wpld;
684 for (j = 0; j < w; j++) {
685 xpm = (l_int32)(j * cosa + i * sina);
686 ypm = (l_int32)(i * cosa - j * sina);
693 if (xp < 0 || yp < 0 || xp > wm2 || yp > hm2) {
698 lines = datas + yp * wpls;
709 val = (l_uint8)((v00 + v01 + v10 + v11 + 128) / 256);
745 l_int32 w, h, wpls, wpld;
746 l_uint32 *datas, *datad;
749 PROCNAME(
"pixRotateAMColorFast");
752 return (
PIX *)ERROR_PTR(
"pixs not defined", procName, NULL);
753 if (pixGetDepth(pixs) != 32)
754 return (
PIX *)ERROR_PTR(
"pixs must be 32 bpp", procName, NULL);
756 if (L_ABS(angle) < MIN_ANGLE_TO_ROTATE)
761 wpls = pixGetWpl(pixs);
764 wpld = pixGetWpl(pixd);
849 l_int32 i, j, xcen, ycen, wm2, hm2;
850 l_int32 xdif, ydif, xpm, ypm, xp, yp, xf, yf;
851 l_uint32 word1, word2, word3, word4, red, blue, green;
852 l_uint32 *pword, *lines, *lined;
853 l_float32 sina, cosa;
859 sina = 4. * sin(angle);
860 cosa = 4. * cos(angle);
862 for (i = 0; i < h; i++) {
864 lined = datad + i * wpld;
865 for (j = 0; j < w; j++) {
867 xpm = (l_int32)(-xdif * cosa - ydif * sina);
868 ypm = (l_int32)(-ydif * cosa + xdif * sina);
869 xp = xcen + (xpm >> 2);
870 yp = ycen + (ypm >> 2);
875 if (xp < 0 || yp < 0 || xp > wm2 || yp > hm2) {
876 *(lined + j) = colorval;
880 lines = datas + yp * wpls;
886 *(lined + j) = *pword;
890 word2 = *(pword + 1);
891 red = 3 * (word1 >> 24) + (word2 >> 24);
892 green = 3 * ((word1 >> 16) & 0xff) +
893 ((word2 >> 16) & 0xff);
894 blue = 3 * ((word1 >> 8) & 0xff) +
895 ((word2 >> 8) & 0xff);
896 *(lined + j) = ((red << 22) & 0xff000000) |
897 ((green << 14) & 0x00ff0000) |
898 ((blue << 6) & 0x0000ff00);
902 word2 = *(pword + 1);
903 red = (word1 >> 24) + (word2 >> 24);
904 green = ((word1 >> 16) & 0xff) + ((word2 >> 16) & 0xff);
905 blue = ((word1 >> 8) & 0xff) + ((word2 >> 8) & 0xff);
906 *(lined + j) = ((red << 23) & 0xff000000) |
907 ((green << 15) & 0x00ff0000) |
908 ((blue << 7) & 0x0000ff00);
912 word2 = *(pword + 1);
913 red = (word1 >> 24) + 3 * (word2 >> 24);
914 green = ((word1 >> 16) & 0xff) +
915 3 * ((word2 >> 16) & 0xff);
916 blue = ((word1 >> 8) & 0xff) +
917 3 * ((word2 >> 8) & 0xff);
918 *(lined + j) = ((red << 22) & 0xff000000) |
919 ((green << 14) & 0x00ff0000) |
920 ((blue << 6) & 0x0000ff00);
924 word3 = *(pword + wpls);
925 red = 3 * (word1 >> 24) + (word3 >> 24);
926 green = 3 * ((word1 >> 16) & 0xff) +
927 ((word3 >> 16) & 0xff);
928 blue = 3 * ((word1 >> 8) & 0xff) +
929 ((word3 >> 8) & 0xff);
930 *(lined + j) = ((red << 22) & 0xff000000) |
931 ((green << 14) & 0x00ff0000) |
932 ((blue << 6) & 0x0000ff00);
936 word2 = *(pword + 1);
937 word3 = *(pword + wpls);
938 word4 = *(pword + wpls + 1);
939 red = 9 * (word1 >> 24) + 3 * (word2 >> 24) +
940 3 * (word3 >> 24) + (word4 >> 24);
941 green = 9 * ((word1 >> 16) & 0xff) +
942 3 * ((word2 >> 16) & 0xff) +
943 3 * ((word3 >> 16) & 0xff) +
944 ((word4 >> 16) & 0xff);
945 blue = 9 * ((word1 >> 8) & 0xff) +
946 3 * ((word2 >> 8) & 0xff) +
947 3 * ((word3 >> 8) & 0xff) +
948 ((word4 >> 8) & 0xff);
949 *(lined + j) = ((red << 20) & 0xff000000) |
950 ((green << 12) & 0x00ff0000) |
951 ((blue << 4) & 0x0000ff00);
955 word2 = *(pword + 1);
956 word3 = *(pword + wpls);
957 word4 = *(pword + wpls + 1);
958 red = 3 * (word1 >> 24) + 3 * (word2 >> 24) +
959 (word3 >> 24) + (word4 >> 24);
960 green = 3 * ((word1 >> 16) & 0xff) +
961 3 * ((word2 >> 16) & 0xff) +
962 ((word3 >> 16) & 0xff) +
963 ((word4 >> 16) & 0xff);
964 blue = 3 * ((word1 >> 8) & 0xff) +
965 3 * ((word2 >> 8) & 0xff) +
966 ((word3 >> 8) & 0xff) +
967 ((word4 >> 8) & 0xff);
968 *(lined + j) = ((red << 21) & 0xff000000) |
969 ((green << 13) & 0x00ff0000) |
970 ((blue << 5) & 0x0000ff00);
974 word2 = *(pword + 1);
975 word3 = *(pword + wpls);
976 word4 = *(pword + wpls + 1);
977 red = 3 * (word1 >> 24) + 9 * (word2 >> 24) +
978 (word3 >> 24) + 3 * (word4 >> 24);
979 green = 3 * ((word1 >> 16) & 0xff) +
980 9 * ((word2 >> 16) & 0xff) +
981 ((word3 >> 16) & 0xff) +
982 3 * ((word4 >> 16) & 0xff);
983 blue = 3 * ((word1 >> 8) & 0xff) +
984 9 * ((word2 >> 8) & 0xff) +
985 ((word3 >> 8) & 0xff) +
986 3 * ((word4 >> 8) & 0xff);
987 *(lined + j) = ((red << 20) & 0xff000000) |
988 ((green << 12) & 0x00ff0000) |
989 ((blue << 4) & 0x0000ff00);
993 word3 = *(pword + wpls);
994 red = (word1 >> 24) + (word3 >> 24);
995 green = ((word1 >> 16) & 0xff) + ((word3 >> 16) & 0xff);
996 blue = ((word1 >> 8) & 0xff) + ((word3 >> 8) & 0xff);
997 *(lined + j) = ((red << 23) & 0xff000000) |
998 ((green << 15) & 0x00ff0000) |
999 ((blue << 7) & 0x0000ff00);
1003 word2 = *(pword + 1);
1004 word3 = *(pword + wpls);
1005 word4 = *(pword + wpls + 1);
1006 red = 3 * (word1 >> 24) + (word2 >> 24) +
1007 3 * (word3 >> 24) + (word4 >> 24);
1008 green = 3 * ((word1 >> 16) & 0xff) + ((word2 >> 16) & 0xff) +
1009 3 * ((word3 >> 16) & 0xff) + ((word4 >> 16) & 0xff);
1010 blue = 3 * ((word1 >> 8) & 0xff) + ((word2 >> 8) & 0xff) +
1011 3 * ((word3 >> 8) & 0xff) + ((word4 >> 8) & 0xff);
1012 *(lined + j) = ((red << 21) & 0xff000000) |
1013 ((green << 13) & 0x00ff0000) |
1014 ((blue << 5) & 0x0000ff00);
1018 word2 = *(pword + 1);
1019 word3 = *(pword + wpls);
1020 word4 = *(pword + wpls + 1);
1021 red = (word1 >> 24) + (word2 >> 24) +
1022 (word3 >> 24) + (word4 >> 24);
1023 green = ((word1 >> 16) & 0xff) + ((word2 >> 16) & 0xff) +
1024 ((word3 >> 16) & 0xff) + ((word4 >> 16) & 0xff);
1025 blue = ((word1 >> 8) & 0xff) + ((word2 >> 8) & 0xff) +
1026 ((word3 >> 8) & 0xff) + ((word4 >> 8) & 0xff);
1027 *(lined + j) = ((red << 22) & 0xff000000) |
1028 ((green << 14) & 0x00ff0000) |
1029 ((blue << 6) & 0x0000ff00);
1033 word2 = *(pword + 1);
1034 word3 = *(pword + wpls);
1035 word4 = *(pword + wpls + 1);
1036 red = (word1 >> 24) + 3 * (word2 >> 24) +
1037 (word3 >> 24) + 3 * (word4 >> 24);
1038 green = ((word1 >> 16) & 0xff) + 3 * ((word2 >> 16) & 0xff) +
1039 ((word3 >> 16) & 0xff) + 3 * ((word4 >> 16) & 0xff);
1040 blue = ((word1 >> 8) & 0xff) + 3 * ((word2 >> 8) & 0xff) +
1041 ((word3 >> 8) & 0xff) + 3 * ((word4 >> 8) & 0xff);
1042 *(lined + j) = ((red << 21) & 0xff000000) |
1043 ((green << 13) & 0x00ff0000) |
1044 ((blue << 5) & 0x0000ff00);
1048 word3 = *(pword + wpls);
1049 red = (word1 >> 24) + 3 * (word3 >> 24);
1050 green = ((word1 >> 16) & 0xff) +
1051 3 * ((word3 >> 16) & 0xff);
1052 blue = ((word1 >> 8) & 0xff) +
1053 3 * ((word3 >> 8) & 0xff);
1054 *(lined + j) = ((red << 22) & 0xff000000) |
1055 ((green << 14) & 0x00ff0000) |
1056 ((blue << 6) & 0x0000ff00);
1060 word2 = *(pword + 1);
1061 word3 = *(pword + wpls);
1062 word4 = *(pword + wpls + 1);
1063 red = 3 * (word1 >> 24) + (word2 >> 24) +
1064 9 * (word3 >> 24) + 3 * (word4 >> 24);
1065 green = 3 * ((word1 >> 16) & 0xff) + ((word2 >> 16) & 0xff) +
1066 9 * ((word3 >> 16) & 0xff) + 3 * ((word4 >> 16) & 0xff);
1067 blue = 3 *((word1 >> 8) & 0xff) + ((word2 >> 8) & 0xff) +
1068 9 * ((word3 >> 8) & 0xff) + 3 * ((word4 >> 8) & 0xff);
1069 *(lined + j) = ((red << 20) & 0xff000000) |
1070 ((green << 12) & 0x00ff0000) |
1071 ((blue << 4) & 0x0000ff00);
1075 word2 = *(pword + 1);
1076 word3 = *(pword + wpls);
1077 word4 = *(pword + wpls + 1);
1078 red = (word1 >> 24) + (word2 >> 24) +
1079 3 * (word3 >> 24) + 3 * (word4 >> 24);
1080 green = ((word1 >> 16) & 0xff) +((word2 >> 16) & 0xff) +
1081 3 * ((word3 >> 16) & 0xff) + 3 * ((word4 >> 16) & 0xff);
1082 blue = ((word1 >> 8) & 0xff) + ((word2 >> 8) & 0xff) +
1083 3 * ((word3 >> 8) & 0xff) + 3 * ((word4 >> 8) & 0xff);
1084 *(lined + j) = ((red << 21) & 0xff000000) |
1085 ((green << 13) & 0x00ff0000) |
1086 ((blue << 5) & 0x0000ff00);
1090 word2 = *(pword + 1);
1091 word3 = *(pword + wpls);
1092 word4 = *(pword + wpls + 1);
1093 red = (word1 >> 24) + 3 * (word2 >> 24) +
1094 3 * (word3 >> 24) + 9 * (word4 >> 24);
1095 green = ((word1 >> 16) & 0xff) + 3 * ((word2 >> 16) & 0xff) +
1096 3 * ((word3 >> 16) & 0xff) + 9 * ((word4 >> 16) & 0xff);
1097 blue = ((word1 >> 8) & 0xff) + 3 * ((word2 >> 8) & 0xff) +
1098 3 * ((word3 >> 8) & 0xff) + 9 * ((word4 >> 8) & 0xff);
1099 *(lined + j) = ((red << 20) & 0xff000000) |
1100 ((green << 12) & 0x00ff0000) |
1101 ((blue << 4) & 0x0000ff00);
1104 fprintf(stderr,
"shouldn't get here\n");
PIX * pixRemoveColormap(PIX *pixs, l_int32 type)
pixRemoveColormap()
l_ok pixSetRGBComponent(PIX *pixd, PIX *pixs, l_int32 comp)
pixSetRGBComponent()
static void rotateAMColorFastLow(l_uint32 *datad, l_int32 w, l_int32 h, l_int32 wpld, l_uint32 *datas, l_int32 wpls, l_float32 angle, l_uint32 colorval)
rotateAMColorFastLow()
PIX * pixConvertTo8(PIX *pixs, l_int32 cmapflag)
pixConvertTo8()
l_uint32 * pixGetData(PIX *pix)
pixGetData()
PIX * pixCreateTemplate(PIX *pixs)
pixCreateTemplate()
PIX * pixGetRGBComponent(PIX *pixs, l_int32 comp)
pixGetRGBComponent()
PIX * pixRotateAMColor(PIX *pixs, l_float32 angle, l_uint32 colorval)
pixRotateAMColor()
#define SET_DATA_BYTE(pdata, n, val)
#define GET_DATA_BYTE(pdata, n)
PIX * pixClone(PIX *pixs)
pixClone()
PIX * pixRotateAMGrayCorner(PIX *pixs, l_float32 angle, l_uint8 grayval)
pixRotateAMGrayCorner()
void pixDestroy(PIX **ppix)
pixDestroy()
PIX * pixRotateAMCorner(PIX *pixs, l_float32 angle, l_int32 incolor)
pixRotateAMCorner()
PIX * pixRotateAM(PIX *pixs, l_float32 angle, l_int32 incolor)
pixRotateAM()
l_ok pixGetDimensions(const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd)
pixGetDimensions()
PIX * pixRotateAMGray(PIX *pixs, l_float32 angle, l_uint8 grayval)
pixRotateAMGray()
PIX * pixRotateAMColorFast(PIX *pixs, l_float32 angle, l_uint32 colorval)
pixRotateAMColorFast()
l_ok composeRGBPixel(l_int32 rval, l_int32 gval, l_int32 bval, l_uint32 *ppixel)
composeRGBPixel()
PIX * pixRotateAMColorCorner(PIX *pixs, l_float32 angle, l_uint32 fillval)
pixRotateAMColorCorner()