|
|
@ -3969,13 +3969,21 @@ void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color |
|
|
|
// [-] GetPixelColor(): Get Vector4 instead of Color, easier for ColorAlphaBlend() |
|
|
|
// [ ] Support f32bit channels drawing |
|
|
|
|
|
|
|
// TODO: Support PIXELFORMAT_UNCOMPRESSED_R32, PIXELFORMAT_UNCOMPRESSED_R32G32B32, PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 and 16-bit equivalents |
|
|
|
// TODO: Support PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 and PIXELFORMAT_UNCOMPRESSED_R1616B16A16 |
|
|
|
|
|
|
|
Color colSrc, colDst, blend; |
|
|
|
bool blendRequired = true; |
|
|
|
|
|
|
|
// Fast path: Avoid blend if source has no alpha to blend |
|
|
|
if ((tint.a == 255) && ((srcPtr->format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) || (srcPtr->format == PIXELFORMAT_UNCOMPRESSED_R8G8B8) || (srcPtr->format == PIXELFORMAT_UNCOMPRESSED_R5G6B5))) blendRequired = false; |
|
|
|
if ((tint.a == 255) && |
|
|
|
((srcPtr->format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) || |
|
|
|
(srcPtr->format == PIXELFORMAT_UNCOMPRESSED_R5G6B5) || |
|
|
|
(srcPtr->format == PIXELFORMAT_UNCOMPRESSED_R8G8B8) || |
|
|
|
(srcPtr->format == PIXELFORMAT_UNCOMPRESSED_R32) || |
|
|
|
(srcPtr->format == PIXELFORMAT_UNCOMPRESSED_R32G32B32) || |
|
|
|
(srcPtr->format == PIXELFORMAT_UNCOMPRESSED_R16) || |
|
|
|
(srcPtr->format == PIXELFORMAT_UNCOMPRESSED_R16G16B16))) |
|
|
|
blendRequired = false; |
|
|
|
|
|
|
|
int strideDst = GetPixelDataSize(dst->width, 1, dst->format); |
|
|
|
int bytesPerPixelDst = strideDst/(dst->width); |
|
|
|