Customize ns-use-srgb-colorspace on OSX >= 10.7 to use sRGB.
* etc/NEWS: Mention ns-use-srgb-colorspace. * lisp/cus-start.el (all): Add ns-use-srgb-colorspace. * src/nsfns.m (Fxw_color_values): Use colorUsingDefaultColorSpace. * src/nsterm.h: Declare EmacsColor category. * src/nsterm.m (NSColor): Implement EmacsColor category. (ns_get_color): Use colorUsingDefaultColorSpace. (ns_get_color, ns_term_init): Use colorForEmacsRed.
This commit is contained in:
parent
aac2b673c3
commit
41cf3d118e
7 changed files with 79 additions and 11 deletions
|
@ -1,3 +1,7 @@
|
|||
2013-12-21 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* NEWS: Mention ns-use-srgb-colorspace.
|
||||
|
||||
2013-12-21 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* themes/tango-dark-theme.el: Minor color tweak.
|
||||
|
|
4
etc/NEWS
4
etc/NEWS
|
@ -1174,6 +1174,10 @@ Both native (>= OSX 10.7) and "old style" fullscreen are supported.
|
|||
Customize `ns-use-native-fullscreen' to change style. For >= 10.7
|
||||
native is the default.
|
||||
|
||||
** OSX >= 10.7 can use sRGB colorspace.
|
||||
Customize `ns-use-srgb-colorspace' to change style. nil is the default.
|
||||
Note: This does not apply to images.
|
||||
|
||||
|
||||
* Installation Changes in Emacs 24.3
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2013-12-21 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* cus-start.el (all): Add ns-use-srgb-colorspace.
|
||||
|
||||
2013-12-21 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* custom.el (custom-theme-recalc-face): Do nothing if the face is
|
||||
|
|
|
@ -402,6 +402,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
|
|||
(ns-antialias-text ns boolean "23.1")
|
||||
(ns-auto-hide-menu-bar ns boolean "24.0")
|
||||
(ns-use-native-fullscreen ns boolean "24.4")
|
||||
(ns-use-srgb-colorspace ns boolean "24.4")
|
||||
;; process.c
|
||||
(delete-exited-processes processes-basics boolean)
|
||||
;; syntax.c
|
||||
|
|
|
@ -2289,7 +2289,7 @@ and GNUstep implementations ("distributor-specific release
|
|||
if (ns_lisp_to_color (color, &col))
|
||||
return Qnil;
|
||||
|
||||
[[col colorUsingColorSpaceName: NSCalibratedRGBColorSpace]
|
||||
[[col colorUsingDefaultColorSpace]
|
||||
getRed: &red green: &green blue: &blue alpha: &alpha];
|
||||
return list3i (lrint (red * 65280), lrint (green * 65280),
|
||||
lrint (blue * 65280));
|
||||
|
|
12
src/nsterm.h
12
src/nsterm.h
|
@ -76,6 +76,18 @@ typedef CGFloat EmacsCGFloat;
|
|||
typedef float EmacsCGFloat;
|
||||
#endif
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
NSColor, EmacsColor category.
|
||||
|
||||
========================================================================== */
|
||||
@interface NSColor (EmacsColor)
|
||||
+ (NSColor *)colorForEmacsRed:(CGFloat)red green:(CGFloat)green
|
||||
blue:(CGFloat)blue alpha:(CGFloat)alpha;
|
||||
- (NSColor *)colorUsingDefaultColorSpace;
|
||||
|
||||
@end
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
The Emacs application
|
||||
|
|
63
src/nsterm.m
63
src/nsterm.m
|
@ -103,6 +103,43 @@ Updated by Christian Limpach (chris@nice.ch)
|
|||
|
||||
extern NSString *NSMenuDidBeginTrackingNotification;
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
NSColor, EmacsColor category.
|
||||
|
||||
========================================================================== */
|
||||
@implementation NSColor (EmacsColor)
|
||||
+ (NSColor *)colorForEmacsRed:(CGFloat)red green:(CGFloat)green
|
||||
blue:(CGFloat)blue alpha:(CGFloat)alpha
|
||||
{
|
||||
#ifdef NS_IMPL_COCOA
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
|
||||
if (ns_use_srgb_colorspace)
|
||||
return [NSColor colorWithSRGBRed: red
|
||||
green: green
|
||||
blue: blue
|
||||
alpha: alpha];
|
||||
#endif
|
||||
#endif
|
||||
return [NSColor colorWithCalibratedRed: red
|
||||
green: green
|
||||
blue: blue
|
||||
alpha: alpha];
|
||||
}
|
||||
|
||||
- (NSColor *)colorUsingDefaultColorSpace
|
||||
{
|
||||
#ifdef NS_IMPL_COCOA
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
|
||||
if (ns_use_srgb_colorspace)
|
||||
return [self colorUsingColorSpace: [NSColorSpace sRGBColorSpace]];
|
||||
#endif
|
||||
#endif
|
||||
return [self colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
/* ==========================================================================
|
||||
|
||||
Local declarations
|
||||
|
@ -1509,7 +1546,7 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
#endif
|
||||
if ((new = [NSColor selectedTextBackgroundColor]) != nil)
|
||||
{
|
||||
*col = [new colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
|
||||
*col = [new colorUsingDefaultColorSpace];
|
||||
unblock_input ();
|
||||
return 0;
|
||||
}
|
||||
|
@ -1525,7 +1562,7 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
*/
|
||||
if ((new = [NSColor selectedTextColor]) != nil)
|
||||
{
|
||||
*col = [new colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
|
||||
*col = [new colorUsingDefaultColorSpace];
|
||||
unblock_input ();
|
||||
return 0;
|
||||
}
|
||||
|
@ -1572,7 +1609,7 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
|
||||
if (r >= 0.0F)
|
||||
{
|
||||
*col = [NSColor colorWithCalibratedRed: r green: g blue: b alpha: 1.0];
|
||||
*col = [NSColor colorForEmacsRed: r green: g blue: b alpha: 1.0];
|
||||
unblock_input ();
|
||||
return 0;
|
||||
}
|
||||
|
@ -1604,7 +1641,7 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
}
|
||||
|
||||
if (new)
|
||||
*col = [new colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
|
||||
*col = [new colorUsingDefaultColorSpace];
|
||||
unblock_input ();
|
||||
return new ? 0 : 1;
|
||||
}
|
||||
|
@ -1645,9 +1682,9 @@ Free a pool and temporary objects it refers to (callable from C)
|
|||
return build_string ((char *)str);
|
||||
}
|
||||
|
||||
[[col colorUsingColorSpaceName: NSCalibratedRGBColorSpace]
|
||||
[[col colorUsingDefaultColorSpace]
|
||||
getRed: &red green: &green blue: &blue alpha: &alpha];
|
||||
if (red ==green && red ==blue)
|
||||
if (red == green && red == blue)
|
||||
{
|
||||
[[col colorUsingColorSpaceName: NSCalibratedWhiteColorSpace]
|
||||
getWhite: &gray alpha: &alpha];
|
||||
|
@ -4273,10 +4310,10 @@ Needs to be here because ns_initialize_display_info () uses AppKit classes.
|
|||
name = SSDATA (XCAR (color));
|
||||
c = XINT (XCDR (color));
|
||||
[cl setColor:
|
||||
[NSColor colorWithCalibratedRed: RED_FROM_ULONG (c) / 255.0
|
||||
green: GREEN_FROM_ULONG (c) / 255.0
|
||||
blue: BLUE_FROM_ULONG (c) / 255.0
|
||||
alpha: 1.0]
|
||||
[NSColor colorForEmacsRed: RED_FROM_ULONG (c) / 255.0
|
||||
green: GREEN_FROM_ULONG (c) / 255.0
|
||||
blue: BLUE_FROM_ULONG (c) / 255.0
|
||||
alpha: 1.0]
|
||||
forKey: [NSString stringWithUTF8String: name]];
|
||||
}
|
||||
[cl writeToFile: nil];
|
||||
|
@ -7607,6 +7644,12 @@ Nil means use fullscreen the old (< 10.7) way. The old way works better with
|
|||
#endif
|
||||
ns_last_use_native_fullscreen = ns_use_native_fullscreen;
|
||||
|
||||
DEFVAR_BOOL ("ns-use-srgb-colorspace", ns_use_srgb_colorspace,
|
||||
doc: /*Non-nil means to use sRGB colorspace on OSX >= 10.7.
|
||||
Note that this does not apply to images.
|
||||
This variable is ignored on OSX < 10.7 and GNUStep. Default is nil. */);
|
||||
ns_use_srgb_colorspace = NO;
|
||||
|
||||
/* TODO: move to common code */
|
||||
DEFVAR_LISP ("x-toolkit-scroll-bars", Vx_toolkit_scroll_bars,
|
||||
doc: /* Which toolkit scroll bars Emacs uses, if any.
|
||||
|
|
Loading…
Add table
Reference in a new issue