2 * This file is part of the WebKit project.
4 * Copyright (C) 2006 Apple Computer, Inc.
5 * Copyright (C) 2008, 2009 Google, Inc.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
24 #ifndef RenderThemeChromiumWin_h
25 #define RenderThemeChromiumWin_h
27 #include "RenderThemeChromiumSkia.h"
31 typedef struct HINSTANCE__* HINSTANCE;
32 typedef HINSTANCE HMODULE;
38 ThemeData() : m_part(0), m_state(0), m_classicState(0) {}
42 unsigned m_classicState;
45 class RenderThemeChromiumWin : public RenderThemeChromiumSkia {
47 static PassRefPtr<RenderTheme> create();
49 // A method asking if the theme is able to draw the focus ring.
50 virtual bool supportsFocusRing(const RenderStyle*) const;
52 // The platform selection color.
53 virtual Color platformActiveSelectionBackgroundColor() const;
54 virtual Color platformInactiveSelectionBackgroundColor() const;
55 virtual Color platformActiveSelectionForegroundColor() const;
56 virtual Color platformInactiveSelectionForegroundColor() const;
57 virtual Color platformActiveTextSearchHighlightColor() const;
58 virtual Color platformInactiveTextSearchHighlightColor() const;
61 virtual void systemFont(int propId, FontDescription&) const;
62 virtual Color systemColor(int cssValueId) const;
64 #if ENABLE(DATALIST_ELEMENT)
65 virtual IntSize sliderTickSize() const OVERRIDE;
66 virtual int sliderTickOffsetFromTrackCenter() const OVERRIDE;
68 virtual void adjustSliderThumbSize(RenderStyle*, Element*) const;
70 // Various paint functions.
71 virtual bool paintCheckbox(RenderObject*, const PaintInfo&, const IntRect&);
72 virtual bool paintRadio(RenderObject*, const PaintInfo&, const IntRect&);
73 virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&);
74 virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&);
75 virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
76 virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
78 // MenuList refers to an unstyled menulist (meaning a menulist without
79 // background-color or border set) and MenuListButton refers to a styled
80 // menulist (a menulist with background-color or border set). They have
81 // this distinction to support showing aqua style themes whenever they
82 // possibly can, which is something we don't want to replicate.
84 // In short, we either go down the MenuList code path or the MenuListButton
85 // codepath. We never go down both. And in both cases, they render the
87 virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&);
89 // Override RenderThemeChromiumSkia's setDefaultFontSize method to also reset the local font property caches.
90 // See comment in RenderThemeChromiumSkia::setDefaultFontSize() regarding ugliness of this hack.
91 static void setDefaultFontSize(int);
93 virtual void adjustInnerSpinButtonStyle(StyleResolver*, RenderStyle*, Element*) const;
94 virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&);
96 #if ENABLE(PROGRESS_ELEMENT)
97 virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const;
98 virtual double animationDurationForProgressBar(RenderProgress*) const;
99 virtual void adjustProgressBarStyle(StyleResolver*, RenderStyle*, Element*) const;
100 virtual bool paintProgressBar(RenderObject*, const PaintInfo&, const IntRect&);
104 virtual double caretBlinkIntervalInternal() const;
107 enum ControlSubPart {
113 RenderThemeChromiumWin() { }
114 virtual ~RenderThemeChromiumWin() { }
116 unsigned determineState(RenderObject*, ControlSubPart = None);
117 unsigned determineSliderThumbState(RenderObject*);
118 unsigned determineClassicState(RenderObject*, ControlSubPart = None);
120 ThemeData getThemeData(RenderObject*, ControlSubPart = None);
122 bool paintTextFieldInternal(RenderObject*, const PaintInfo&, const IntRect&, bool);
125 } // namespace WebCore