From 837e42e07d52333bd790f81df3c2f5600b115faa Mon Sep 17 00:00:00 2001 From: Nadia Barbosa Date: Thu, 11 Apr 2019 17:00:10 -0700 Subject: [ios, macos] Premultiply color values for mgl_color Fixes https://github.com/mapbox/mapbox-gl-native/issues/14329 --- platform/ios/src/UIColor+MGLAdditions.mm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'platform/ios/src/UIColor+MGLAdditions.mm') diff --git a/platform/ios/src/UIColor+MGLAdditions.mm b/platform/ios/src/UIColor+MGLAdditions.mm index 7c1fbddc20..5a4b5cf06e 100644 --- a/platform/ios/src/UIColor+MGLAdditions.mm +++ b/platform/ios/src/UIColor+MGLAdditions.mm @@ -6,7 +6,8 @@ { CGFloat r, g, b, a; [self getRed:&r green:&g blue:&b alpha:&a]; - return { (float)r, (float)g, (float)b, (float)a }; + // Premultiply color components + return { static_cast(r*a), static_cast(g*a), static_cast(b*a), static_cast(a) }; } - (mbgl::style::PropertyValue)mgl_colorPropertyValue @@ -17,7 +18,13 @@ + (UIColor *)mgl_colorWithColor:(mbgl::Color)color { - return [UIColor colorWithRed:color.r green:color.g blue:color.b alpha:color.a]; + // Since CIColor expects color values to be non-multiplied, we transform them here + // to non-premultiplied values + float red = static_cast((color.r / color.a)); + float green = static_cast((color.g / color.a)); + float blue = static_cast((color.b / color.a)); + + return [UIColor colorWithRed:red green:green blue:blue alpha:color.a]; } @end -- cgit v1.2.1