summaryrefslogtreecommitdiff
path: root/platform/ios/src/UIColor+MGLAdditions.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/src/UIColor+MGLAdditions.mm')
-rw-r--r--platform/ios/src/UIColor+MGLAdditions.mm11
1 files changed, 9 insertions, 2 deletions
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<float>(r*a), static_cast<float>(g*a), static_cast<float>(b*a), static_cast<float>(a) };
}
- (mbgl::style::PropertyValue<mbgl::Color>)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<float>((color.r / color.a));
+ float green = static_cast<float>((color.g / color.a));
+ float blue = static_cast<float>((color.b / color.a));
+
+ return [UIColor colorWithRed:red green:green blue:blue alpha:color.a];
}
@end