| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/native_theme/native_theme_mac.h" | 5 #include "ui/native_theme/native_theme_mac.h" |
| 6 | 6 |
| 7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/mac/mac_util.h" | 10 #include "base/mac/mac_util.h" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 // list is just populated with class methods on NSColor. | 89 // list is just populated with class methods on NSColor. |
| 90 SkColor NSSystemColorToSkColor(NSColor* color) { | 90 SkColor NSSystemColorToSkColor(NSColor* color) { |
| 91 if (base::mac::IsOSMountainLionOrEarlier()) | 91 if (base::mac::IsOSMountainLionOrEarlier()) |
| 92 return GetSystemColorUsingSwatch(color); | 92 return GetSystemColorUsingSwatch(color); |
| 93 | 93 |
| 94 // System colors use the an NSNamedColorSpace called "System", so first step | 94 // System colors use the an NSNamedColorSpace called "System", so first step |
| 95 // is to convert the color into something that can be worked with. | 95 // is to convert the color into something that can be worked with. |
| 96 NSColor* device_color = | 96 NSColor* device_color = |
| 97 [color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]]; | 97 [color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]]; |
| 98 if (device_color) | 98 if (device_color) |
| 99 return gfx::NSDeviceColorToSkColor(device_color); | 99 return skia::NSDeviceColorToSkColor(device_color); |
| 100 | 100 |
| 101 // Sometimes the conversion is not possible, but we can get an approximation | 101 // Sometimes the conversion is not possible, but we can get an approximation |
| 102 // by going through a CGColorRef. Note that simply using NSColor methods for | 102 // by going through a CGColorRef. Note that simply using NSColor methods for |
| 103 // accessing components for system colors results in exceptions like | 103 // accessing components for system colors results in exceptions like |
| 104 // "-numberOfComponents not valid for the NSColor NSNamedColorSpace System | 104 // "-numberOfComponents not valid for the NSColor NSNamedColorSpace System |
| 105 // windowBackgroundColor; need to first convert colorspace." Hence the | 105 // windowBackgroundColor; need to first convert colorspace." Hence the |
| 106 // conversion first to CGColor. | 106 // conversion first to CGColor. |
| 107 CGColorRef cg_color = [color CGColor]; | 107 CGColorRef cg_color = [color CGColor]; |
| 108 const size_t component_count = CGColorGetNumberOfComponents(cg_color); | 108 const size_t component_count = CGColorGetNumberOfComponents(cg_color); |
| 109 if (component_count == 4) | 109 if (component_count == 4) |
| 110 return gfx::CGColorRefToSkColor(cg_color); | 110 return skia::CGColorRefToSkColor(cg_color); |
| 111 | 111 |
| 112 CHECK(component_count == 1 || component_count == 2); | 112 CHECK(component_count == 1 || component_count == 2); |
| 113 // 1-2 components means a grayscale channel and maybe an alpha channel, which | 113 // 1-2 components means a grayscale channel and maybe an alpha channel, which |
| 114 // CGColorRefToSkColor will not like. But RGB is additive, so the conversion | 114 // CGColorRefToSkColor will not like. But RGB is additive, so the conversion |
| 115 // is easy (RGB to grayscale is less easy). | 115 // is easy (RGB to grayscale is less easy). |
| 116 const CGFloat* components = CGColorGetComponents(cg_color); | 116 const CGFloat* components = CGColorGetComponents(cg_color); |
| 117 CGFloat alpha = component_count == 2 ? components[1] : 1.0; | 117 CGFloat alpha = component_count == 2 ? components[1] : 1.0; |
| 118 return SkColorSetARGB(SkScalarRoundToInt(255.0 * alpha), | 118 return SkColorSetARGB(SkScalarRoundToInt(255.0 * alpha), |
| 119 SkScalarRoundToInt(255.0 * components[0]), | 119 SkScalarRoundToInt(255.0 * components[0]), |
| 120 SkScalarRoundToInt(255.0 * components[0]), | 120 SkScalarRoundToInt(255.0 * components[0]), |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 set_scrollbar_button_length(0); | 408 set_scrollbar_button_length(0); |
| 409 SetScrollbarColors(kScrollerThumbColor, | 409 SetScrollbarColors(kScrollerThumbColor, |
| 410 kScrollerThumbHoverColor, | 410 kScrollerThumbHoverColor, |
| 411 kScrollerTrackGradientColors[0]); | 411 kScrollerTrackGradientColors[0]); |
| 412 } | 412 } |
| 413 | 413 |
| 414 NativeThemeMac::~NativeThemeMac() { | 414 NativeThemeMac::~NativeThemeMac() { |
| 415 } | 415 } |
| 416 | 416 |
| 417 } // namespace ui | 417 } // namespace ui |
| OLD | NEW |