diff options
Diffstat (limited to 'gfx/2d/Scale.cpp')
-rw-r--r-- | gfx/2d/Scale.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/gfx/2d/Scale.cpp b/gfx/2d/Scale.cpp index 71f6f6d84..cc4710435 100644 --- a/gfx/2d/Scale.cpp +++ b/gfx/2d/Scale.cpp @@ -18,23 +18,24 @@ bool Scale(uint8_t* srcData, int32_t srcWidth, int32_t srcHeight, int32_t srcStr SurfaceFormat format) { #ifdef USE_SKIA - bool opaque; - if (format == FORMAT_B8G8R8A8) { - opaque = false; + SkAlphaType alphaType; + if (format == SurfaceFormat::B8G8R8A8) { + alphaType = kPremul_SkAlphaType; } else { - opaque = true; + alphaType = kOpaque_SkAlphaType; } - SkBitmap::Config config = GfxFormatToSkiaConfig(format); + SkImageInfo info = SkImageInfo::Make(srcWidth, + srcHeight, + GfxFormatToSkiaColorType(format), + alphaType); SkBitmap imgSrc; - imgSrc.setConfig(config, srcWidth, srcHeight, srcStride); - imgSrc.setPixels(srcData); - imgSrc.setIsOpaque(opaque); + imgSrc.installPixels(info, srcData, srcStride); // Rescaler is compatible with 32 bpp only. Convert to RGB32 if needed. - if (config != SkBitmap::kARGB_8888_Config) { - imgSrc.copyTo(&imgSrc, SkBitmap::kARGB_8888_Config); + if (format != SurfaceFormat::B8G8R8A8) { + imgSrc.copyTo(&imgSrc, kBGRA_8888_SkColorType); } // This returns an SkBitmap backed by dstData; since it also wrote to dstData, |