2009-12-07 Evan Martin <evan@chromium.org>
[WebKit-https.git] / WebCore / rendering / RenderThemeChromiumLinux.cpp
1 /*
2  * Copyright (C) 2007 Apple Inc.
3  * Copyright (C) 2007 Alp Toker <alp@atoker.com>
4  * Copyright (C) 2008 Collabora Ltd.
5  * Copyright (C) 2008, 2009 Google Inc.
6  * Copyright (C) 2009 Kenneth Rohde Christiansen
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public License
19  * along with this library; see the file COPYING.LIB.  If not, write to
20  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  * Boston, MA 02110-1301, USA.
22  *
23  */
24
25 #include "config.h"
26 #include "RenderThemeChromiumLinux.h"
27
28 #include "Color.h"
29 #include "CSSValueKeywords.h"
30 #include "RenderObject.h"
31 #include "UserAgentStyleSheets.h"
32
33 namespace WebCore {
34
35 unsigned RenderThemeChromiumLinux::m_thumbInactiveColor = 0;
36 unsigned RenderThemeChromiumLinux::m_thumbActiveColor = 0;
37 unsigned RenderThemeChromiumLinux::m_trackColor = 0;
38
39 PassRefPtr<RenderTheme> RenderThemeChromiumLinux::create()
40 {
41     return adoptRef(new RenderThemeChromiumLinux());
42 }
43
44 PassRefPtr<RenderTheme> RenderTheme::themeForPage(Page* page)
45 {
46     static RenderTheme* rt = RenderThemeChromiumLinux::create().releaseRef();
47     return rt;
48 }
49
50 RenderThemeChromiumLinux::RenderThemeChromiumLinux()
51 {
52     m_caretBlinkInterval = RenderTheme::caretBlinkInterval();
53 }
54
55 RenderThemeChromiumLinux::~RenderThemeChromiumLinux()
56 {
57 }
58
59 Color RenderThemeChromiumLinux::systemColor(int cssValueId) const
60 {
61     static const Color linuxButtonGrayColor(0xffdddddd);
62
63     if (cssValueId == CSSValueButtonface)
64         return linuxButtonGrayColor;
65     return RenderTheme::systemColor(cssValueId);
66 }
67
68 String RenderThemeChromiumLinux::extraDefaultStyleSheet()
69 {
70     return RenderThemeChromiumSkia::extraDefaultStyleSheet() +
71            String(themeChromiumLinuxUserAgentStyleSheet, sizeof(themeChromiumLinuxUserAgentStyleSheet));
72 }
73
74 bool RenderThemeChromiumLinux::controlSupportsTints(const RenderObject* o) const
75 {
76     return isEnabled(o);
77 }
78
79 Color RenderThemeChromiumLinux::activeListBoxSelectionBackgroundColor() const
80 {
81     return Color(0x28, 0x28, 0x28);
82 }
83
84 Color RenderThemeChromiumLinux::activeListBoxSelectionForegroundColor() const
85 {
86     return Color::black;
87 }
88
89 Color RenderThemeChromiumLinux::inactiveListBoxSelectionBackgroundColor() const
90 {
91     return Color(0xc8, 0xc8, 0xc8);
92 }
93
94 Color RenderThemeChromiumLinux::inactiveListBoxSelectionForegroundColor() const
95 {
96     return Color(0x32, 0x32, 0x32);
97 }
98
99 void RenderThemeChromiumLinux::adjustSliderThumbSize(RenderObject* o) const
100 {
101     // These sizes match the sizes in Chromium Win.
102     const int sliderThumbAlongAxis = 11;
103     const int sliderThumbAcrossAxis = 21;
104     if (o->style()->appearance() == SliderThumbHorizontalPart) {
105         o->style()->setWidth(Length(sliderThumbAlongAxis, Fixed));
106         o->style()->setHeight(Length(sliderThumbAcrossAxis, Fixed));
107     } else if (o->style()->appearance() == SliderThumbVerticalPart) {
108         o->style()->setWidth(Length(sliderThumbAcrossAxis, Fixed));
109         o->style()->setHeight(Length(sliderThumbAlongAxis, Fixed));
110     } else
111         RenderThemeChromiumSkia::adjustSliderThumbSize(o);
112 }
113
114 bool RenderThemeChromiumLinux::supportsControlTints() const
115 {
116     return true;
117 }
118
119 void RenderThemeChromiumLinux::setCaretBlinkInterval(double interval)
120 {
121     m_caretBlinkInterval = interval;
122 }
123
124 double RenderThemeChromiumLinux::caretBlinkIntervalInternal() const
125 {
126     return m_caretBlinkInterval;
127 }
128
129 void RenderThemeChromiumLinux::setScrollbarColors(
130     SkColor inactiveColor, SkColor activeColor, SkColor trackColor)
131 {
132     m_thumbInactiveColor = inactiveColor;
133     m_thumbActiveColor = activeColor;
134     m_trackColor = trackColor;
135 }
136
137 } // namespace WebCore