RenderThemeAndroid.h revision ceeeab6161d7d8bf970ecf98affa4f4966df6f01
1cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner/*
2cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * Copyright 2006, The Android Open Source Project
3cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner *
4cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * Redistribution and use in source and binary forms, with or without
5cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * modification, are permitted provided that the following conditions
6cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * are met:
7cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner *  * Redistributions of source code must retain the above copyright
8cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner *    notice, this list of conditions and the following disclaimer.
9cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner *  * Redistributions in binary form must reproduce the above copyright
10cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner *    notice, this list of conditions and the following disclaimer in the
11cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner *    documentation and/or other materials provided with the distribution.
12cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner *
13cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15305c613af6cfc40e519c75d9d2c84c6fa9a841c0Ted Kremenek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
1799bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
212b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2399bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
241eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump */
25cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner
266e2901407bff59aeb4cc301cc58b034723d0eb49Chris Lattner#ifndef RenderThemeAndroid_h
276e2901407bff59aeb4cc301cc58b034723d0eb49Chris Lattner#define RenderThemeAndroid_h
281eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
29cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner#include "PaintInfo.h"
30cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner#include "RenderTheme.h"
31cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner
32cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattnernamespace WebCore {
33cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner
34cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattnerstruct ThemeData {
35cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner    ThemeData()
3699bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner        : m_part(0)
37c4bf2b9afb7d47445a9dc6bc848657098a4e3851Abramo Bagnara        , m_state(0)
3899bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    {
3999bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    }
40c4bf2b9afb7d47445a9dc6bc848657098a4e3851Abramo Bagnara
4199bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    unsigned m_part;
4299bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    unsigned m_state;
431eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump};
44cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner
45cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattnerclass RenderThemeAndroid : public RenderTheme {
46cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattnerpublic:
4799bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    static PassRefPtr<RenderTheme> create();
4899bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    ~RenderThemeAndroid();
4999bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner
5099bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool stateChanged(RenderObject*, ControlState) const;
5199bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner
5299bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool supportsFocusRing(const RenderStyle*) const;
5399bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    // A method asking if the theme's controls actually care about redrawing when hovered.
5499bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool supportsHover(const RenderStyle* style) const { return style->affectedByHoverRules(); }
5599bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner
5699bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual int baselinePosition(const RenderObject*) const;
571eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
5899bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual Color platformActiveSelectionBackgroundColor() const;
5999bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual Color platformInactiveSelectionBackgroundColor() const;
601eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    virtual Color platformActiveSelectionForegroundColor() const;
6199bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual Color platformInactiveSelectionForegroundColor() const;
6299bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual Color platformTextSearchHighlightColor() const;
6399bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual Color platformFocusRingColor() const;
64cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner
65cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner    virtual Color platformActiveListBoxSelectionBackgroundColor() const;
6699bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual Color platformInactiveListBoxSelectionBackgroundColor() const;
67cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner    virtual Color platformActiveListBoxSelectionForegroundColor() const;
68cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner    virtual Color platformInactiveListBoxSelectionForegroundColor() const;
691eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
7099bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual void systemFont(int, WebCore::FontDescription&) const {}
71cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner
721eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    virtual int minimumMenuListSize(RenderStyle*) const { return 0; }
73cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner
74cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattnerprotected:
75cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner    virtual bool paintCheckbox(RenderObject*, const PaintInfo&, const IntRect&);
76b7ec67a43d0b5408d6a97e92240207b5a2374456Jakob Stoklund Olesen    virtual void setCheckboxSize(RenderStyle*) const;
7799bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner
78cff9cc95de367a3aea885a7f8fee304fe2707b92Chris Lattner#if ENABLE(VIDEO)
791eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    virtual String extraMediaControlsStyleSheet();
8099bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual void adjustSliderThumbSize(RenderObject* o) const;
8199bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool shouldRenderMediaControlPart(ControlPart part, Element* e);
8247246be8ac5b0ddde6c402b8fc6946b6135487b5Chris Lattner    virtual bool paintMediaFullscreenButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
8399bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool paintMediaMuteButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
841eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump    virtual bool paintMediaPlayButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
8599bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool paintMediaSeekBackButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
8699bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool paintMediaSeekForwardButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
8799bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool paintMediaSliderTrack(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
8899bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool paintMediaSliderThumb(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
8947246be8ac5b0ddde6c402b8fc6946b6135487b5Chris Lattner    virtual bool paintMediaControlsBackground(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect);
9047246be8ac5b0ddde6c402b8fc6946b6135487b5Chris Lattner    virtual double mediaControlsFadeInDuration() { return 0.5; }
9199bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual double mediaControlsFadeOutDuration() { return 0.5; }
921eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#endif
9399bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner
9499bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool paintRadio(RenderObject*, const PaintInfo&, const IntRect&);
9599bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual void setRadioSize(RenderStyle*) const;
9699bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner
9799bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, WebCore::Element*) const;
9899bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner    virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&);
9999bd46c018ece10d6541a4b6bf0dbe97ad162477Chris Lattner
100    virtual void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, WebCore::Element*) const;
101    virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&);
102
103    virtual void adjustTextAreaStyle(CSSStyleSelector*, RenderStyle*, WebCore::Element*) const;
104    virtual bool paintTextArea(RenderObject*, const PaintInfo&, const IntRect&);
105
106    bool paintCombo(RenderObject*, const PaintInfo&,  const IntRect&);
107
108    virtual void adjustListboxStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
109    virtual void adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
110    virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&);
111
112    virtual void adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
113    virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&);
114
115    virtual void adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
116    virtual bool paintSearchField(RenderObject*, const PaintInfo&, const IntRect&);
117
118private:
119    RenderThemeAndroid();
120    void addIntrinsicMargins(RenderStyle*) const;
121    void close();
122
123    bool supportsFocus(ControlPart);
124    friend RenderTheme* theme();
125};
126
127} // namespace WebCore
128
129#endif // RenderThemeAndroid_h
130