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