18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright 2006, The Android Open Source Project
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  * Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  * Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef RenderThemeAndroid_h
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RenderThemeAndroid_h
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298c1b7730ddeb8d594bbbad19502ddb511d518ae4Ben Murdoch#include "PaintInfo.h"
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RenderTheme.h"
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstruct ThemeData {
350f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    ThemeData()
360f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian        : m_part(0)
370f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian        , m_state(0)
380f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    {
390f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    }
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    unsigned m_part;
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    unsigned m_state;
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderThemeAndroid : public RenderTheme {
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
473b2690e8ce3643c6dab24021df8946fde45fcfe8Andrei Popescu    static PassRefPtr<RenderTheme> create();
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ~RenderThemeAndroid();
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool stateChanged(RenderObject*, ControlState) const;
51f404d29266675808fffe9d71b065bc03b555b58dJohn Reck
520f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual bool supportsFocusRing(const RenderStyle*) const;
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // A method asking if the theme's controls actually care about redrawing when hovered.
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool supportsHover(const RenderStyle* style) const { return style->affectedByHoverRules(); }
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual int baselinePosition(const RenderObject*) const;
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual Color platformActiveSelectionBackgroundColor() const;
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual Color platformInactiveSelectionBackgroundColor() const;
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual Color platformActiveSelectionForegroundColor() const;
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual Color platformInactiveSelectionForegroundColor() const;
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual Color platformTextSearchHighlightColor() const;
63ceeeab6161d7d8bf970ecf98affa4f4966df6f01John Reck    virtual Color platformFocusRingColor() const;
64ce5633cace44e557954c70720fac3b47502a6ca5Leon Scroggins
65ce5633cace44e557954c70720fac3b47502a6ca5Leon Scroggins    virtual Color platformActiveListBoxSelectionBackgroundColor() const;
66ce5633cace44e557954c70720fac3b47502a6ca5Leon Scroggins    virtual Color platformInactiveListBoxSelectionBackgroundColor() const;
67ce5633cace44e557954c70720fac3b47502a6ca5Leon Scroggins    virtual Color platformActiveListBoxSelectionForegroundColor() const;
68ce5633cace44e557954c70720fac3b47502a6ca5Leon Scroggins    virtual Color platformInactiveListBoxSelectionForegroundColor() const;
69ce5633cace44e557954c70720fac3b47502a6ca5Leon Scroggins
7066c40fc863939bd103a5256eb48e944508725c53Victoria Lease    virtual Color platformActiveTextSearchHighlightColor() const;
7166c40fc863939bd103a5256eb48e944508725c53Victoria Lease    virtual Color platformInactiveTextSearchHighlightColor() const;
7266c40fc863939bd103a5256eb48e944508725c53Victoria Lease
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void systemFont(int, WebCore::FontDescription&) const {}
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual int minimumMenuListSize(RenderStyle*) const { return 0; }
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected:
78ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintCheckbox(RenderObject*, const PaintInfo&, const IntRect&);
790f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual void setCheckboxSize(RenderStyle*) const;
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
817f493d591dfd3492d5916ca301a4dbcd61554a06Nicolas Roard#if ENABLE(VIDEO)
827f493d591dfd3492d5916ca301a4dbcd61554a06Nicolas Roard    virtual String extraMediaControlsStyleSheet();
837f493d591dfd3492d5916ca301a4dbcd61554a06Nicolas Roard    virtual void adjustSliderThumbSize(RenderObject* o) const;
847f493d591dfd3492d5916ca301a4dbcd61554a06Nicolas Roard    virtual bool shouldRenderMediaControlPart(ControlPart part, Element* e);
85833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual bool paintMediaFullscreenButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
86833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual bool paintMediaMuteButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
87833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual bool paintMediaPlayButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
88833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual bool paintMediaSeekBackButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
89833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual bool paintMediaSeekForwardButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
90833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual bool paintMediaSliderTrack(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
91833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual bool paintMediaSliderThumb(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r);
929130a2f8733ef12edb2608a84469ddc461bed1f6Steve Block    virtual bool paintMediaControlsBackground(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect);
93833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual double mediaControlsFadeInDuration() { return 0.5; }
94833c9ceaa300f52cf2d1b12a9b3482ad417a3c21Nicolas Roard    virtual double mediaControlsFadeOutDuration() { return 0.5; }
957f493d591dfd3492d5916ca301a4dbcd61554a06Nicolas Roard#endif
967f493d591dfd3492d5916ca301a4dbcd61554a06Nicolas Roard
97ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintRadio(RenderObject*, const PaintInfo&, const IntRect&);
980f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual void setRadioSize(RenderStyle*) const;
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1000f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, WebCore::Element*) const;
101ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&);
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1030f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, WebCore::Element*) const;
104ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&);
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1060f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual void adjustTextAreaStyle(CSSStyleSelector*, RenderStyle*, WebCore::Element*) const;
107ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintTextArea(RenderObject*, const PaintInfo&, const IntRect&);
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
109ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    bool paintCombo(RenderObject*, const PaintInfo&,  const IntRect&);
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1110f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual void adjustListboxStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
1120f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual void adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
113ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&);
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1150f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    virtual void adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
116ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&);
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
119ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintSearchField(RenderObject*, const PaintInfo&, const IntRect&);
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
121ab116239e825f4571a4665cee1f3cf92fd8d304cGeorge Mount    virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
122ab116239e825f4571a4665cee1f3cf92fd8d304cGeorge Mount    virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
123ab116239e825f4571a4665cee1f3cf92fd8d304cGeorge Mount
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate:
1253b2690e8ce3643c6dab24021df8946fde45fcfe8Andrei Popescu    RenderThemeAndroid();
1260f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    void addIntrinsicMargins(RenderStyle*) const;
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void close();
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1290f03a62aac72e7a2e90983f8acc0ccd04de69289Feng Qian    bool supportsFocus(ControlPart);
1303b2690e8ce3643c6dab24021df8946fde45fcfe8Andrei Popescu    friend RenderTheme* theme();
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // RenderThemeAndroid_h
136