| 463 | ////////////////////////////////////////////////////////////////////////// |
| 464 | |
| 465 | static ax::backend::PixelFormat convertR8ToFormat(const unsigned char* data, |
| 466 | size_t dataLen, |
| 467 | PixelFormat format, |
| 468 | unsigned char** outData, |
| 469 | size_t* outDataLen) |
| 470 | { |
| 471 | switch (format) |
| 472 | { |
| 473 | case PixelFormat::RGBA8: |
| 474 | *outDataLen = dataLen * 4; |
| 475 | *outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen)); |
| 476 | convertR8ToRGBA8(data, dataLen, *outData); |
| 477 | break; |
| 478 | case PixelFormat::RGB8: |
| 479 | *outDataLen = dataLen * 3; |
| 480 | *outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen)); |
| 481 | convertR8ToRGB8(data, dataLen, *outData); |
| 482 | break; |
| 483 | case PixelFormat::RGB565: |
| 484 | *outDataLen = dataLen * 2; |
| 485 | *outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen)); |
| 486 | convertR8ToRGB565(data, dataLen, *outData); |
| 487 | break; |
| 488 | case PixelFormat::RGBA4: |
| 489 | *outDataLen = dataLen * 2; |
| 490 | *outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen)); |
| 491 | convertR8ToRGBA4(data, dataLen, *outData); |
| 492 | break; |
| 493 | case PixelFormat::RGB5A1: |
| 494 | *outDataLen = dataLen * 2; |
| 495 | *outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen)); |
| 496 | convertR8ToRGB5A1(data, dataLen, *outData); |
| 497 | break; |
| 498 | case PixelFormat::R8: |
| 499 | *outData = (unsigned char*)data; |
| 500 | *outDataLen = dataLen; |
| 501 | break; |
| 502 | case PixelFormat::RG8: |
| 503 | *outDataLen = dataLen * 2; |
| 504 | *outData = (unsigned char*)malloc(sizeof(unsigned char) * (*outDataLen)); |
| 505 | convertR8ToRG8(data, dataLen, *outData); |
| 506 | break; |
| 507 | default: |
| 508 | // unsupported conversion or don't need to convert |
| 509 | if (format != PixelFormat::R8) |
| 510 | { |
| 511 | AXLOGW( |
| 512 | "Can not convert image format PixelFormat::L8 to format ID:{}, we will use it's origin format " |
| 513 | "PixelFormat::L8", |
| 514 | static_cast<int>(format)); |
| 515 | } |
| 516 | |
| 517 | *outData = (unsigned char*)data; |
| 518 | *outDataLen = dataLen; |
| 519 | return PixelFormat::R8; |
| 520 | } |
| 521 | |
| 522 | return format; |
no test coverage detected