aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkConvertPixels.cpp
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2018-03-19 12:29:39 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-03-19 17:19:45 +0000
commitc9a642edf2d1c7f5380fe829adbb1a692f9969a6 (patch)
tree8d5ee55a8ae11c14a5e14867baf52efa38851a2a /src/core/SkConvertPixels.cpp
parent8430eace0bbf7258b25e42f289b6a63f38b075e7 (diff)
New read pixels implementation that is simpler but does all conversions on CPU.
Change-Id: Ia548cd24a8544b35a233311706faf48de353b7cf Reviewed-on: https://skia-review.googlesource.com/109902 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/core/SkConvertPixels.cpp')
-rw-r--r--src/core/SkConvertPixels.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/SkConvertPixels.cpp b/src/core/SkConvertPixels.cpp
index 725730a1e4..262abb7038 100644
--- a/src/core/SkConvertPixels.cpp
+++ b/src/core/SkConvertPixels.cpp
@@ -184,6 +184,30 @@ static void convert_to_alpha8(uint8_t* dst, size_t dstRB, const SkImageInfo& src
}
break;
}
+ case kRGBA_1010102_SkColorType: {
+ auto src32 = (const uint32_t*) src;
+ for (int y = 0; y < srcInfo.height(); y++) {
+ for (int x = 0; x < srcInfo.width(); x++) {
+ switch (src32[x] >> 30) {
+ case 0:
+ dst[x] = 0;
+ break;
+ case 1:
+ dst[x] = 0x55;
+ break;
+ case 2:
+ dst[x] = 0xAA;
+ break;
+ case 3:
+ dst[x] = 0xFF;
+ break;
+ }
+ }
+ dst = SkTAddOffset<uint8_t>(dst, dstRB);
+ src32 = SkTAddOffset<const uint32_t>(src32, srcRB);
+ }
+ break;
+ }
case kARGB_4444_SkColorType: {
auto src16 = (const uint16_t*) src;
for (int y = 0; y < srcInfo.height(); y++) {