dc9ce0bec540867d6562f1b3e2f0a59e56a61623
[WebKit-https.git] / WebCore / platform / qt / RenderThemeQt.h
1 /*
2  * This file is part of the theme implementation for form controls in WebCore.
3  *
4  * Copyright (C) 2007 Trolltech
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB.  If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA 02110-1301, USA.
20  *
21  */
22 #ifndef RenderThemeQt_H
23 #define RenderThemeQt_H
24
25 #include "RenderTheme.h"
26
27 QT_BEGIN_NAMESPACE
28 class QStyle;
29 class QPainter;
30 class QWidget;
31 class QStyleOption;
32 QT_END_NAMESPACE
33
34 namespace WebCore {
35
36 class RenderStyle;
37
38 class RenderThemeQt : public RenderTheme
39 {
40 public:
41     RenderThemeQt();
42
43     virtual bool supportsHover(const RenderStyle*) const;
44     virtual bool supportsFocusRing(const RenderStyle* style) const;
45
46     virtual short baselinePosition(const RenderObject* o) const;
47
48     // A method asking if the control changes its tint when the window has focus or not.
49     virtual bool controlSupportsTints(const RenderObject*) const;
50
51     // A general method asking if any control tinting is supported at all.
52     virtual bool supportsControlTints() const;
53
54     virtual void adjustRepaintRect(const RenderObject* o, IntRect& r);
55
56     virtual bool isControlStyled(const RenderStyle*, const BorderData&,
57                                  const BackgroundLayer&, const Color&) const;
58
59     // The platform selection color.
60     virtual Color platformActiveSelectionBackgroundColor() const;
61     virtual Color platformInactiveSelectionBackgroundColor() const;
62     virtual Color platformActiveSelectionForegroundColor() const;
63     virtual Color platformInactiveSelectionForegroundColor() const;
64
65     virtual void systemFont(int propId, FontDescription&) const;
66
67     virtual int minimumMenuListSize(RenderStyle*) const;
68
69     virtual void adjustSliderThumbSize(RenderObject*) const;
70
71 protected:
72     virtual bool paintCheckbox(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
73     virtual void setCheckboxSize(RenderStyle*) const;
74
75     virtual bool paintRadio(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
76     virtual void setRadioSize(RenderStyle*) const;
77
78     virtual void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
79     virtual bool paintButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
80     virtual void setButtonSize(RenderStyle*) const;
81
82     virtual bool paintTextField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
83     virtual void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
84
85     virtual bool paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
86     virtual void adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
87
88     virtual bool paintMenuListButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
89     virtual void adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
90
91     virtual bool paintSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
92     virtual bool paintSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
93
94     virtual bool paintSearchField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
95     virtual void adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
96
97     virtual void adjustSearchFieldCancelButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
98     virtual bool paintSearchFieldCancelButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
99
100     virtual void adjustSearchFieldDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
101     virtual bool paintSearchFieldDecoration(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
102
103     virtual void adjustSearchFieldResultsDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
104     virtual bool paintSearchFieldResultsDecoration(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
105 private:
106     bool supportsFocus(EAppearance) const;
107
108     bool getStylePainterAndWidgetFromPaintInfo(const RenderObject::PaintInfo&, QStyle*&, QPainter*&, QWidget*&) const;
109     EAppearance applyTheme(QStyleOption&, RenderObject*) const;
110
111     void setSizeFromFont(RenderStyle*) const;
112     IntSize sizeForFont(RenderStyle*) const;
113     void setButtonPadding(RenderStyle*) const;
114     void setPopupPadding(RenderStyle*) const;
115     void setPrimitiveSize(RenderStyle*) const;
116 };
117
118 }
119
120 #endif