2 * This file is part of the WebKit project.
4 * Copyright (C) 2006 Apple Computer, Inc.
5 * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
6 * Copyright (C) 2007 Holger Hans Peter Freyther
7 * Copyright (C) 2007 Alp Toker <alp@atoker.com>
8 * Copyright (C) 2008, 2009 Google, Inc.
11 * This library is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Library General Public
13 * License as published by the Free Software Foundation; either
14 * version 2 of the License, or (at your option) any later version.
16 * This library is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Library General Public License for more details.
21 * You should have received a copy of the GNU Library General Public License
22 * along with this library; see the file COPYING.LIB. If not, write to
23 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24 * Boston, MA 02110-1301, USA.
28 #ifndef RenderThemeChromiumSkia_h
29 #define RenderThemeChromiumSkia_h
31 #include "core/rendering/RenderTheme.h"
37 class RenderThemeChromiumSkia : public RenderTheme {
39 RenderThemeChromiumSkia();
40 virtual ~RenderThemeChromiumSkia();
42 virtual String extraDefaultStyleSheet() OVERRIDE;
43 virtual String extraQuirksStyleSheet() OVERRIDE;
45 virtual Color platformTapHighlightColor() const OVERRIDE
47 return Color(defaultTapHighlightColor);
50 // A method asking if the theme's controls actually care about redrawing when hovered.
51 virtual bool supportsHover(const RenderStyle*) const OVERRIDE FINAL;
53 // A method asking if the theme is able to draw the focus ring.
54 virtual bool supportsFocusRing(const RenderStyle*) const OVERRIDE;
56 // The platform selection color.
57 virtual Color platformActiveSelectionBackgroundColor() const OVERRIDE;
58 virtual Color platformInactiveSelectionBackgroundColor() const OVERRIDE;
59 virtual Color platformActiveSelectionForegroundColor() const OVERRIDE;
60 virtual Color platformInactiveSelectionForegroundColor() const OVERRIDE;
61 virtual Color platformFocusRingColor() const OVERRIDE;
63 // To change the blink interval, override caretBlinkIntervalInternal instead of this one so that we may share layout test code an intercepts.
64 virtual double caretBlinkInterval() const OVERRIDE;
67 virtual void systemFont(CSSValueID, FontDescription&) const OVERRIDE;
69 virtual int minimumMenuListSize(RenderStyle*) const OVERRIDE;
71 virtual void setCheckboxSize(RenderStyle*) const OVERRIDE;
73 virtual void setRadioSize(RenderStyle*) const OVERRIDE;
75 virtual void adjustButtonStyle(RenderStyle*, Element*) const OVERRIDE;
77 virtual bool paintTextArea(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
79 virtual void adjustSearchFieldStyle(RenderStyle*, Element*) const OVERRIDE;
80 virtual bool paintSearchField(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
82 virtual void adjustSearchFieldCancelButtonStyle(RenderStyle*, Element*) const OVERRIDE;
83 virtual bool paintSearchFieldCancelButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
85 virtual void adjustSearchFieldDecorationStyle(RenderStyle*, Element*) const OVERRIDE;
87 virtual void adjustSearchFieldResultsDecorationStyle(RenderStyle*, Element*) const OVERRIDE;
88 virtual bool paintSearchFieldResultsDecoration(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
90 virtual bool paintMediaSliderTrack(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
91 virtual bool paintMediaVolumeSliderTrack(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
92 virtual void adjustSliderThumbSize(RenderStyle*, Element*) const OVERRIDE;
93 virtual bool paintMediaSliderThumb(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
94 virtual bool paintMediaToggleClosedCaptionsButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
95 virtual bool paintMediaVolumeSliderThumb(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
96 virtual bool paintMediaPlayButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
97 virtual bool paintMediaMuteButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
98 virtual String formatMediaControlsTime(float time) const OVERRIDE;
99 virtual String formatMediaControlsCurrentTime(float currentTime, float duration) const OVERRIDE;
100 virtual bool paintMediaFullscreenButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
102 // MenuList refers to an unstyled menulist (meaning a menulist without
103 // background-color or border set) and MenuListButton refers to a styled
104 // menulist (a menulist with background-color or border set). They have
105 // this distinction to support showing aqua style themes whenever they
106 // possibly can, which is something we don't want to replicate.
108 // In short, we either go down the MenuList code path or the MenuListButton
109 // codepath. We never go down both. And in both cases, they render the
111 virtual void adjustMenuListStyle(RenderStyle*, Element*) const OVERRIDE;
112 virtual void adjustMenuListButtonStyle(RenderStyle*, Element*) const OVERRIDE;
113 virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
115 virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const OVERRIDE;
116 virtual double animationDurationForProgressBar(RenderProgress*) const OVERRIDE;
118 // These methods define the padding for the MenuList's inner block.
119 virtual int popupInternalPaddingLeft(RenderStyle*) const OVERRIDE;
120 virtual int popupInternalPaddingRight(RenderStyle*) const OVERRIDE;
121 virtual int popupInternalPaddingTop(RenderStyle*) const OVERRIDE;
122 virtual int popupInternalPaddingBottom(RenderStyle*) const OVERRIDE;
124 // Provide a way to pass the default font size from the Settings object
125 // to the render theme. FIXME: http://b/1129186 A cleaner way would be
126 // to remove the default font size from this object and have callers
127 // that need the value to get it directly from the appropriate Settings
129 static void setDefaultFontSize(int);
132 virtual double caretBlinkIntervalInternal() const;
134 virtual int menuListArrowPadding() const;
136 IntRect determinateProgressValueRectFor(RenderProgress*, const IntRect&) const;
137 IntRect indeterminateProgressValueRectFor(RenderProgress*, const IntRect&) const;
138 IntRect progressValueRectFor(RenderProgress*, const IntRect&) const;
140 class DirectionFlippingScope {
142 DirectionFlippingScope(RenderObject*, const PaintInfo&, const IntRect&);
143 ~DirectionFlippingScope();
146 bool m_needsFlipping;
147 const PaintInfo& m_paintInfo;
151 virtual bool shouldShowPlaceholderWhenFocused() const OVERRIDE;
153 int menuListInternalPadding(RenderStyle*, int paddingType) const;
154 bool paintMediaButtonInternal(GraphicsContext*, const IntRect&, Image*);
155 IntRect convertToPaintingRect(RenderObject* inputRenderer, const RenderObject* partRenderer, LayoutRect partRect, const IntRect& localOffset) const;
157 static const RGBA32 defaultTapHighlightColor = 0x2e000000; // 18% black.
160 } // namespace WebCore
162 #endif // RenderThemeChromiumSkia_h