diff options
author | Mike Reed <reed@google.com> | 2017-11-30 15:33:04 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-30 21:06:38 +0000 |
commit | d6cb11ee9df514a3a65b313725d3ac3bfd003e7f (patch) | |
tree | f2381b95ecb3fe1368b7021f16783376b8c6ea51 /src/codec/SkSwizzler.cpp | |
parent | 74663e722ea905972e62c59e60cd0cbc97e8435f (diff) |
encode kAlpha_8 as grayalpha with sigbits for gray==1
Bug: skia:
Change-Id: Ib61e8e0f62af92d8746f5e73469002e7804a8447
Reviewed-on: https://skia-review.googlesource.com/78481
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/codec/SkSwizzler.cpp')
-rw-r--r-- | src/codec/SkSwizzler.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/codec/SkSwizzler.cpp b/src/codec/SkSwizzler.cpp index 84bb09702b..f3d97af3d8 100644 --- a/src/codec/SkSwizzler.cpp +++ b/src/codec/SkSwizzler.cpp @@ -357,6 +357,16 @@ static void fast_swizzle_grayalpha_to_n32_premul( SkOpts::grayA_to_rgbA((uint32_t*) dst, src + offset, width); } +static void swizzle_grayalpha_to_a8(void* dst, const uint8_t* src, int width, int bpp, + int deltaSrc, int offset, const SkPMColor[]) { + src += offset; + uint8_t* dst8 = (uint8_t*)dst; + for (int x = 0; x < width; ++x) { + dst8[x] = src[1]; // src[0] is gray, ignored + src += deltaSrc; + } +} + // kBGR static void swizzle_bgr_to_565( @@ -906,6 +916,9 @@ SkSwizzler* SkSwizzler::CreateSwizzler(const SkEncodedInfo& encodedInfo, } } break; + case kAlpha_8_SkColorType: + proc = &swizzle_grayalpha_to_a8; + break; default: return nullptr; } |