Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Side by Side Diff: Source/core/platform/graphics/mac/ColorMac.mm

Issue 99103006: Moving GraphicsContext and dependencies from core to platform. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Final patch - fixes Android Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc. All rights reserve d.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26 #import "config.h"
27 #import "core/platform/graphics/mac/ColorMac.h"
28
29 #import <wtf/RetainPtr.h>
30 #import <wtf/StdLibExtras.h>
31
32 namespace WebCore {
33
34 // NSColor calls don't throw, so no need to block Cocoa exceptions in this file
35
36 static bool useOldAquaFocusRingColor;
37
38 RGBA32 oldAquaFocusRingColor()
39 {
40 return 0xFF7DADD9;
41 }
42
43 void setUsesTestModeFocusRingColor(bool newValue)
44 {
45 useOldAquaFocusRingColor = newValue;
46 }
47
48 bool usesTestModeFocusRingColor()
49 {
50 return useOldAquaFocusRingColor;
51 }
52
53 static RGBA32 makeRGBAFromNSColor(NSColor *c)
54 {
55 CGFloat redComponent;
56 CGFloat greenComponent;
57 CGFloat blueComponent;
58 CGFloat alpha;
59 [c getRed:&redComponent green:&greenComponent blue:&blueComponent alpha:&alp ha];
60
61 return makeRGBA(255 * redComponent, 255 * greenComponent, 255 * blueComponen t, 255 * alpha);
62 }
63
64 Color colorFromNSColor(NSColor *c)
65 {
66 return Color(makeRGBAFromNSColor(c));
67 }
68
69 NSColor *nsColor(const Color& color)
70 {
71 RGBA32 c = color.rgb();
72 switch (c) {
73 case 0: {
74 // Need this to avoid returning nil because cachedRGBAValues will de fault to 0.
75 DEFINE_STATIC_LOCAL(RetainPtr<NSColor>, clearColor, ([NSColor colorW ithDeviceRed:0 green:0 blue:0 alpha:0]));
76 return clearColor.get();
77 }
78 case Color::black: {
79 DEFINE_STATIC_LOCAL(RetainPtr<NSColor>, blackColor, ([NSColor colorW ithDeviceRed:0 green:0 blue:0 alpha:1]));
80 return blackColor.get();
81 }
82 case Color::white: {
83 DEFINE_STATIC_LOCAL(RetainPtr<NSColor>, whiteColor, ([NSColor colorW ithDeviceRed:1 green:1 blue:1 alpha:1]));
84 return whiteColor.get();
85 }
86 default: {
87 const int cacheSize = 32;
88 static unsigned cachedRGBAValues[cacheSize];
89 static RetainPtr<NSColor>* cachedColors = new RetainPtr<NSColor>[cac heSize];
90
91 for (int i = 0; i != cacheSize; ++i) {
92 if (cachedRGBAValues[i] == c)
93 return cachedColors[i].get();
94 }
95
96 NSColor *result = [NSColor colorWithDeviceRed:static_cast<CGFloat>(c olor.red()) / 255
97 green:static_cast<CGFloat>(c olor.green()) / 255
98 blue:static_cast<CGFloat>(c olor.blue()) / 255
99 alpha:static_cast<CGFloat>(c olor.alpha()) / 255];
100
101 static int cursor;
102 cachedRGBAValues[cursor] = c;
103 cachedColors[cursor] = result;
104 if (++cursor == cacheSize)
105 cursor = 0;
106 return result;
107 }
108 }
109 }
110
111
112 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/platform/graphics/mac/ColorMac.h ('k') | Source/core/platform/graphics/mac/ComplexTextController.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698