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 "core/rendering/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 OVERRIDE; 51 52 // The platform selection color. 53 virtual Color platformActiveSelectionBackgroundColor() const OVERRIDE; 54 virtual Color platformInactiveSelectionBackgroundColor() const OVERRIDE; 55 virtual Color platformActiveSelectionForegroundColor() const OVERRIDE; 56 virtual Color platformInactiveSelectionForegroundColor() const OVERRIDE; 57 virtual Color platformActiveTextSearchHighlightColor() const OVERRIDE; 58 virtual Color platformInactiveTextSearchHighlightColor() const OVERRIDE; 59 60 virtual Color systemColor(CSSValueID) const OVERRIDE; 61 62 virtual IntSize sliderTickSize() const OVERRIDE; 63 virtual int sliderTickOffsetFromTrackCenter() const OVERRIDE; 64 virtual void adjustSliderThumbSize(RenderStyle*, Element*) const OVERRIDE; 65 66 // Various paint functions. 67 virtual bool paintCheckbox(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 68 virtual bool paintRadio(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 69 virtual bool paintButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 70 virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 71 virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 72 virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 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). 77 virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 78 virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 79 80 virtual void adjustInnerSpinButtonStyle(RenderStyle*, Element*) const OVERRIDE; 81 virtual bool paintInnerSpinButton(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 82 83 virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const OVERRIDE; 84 virtual double animationDurationForProgressBar(RenderProgress*) const OVERRIDE; 85 virtual void adjustProgressBarStyle(RenderStyle*, Element*) const OVERRIDE; 86 virtual bool paintProgressBar(RenderObject*, const PaintInfo&, const IntRect&) OVERRIDE; 87 88 virtual bool shouldOpenPickerWithF4Key() const OVERRIDE; 89 90 protected: 91 virtual double caretBlinkIntervalInternal() const OVERRIDE; 92 virtual bool shouldUseFallbackTheme(RenderStyle*) const OVERRIDE; 93 94 private: 95 enum ControlSubPart { 96 None, 97 SpinButtonDown, 98 SpinButtonUp, 99 }; 100 101 RenderThemeChromiumWin() { } 102 virtual ~RenderThemeChromiumWin() { } 103 104 unsigned determineState(RenderObject*, ControlSubPart = None); 105 unsigned determineSliderThumbState(RenderObject*); 106 unsigned determineClassicState(RenderObject*, ControlSubPart = None); 107 108 ThemeData getThemeData(RenderObject*, ControlSubPart = None); 109 110 bool paintTextFieldInternal(RenderObject*, const PaintInfo&, const IntRect&, bool); 111 }; 112 113 } // namespace WebCore 114 115 #endif 116