Home | History | Annotate | Download | only in rendering
      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