| 803 | } |
| 804 | |
| 805 | LLGL_EXPORT ByteBuffer GenerateImageBuffer( |
| 806 | ImageFormat format, |
| 807 | DataType dataType, |
| 808 | std::size_t imageSize, |
| 809 | const ColorRGBAd& fillColor) |
| 810 | { |
| 811 | /* Convert fill color data type */ |
| 812 | VariantColor fillColor0 { UninitializeTag{} }; |
| 813 | VariantBuffer fillBuffer0 { &fillColor0 }; |
| 814 | |
| 815 | WriteNormalizedTypedVariant(dataType, fillBuffer0, 0, fillColor.r); |
| 816 | WriteNormalizedTypedVariant(dataType, fillBuffer0, 1, fillColor.g); |
| 817 | WriteNormalizedTypedVariant(dataType, fillBuffer0, 2, fillColor.b); |
| 818 | WriteNormalizedTypedVariant(dataType, fillBuffer0, 3, fillColor.a); |
| 819 | |
| 820 | /* Convert fill color format */ |
| 821 | VariantColor fillColor1 { UninitializeTag{} }; |
| 822 | VariantBuffer fillBuffer1 { &fillColor1 }; |
| 823 | VariantConstBuffer fillBuffer2 { fillBuffer0.raw }; |
| 824 | |
| 825 | ReadRGBAFormattedVariant(ImageFormat::RGBA, dataType, fillBuffer2, 0, fillColor1); |
| 826 | WriteRGBAFormattedVariant(format, dataType, fillBuffer1, 0, fillColor1); |
| 827 | |
| 828 | /* Allocate image buffer */ |
| 829 | const auto bytesPerPixel = DataTypeSize(dataType) * ImageFormatSize(format); |
| 830 | auto imageBuffer = MakeUniqueArray<char>(bytesPerPixel * imageSize); |
| 831 | |
| 832 | /* Initialize image buffer with fill color */ |
| 833 | for (std::size_t i = 0; i < imageSize; ++i) |
| 834 | ::memcpy(imageBuffer.get() + bytesPerPixel * i, fillBuffer1.raw, bytesPerPixel); |
| 835 | |
| 836 | return imageBuffer; |
| 837 | } |
| 838 | |
| 839 | LLGL_EXPORT ByteBuffer GenerateEmptyByteBuffer(std::size_t bufferSize, bool initialize) |
| 840 | { |
nothing calls this directly
no test coverage detected