diff options
Diffstat (limited to 'src/core/SkConvertPixels.cpp')
-rw-r--r-- | src/core/SkConvertPixels.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/core/SkConvertPixels.cpp b/src/core/SkConvertPixels.cpp index b0d37cd89f..25645d485c 100644 --- a/src/core/SkConvertPixels.cpp +++ b/src/core/SkConvertPixels.cpp @@ -231,6 +231,16 @@ static void convert_to_alpha8(uint8_t* dst, size_t dstRB, const SkImageInfo& src } break; } + case kRGBA_F32_SkColorType: { + auto rgba = (const float*)src; + for (int y = 0; y < srcInfo.height(); y++) { + for (int x = 0; x < srcInfo.width(); x++) { + dst[x] = (uint8_t)(255.0f * rgba[4*x+3]); + } + dst = SkTAddOffset<uint8_t>(dst, dstRB); + rgba = SkTAddOffset<const float>(rgba, srcRB); + } + } break; default: SkASSERT(false); break; @@ -270,6 +280,9 @@ static void convert_with_pipeline(const SkImageInfo& dstInfo, void* dstRow, size case kRGBA_F16_SkColorType: pipeline.append(SkRasterPipeline::load_f16, &src); break; + case kRGBA_F32_SkColorType: + pipeline.append(SkRasterPipeline::load_f32, &src); + break; case kGray_8_SkColorType: pipeline.append(SkRasterPipeline::load_g8, &src); break; @@ -381,6 +394,9 @@ static void convert_with_pipeline(const SkImageInfo& dstInfo, void* dstRow, size case kRGBA_F16_SkColorType: pipeline.append(SkRasterPipeline::store_f16, &dst); break; + case kRGBA_F32_SkColorType: + pipeline.append(SkRasterPipeline::store_f32, &dst); + break; case kARGB_4444_SkColorType: pipeline.append(SkRasterPipeline::store_4444, &dst); break; |