• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This file is part of the WebKit project.
3  *
4  * Copyright (C) 2006 Apple Computer, Inc.
5  * Copyright (C) 2008, 2009 Google, Inc.
6  *
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.
11  *
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.
16  *
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.
21  *
22  */
23 
24 #ifndef RenderThemeChromiumWin_h
25 #define RenderThemeChromiumWin_h
26 
27 #include "core/rendering/RenderThemeChromiumSkia.h"
28 
29 #if WIN32
30 typedef void* HANDLE;
31 typedef struct HINSTANCE__* HINSTANCE;
32 typedef HINSTANCE HMODULE;
33 #endif
34 
35 namespace WebCore {
36 
37 struct ThemeData {
ThemeDataThemeData38     ThemeData() : m_part(0), m_state(0), m_classicState(0) { }
39 
40     unsigned m_part;
41     unsigned m_state;
42     unsigned m_classicState;
43 };
44 
45 class RenderThemeChromiumWin : public RenderThemeChromiumSkia {
46 public:
47     static PassRefPtr<RenderTheme> create();
48 
49     // A method asking if the theme is able to draw the focus ring.
50     virtual bool supportsFocusRing(const RenderStyle*) const OVERRIDE;
51 
52     // The platform selection color.
53     virtual Color platformActiveSelectionBackgroundColor() const OVERRIDE;
54     virtual Color platformInactiveSelectionBackgroundColor() const OVERRIDE;
55     virtual Color platformActiveSelectionForegroundColor() const OVERRIDE;
56     virtual Color platformInactiveSelectionForegroundColor() const OVERRIDE;
57     virtual Color platformActiveTextSearchHighlightColor() const OVERRIDE;
58     virtual Color platformInactiveTextSearchHighlightColor() const OVERRIDE;
59 
60     virtual Color systemColor(CSSValueID) const OVERRIDE;
61 
62     virtual IntSize sliderTickSize() const OVERRIDE;
63     virtual int sliderTickOffsetFromTrackCenter() const OVERRIDE;
64     virtual void adjustSliderThumbSize(RenderStyle*, Element*) const OVERRIDE;
65 
66     // Various paint functions.
67     virtual bool paintCheckbox(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
68     virtual bool paintRadio(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
69     virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
70     virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
71     virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
72     virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
73 
74     // MenuList refers to an unstyled menulist (meaning a menulist without
75     // background-color or border set) and MenuListButton refers to a styled
76     // menulist (a menulist with background-color or border set).
77     virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
78     virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
79 
80     virtual void adjustInnerSpinButtonStyle(RenderStyle*, Element*) const OVERRIDE;
81     virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
82 
83     virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const OVERRIDE;
84     virtual double animationDurationForProgressBar(RenderProgress*) const OVERRIDE;
85     virtual bool paintProgressBar(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE;
86 
87     virtual bool shouldOpenPickerWithF4Key() const OVERRIDE;
88 
89 protected:
90     virtual double caretBlinkIntervalInternal() const OVERRIDE;
91     virtual bool shouldUseFallbackTheme(RenderStyle*) const OVERRIDE;
92 
93 private:
94     enum ControlSubPart {
95         None,
96         SpinButtonDown,
97         SpinButtonUp,
98     };
99 
RenderThemeChromiumWin()100     RenderThemeChromiumWin() { }
~RenderThemeChromiumWin()101     virtual ~RenderThemeChromiumWin() { }
102 
103     unsigned determineState(RenderObject*, ControlSubPart = None);
104     unsigned determineSliderThumbState(RenderObject*);
105     unsigned determineClassicState(RenderObject*, ControlSubPart = None);
106 
107     ThemeData getThemeData(RenderObject*, ControlSubPart = None);
108 
109     bool paintTextFieldInternal(RenderObject*, const PaintInfo&, const IntRect&, bool);
110 };
111 
112 } // namespace WebCore
113 
114 #endif
115