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 "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 { 38 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; 51 52 // The platform selection color. 53 virtual Color platformActiveSelectionBackgroundColor() const; 54 virtual Color platformInactiveSelectionBackgroundColor() const; 55 virtual Color platformActiveSelectionForegroundColor() const; 56 virtual Color platformInactiveSelectionForegroundColor() const; 57 virtual Color platformActiveTextSearchHighlightColor() const; 58 virtual Color platformInactiveTextSearchHighlightColor() const; 59 60 // System fonts. 61 virtual void systemFont(int propId, FontDescription&) const; 62 virtual Color systemColor(int cssValueId) const; 63 64 virtual void adjustSliderThumbSize(RenderObject*) const; 65 66 // Various paint functions. 67 virtual bool paintCheckbox(RenderObject*, const PaintInfo&, const IntRect&); 68 virtual bool paintRadio(RenderObject*, const PaintInfo&, const IntRect&); 69 virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&); 70 virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&); 71 virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&); 72 virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&); 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). They have 77 // this distinction to support showing aqua style themes whenever they 78 // possibly can, which is something we don't want to replicate. 79 // 80 // In short, we either go down the MenuList code path or the MenuListButton 81 // codepath. We never go down both. And in both cases, they render the 82 // entire menulist. 83 virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&); 84 85 // Override RenderThemeChromiumSkia's setDefaultFontSize method to also reset the local font property caches. 86 // See comment in RenderThemeChromiumSkia::setDefaultFontSize() regarding ugliness of this hack. 87 static void setDefaultFontSize(int); 88 89 virtual void adjustInnerSpinButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 90 virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&); 91 92 #if ENABLE(PROGRESS_TAG) 93 virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const; 94 virtual double animationDurationForProgressBar(RenderProgress*) const; 95 virtual void adjustProgressBarStyle(CSSStyleSelector*, RenderStyle*, Element*) const; 96 virtual bool paintProgressBar(RenderObject*, const PaintInfo&, const IntRect&); 97 #endif 98 99 protected: 100 virtual double caretBlinkIntervalInternal() const; 101 102 private: 103 enum ControlSubPart { 104 None, 105 SpinButtonDown, 106 SpinButtonUp, 107 }; 108 109 RenderThemeChromiumWin() { } 110 virtual ~RenderThemeChromiumWin() { } 111 112 unsigned determineState(RenderObject*, ControlSubPart = None); 113 unsigned determineSliderThumbState(RenderObject*); 114 unsigned determineClassicState(RenderObject*, ControlSubPart = None); 115 116 ThemeData getThemeData(RenderObject*, ControlSubPart = None); 117 118 bool paintTextFieldInternal(RenderObject*, const PaintInfo&, const IntRect&, bool); 119 }; 120 121 } // namespace WebCore 122 123 #endif 124