---------------------------------------------------------------------------* * Top-level conversion to 2 bpp * *---------------------------------------------------------------------------*/ ! * \brief pixConvertTo2() * * \param[in] pixs 1, 2, 4, 8, 32 bpp; colormap OK but will be removed * \return pixd 2 bpp, or NULL on error * *
| 2715 | * </pre> |
| 2716 | */ |
| 2717 | PIX * |
| 2718 | pixConvertTo2(PIX *pixs) |
| 2719 | { |
| 2720 | l_int32 d; |
| 2721 | PIX *pix1, *pix2, *pix3, *pixd; |
| 2722 | |
| 2723 | PROCNAME("pixConvertTo2"); |
| 2724 | |
| 2725 | if (!pixs) |
| 2726 | return (PIX *)ERROR_PTR("pixs not defined", procName, NULL); |
| 2727 | d = pixGetDepth(pixs); |
| 2728 | if (d != 1 && d != 2 && d != 4 && d != 8 && d != 32) |
| 2729 | return (PIX *)ERROR_PTR("depth not {1,2,4,8,32}", procName, NULL); |
| 2730 | |
| 2731 | if (pixGetColormap(pixs) != NULL) { |
| 2732 | pix1 = pixRemoveColormap(pixs, REMOVE_CMAP_TO_GRAYSCALE); |
| 2733 | d = pixGetDepth(pix1); |
| 2734 | } else { |
| 2735 | pix1 = pixCopy(NULL, pixs); |
| 2736 | } |
| 2737 | if (d == 32) |
| 2738 | pix2 = pixConvertTo8(pix1, FALSE); |
| 2739 | else |
| 2740 | pix2 = pixClone(pix1); |
| 2741 | pixDestroy(&pix1); |
| 2742 | if (d == 1) { |
| 2743 | pixd = pixConvert1To2(NULL, pix2, 3, 0); |
| 2744 | } else if (d == 2) { |
| 2745 | pixd = pixClone(pix2); |
| 2746 | } else if (d == 4) { |
| 2747 | pix3 = pixConvert4To8(pix2, FALSE); /* unpack to 8 */ |
| 2748 | pixd = pixConvert8To2(pix3); |
| 2749 | pixDestroy(&pix3); |
| 2750 | } else { /* d == 8 */ |
| 2751 | pixd = pixConvert8To2(pix2); |
| 2752 | } |
| 2753 | pixDestroy(&pix2); |
| 2754 | return pixd; |
| 2755 | } |
| 2756 | |
| 2757 | |
| 2758 | /*! |
nothing calls this directly
no test coverage detected