diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2018-03-06 00:32:12 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2018-03-07 17:31:01 -0800 |
commit | 6c0599b536cb3f2e6e583b3e33fc6bcc547cda37 (patch) | |
tree | 432d9c801f688d1b8b0e3b6aa76454256952af76 /platform/macos/src/NSColor+MGLAdditions.mm | |
parent | 12664cd4c42b20e513146ddab1f17d8c3da0a6e7 (diff) | |
download | qtlocation-mapboxgl-6c0599b536cb3f2e6e583b3e33fc6bcc547cda37.tar.gz |
[macos] Assume sRGB for mbgl expressions, CSS in attribution
Assume mbgl needs colors in the sRGB color space rather than the calibrated RGB color space. Fixed link colors when creating attribution from HTML.
Diffstat (limited to 'platform/macos/src/NSColor+MGLAdditions.mm')
-rw-r--r-- | platform/macos/src/NSColor+MGLAdditions.mm | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/platform/macos/src/NSColor+MGLAdditions.mm b/platform/macos/src/NSColor+MGLAdditions.mm index 5288f2bc61..f44cb8d434 100644 --- a/platform/macos/src/NSColor+MGLAdditions.mm +++ b/platform/macos/src/NSColor+MGLAdditions.mm @@ -2,22 +2,32 @@ @implementation NSColor (MGLAdditions) -- (mbgl::Color)mgl_color -{ +- (mbgl::Color)mgl_color { CGFloat r, g, b, a; - [[self colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&r green:&g blue:&b alpha:&a]; + // The Mapbox Style Specification does not specify a color space, but it is + // assumed to be sRGB for consistency with CSS. + NSColor *srgbColor = self; + if ([NSColor redColor].colorSpaceName == NSCalibratedRGBColorSpace) { + srgbColor = [srgbColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; + } else { + srgbColor = [srgbColor colorUsingColorSpace:[NSColorSpace sRGBColorSpace]]; + } + [srgbColor getRed:&r green:&g blue:&b alpha:&a]; return { (float)r, (float)g, (float)b, (float)a }; } -+ (NSColor *)mgl_colorWithColor:(mbgl::Color)color -{ - return [NSColor colorWithCalibratedRed:color.r green:color.g blue:color.b alpha:color.a]; ++ (NSColor *)mgl_colorWithColor:(mbgl::Color)color { + // macOS 10.12 Sierra and below uses calibrated RGB by default. + if ([NSColor redColor].colorSpaceName == NSCalibratedRGBColorSpace) { + return [NSColor colorWithCalibratedRed:color.r green:color.g blue:color.b alpha:color.a]; + } else { + return [NSColor colorWithRed:color.r green:color.g blue:color.b alpha:color.a]; + } } -- (mbgl::style::PropertyValue<mbgl::Color>)mgl_colorPropertyValue -{ +- (mbgl::style::PropertyValue<mbgl::Color>)mgl_colorPropertyValue { mbgl::Color color = self.mgl_color; return {{ color.r, color.g, color.b, color.a }}; } |