9048ce38e2bcc185f23a7c3934938234e81c379a
[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 PassRefPtr<RenderTheme> RenderThemeChromiumLinux::create()
36 {
37     return adoptRef(new RenderThemeChromiumLinux());
38 }
39
40 PassRefPtr<RenderTheme> RenderTheme::themeForPage(Page* page)
41 {
42     static RenderTheme* rt = RenderThemeChromiumLinux::create().releaseRef();
43     return rt;
44 }
45
46 RenderThemeChromiumLinux::RenderThemeChromiumLinux()
47 {
48     m_caretBlinkInterval = RenderTheme::caretBlinkInterval();
49 }
50
51 RenderThemeChromiumLinux::~RenderThemeChromiumLinux()
52 {
53 }
54
55 Color RenderThemeChromiumLinux::systemColor(int cssValueId) const
56 {
57     static const Color linuxButtonGrayColor(0xffdddddd);
58
59     if (cssValueId == CSSValueButtonface)
60         return linuxButtonGrayColor;
61     return RenderTheme::systemColor(cssValueId);
62 }
63
64 String RenderThemeChromiumLinux::extraDefaultStyleSheet()
65 {
66     return RenderThemeChromiumSkia::extraDefaultStyleSheet() +
67            String(themeChromiumLinuxUserAgentStyleSheet, sizeof(themeChromiumLinuxUserAgentStyleSheet));
68 }
69
70 bool RenderThemeChromiumLinux::controlSupportsTints(const RenderObject* o) const
71 {
72     return isEnabled(o);
73 }
74
75 Color RenderThemeChromiumLinux::activeListBoxSelectionBackgroundColor() const
76 {
77     return Color(0x28, 0x28, 0x28);
78 }
79
80 Color RenderThemeChromiumLinux::activeListBoxSelectionForegroundColor() const
81 {
82     return Color::black;
83 }
84
85 Color RenderThemeChromiumLinux::inactiveListBoxSelectionBackgroundColor() const
86 {
87     return Color(0xc8, 0xc8, 0xc8);
88 }
89
90 Color RenderThemeChromiumLinux::inactiveListBoxSelectionForegroundColor() const
91 {
92     return Color(0x32, 0x32, 0x32);
93 }
94
95 void RenderThemeChromiumLinux::adjustSliderThumbSize(RenderObject* o) const
96 {
97     // These sizes match the sizes in Chromium Win.
98     const int sliderThumbAlongAxis = 11;
99     const int sliderThumbAcrossAxis = 21;
100     if (o->style()->appearance() == SliderThumbHorizontalPart) {
101         o->style()->setWidth(Length(sliderThumbAlongAxis, Fixed));
102         o->style()->setHeight(Length(sliderThumbAcrossAxis, Fixed));
103     } else if (o->style()->appearance() == SliderThumbVerticalPart) {
104         o->style()->setWidth(Length(sliderThumbAcrossAxis, Fixed));
105         o->style()->setHeight(Length(sliderThumbAlongAxis, Fixed));
106     } else
107         RenderThemeChromiumSkia::adjustSliderThumbSize(o);
108 }
109
110 bool RenderThemeChromiumLinux::supportsControlTints() const
111 {
112     return true;
113 }
114
115 void RenderThemeChromiumLinux::setCaretBlinkInterval(double interval)
116 {
117     m_caretBlinkInterval = interval;
118 }
119
120 double RenderThemeChromiumLinux::caretBlinkIntervalInternal() const
121 {
122     return m_caretBlinkInterval;
123 }
124
125 } // namespace WebCore