SkBitmap::getColor repsects swizzle
Review URL: https://codereview.chromium.org/1510253002
This commit is contained in:
parent
4a4f14ba3f
commit
b260d130ca
@ -572,10 +572,15 @@ SkColor SkBitmap::getColor(int x, int y) const {
|
||||
SkPMColor c = SkPixel4444ToPixel32(addr[0]);
|
||||
return SkUnPreMultiply::PMColorToColor(c);
|
||||
}
|
||||
case kBGRA_8888_SkColorType:
|
||||
case kBGRA_8888_SkColorType: {
|
||||
uint32_t* addr = this->getAddr32(x, y);
|
||||
SkPMColor c = SkSwizzle_BGRA_to_PMColor(addr[0]);
|
||||
return SkUnPreMultiply::PMColorToColor(c);
|
||||
}
|
||||
case kRGBA_8888_SkColorType: {
|
||||
uint32_t* addr = this->getAddr32(x, y);
|
||||
return SkUnPreMultiply::PMColorToColor(addr[0]);
|
||||
SkPMColor c = SkSwizzle_RGBA_to_PMColor(addr[0]);
|
||||
return SkUnPreMultiply::PMColorToColor(c);
|
||||
}
|
||||
default:
|
||||
SkASSERT(false);
|
||||
|
@ -122,3 +122,26 @@ DEF_TEST(Bitmap, reporter) {
|
||||
test_bigalloc(reporter);
|
||||
test_peekpixels(reporter);
|
||||
}
|
||||
|
||||
/**
|
||||
* This test checks that getColor works for both swizzles.
|
||||
*/
|
||||
DEF_TEST(Bitmap_getColor_Swizzle, r) {
|
||||
SkBitmap source;
|
||||
source.allocN32Pixels(1,1);
|
||||
source.eraseColor(SK_ColorRED);
|
||||
SkColorType colorTypes[] = {
|
||||
kRGBA_8888_SkColorType,
|
||||
kBGRA_8888_SkColorType,
|
||||
};
|
||||
for (SkColorType ct : colorTypes) {
|
||||
SkBitmap copy;
|
||||
if (!source.copyTo(©, ct)) {
|
||||
ERRORF(r, "SkBitmap::copy failed %d", (int)ct);
|
||||
continue;
|
||||
}
|
||||
SkAutoLockPixels autoLockPixels1(copy);
|
||||
SkAutoLockPixels autoLockPixels2(source);
|
||||
REPORTER_ASSERT(r, source.getColor(0, 0) == copy.getColor(0, 0));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user