convert map: 1.PixelFormat::RGBA8 2.PixelFormat::RGB8 3.PixelFormat::RGB565 4.PixelFormat::R8 5.PixelFormat::RG8 6.PixelFormat::RGBA4 7.PixelFormat::RGB5A1 gray(5) -> 1235678 gray alpha(6) -> 12345678 rgb(2) -> 1235678 rgba(1) -> 12345678 */
| 829 | |
| 830 | */ |
| 831 | ax::backend::PixelFormat convertDataToFormat(const unsigned char* data, |
| 832 | size_t dataLen, |
| 833 | PixelFormat originFormat, |
| 834 | PixelFormat format, |
| 835 | unsigned char** outData, |
| 836 | size_t* outDataLen) |
| 837 | { |
| 838 | // don't need to convert |
| 839 | if (format == originFormat) |
| 840 | { |
| 841 | *outData = (unsigned char*)data; |
| 842 | *outDataLen = dataLen; |
| 843 | return originFormat; |
| 844 | } |
| 845 | |
| 846 | switch (originFormat) |
| 847 | { |
| 848 | case PixelFormat::R8: |
| 849 | return convertR8ToFormat(data, dataLen, format, outData, outDataLen); |
| 850 | case PixelFormat::RG8: |
| 851 | return convertRG8ToFormat(data, dataLen, format, outData, outDataLen); |
| 852 | case PixelFormat::RGB8: |
| 853 | return convertRGB8ToFormat(data, dataLen, format, outData, outDataLen); |
| 854 | case PixelFormat::RGBA8: |
| 855 | return convertRGBA8ToFormat(data, dataLen, format, outData, outDataLen); |
| 856 | case PixelFormat::RGB5A1: |
| 857 | return convertRGB5A1ToFormat(data, dataLen, format, outData, outDataLen); |
| 858 | case PixelFormat::RGB565: |
| 859 | return convertRGB565ToFormat(data, dataLen, format, outData, outDataLen); |
| 860 | case PixelFormat::RGBA4: |
| 861 | return convertRGBA4ToFormat(data, dataLen, format, outData, outDataLen); |
| 862 | case PixelFormat::BGRA8: |
| 863 | return convertBGRA8ToFormat(data, dataLen, format, outData, outDataLen); |
| 864 | default: |
| 865 | AXLOGW("unsupported conversion from format {} to format {}", static_cast<int>(originFormat), |
| 866 | static_cast<int>(format)); |
| 867 | *outData = (unsigned char*)data; |
| 868 | *outDataLen = dataLen; |
| 869 | return originFormat; |
| 870 | } |
| 871 | } |
| 872 | } // namespace PixelFormatUtils |
| 873 | } // namespace backend |
| 874 |
no test coverage detected