[iOS] Input type=time elements styled with SVG fonts have 0 width
[WebKit-https.git] / Source / WebCore / rendering / RenderThemeIOS.h
1 /*
2  * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef RenderThemeIOS_h
27 #define RenderThemeIOS_h
28
29 #if PLATFORM(IOS)
30
31 #include "RenderTheme.h"
32
33 namespace WebCore {
34     
35 class RenderStyle;
36 class GraphicsContext;
37     
38 class RenderThemeIOS : public RenderTheme {
39 public:
40     static PassRefPtr<RenderTheme> create();
41
42     virtual int popupInternalPaddingRight(RenderStyle*) const override;
43
44     static void adjustRoundBorderRadius(RenderStyle&, RenderBox*);
45
46     virtual void systemFont(CSSValueID, FontDescription&) const override;
47
48     static CFStringRef contentSizeCategory();
49
50     static void setContentSizeCategory(const String&);
51
52 protected:
53     virtual int baselinePosition(const RenderObject&) const override;
54
55     virtual bool isControlStyled(const RenderStyle*, const BorderData&, const FillLayer& background, const Color& backgroundColor) const override;
56
57     // Methods for each appearance value.
58     virtual void adjustCheckboxStyle(StyleResolver*, RenderStyle*, Element*) const override;
59     virtual bool paintCheckboxDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
60
61     virtual void adjustRadioStyle(StyleResolver*, RenderStyle*, Element*) const override;
62     virtual bool paintRadioDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
63
64     virtual void adjustButtonStyle(StyleResolver*, RenderStyle*, Element*) const override;
65     virtual bool paintButtonDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
66     virtual bool paintPushButtonDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
67     virtual void setButtonSize(RenderStyle*) const override;
68
69     virtual bool paintFileUploadIconDecorations(const RenderObject& inputRenderer, const RenderObject& buttonRenderer, const PaintInfo&, const IntRect&, Icon*, FileUploadDecorations) override;
70
71     virtual bool paintTextFieldDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
72     virtual bool paintTextAreaDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
73
74     virtual void adjustMenuListButtonStyle(StyleResolver&, RenderStyle&, Element&) const override;
75     virtual bool paintMenuListButtonDecorations(const RenderObject&, const PaintInfo&, const FloatRect&) override;
76
77     virtual void adjustSliderTrackStyle(StyleResolver*, RenderStyle*, Element*) const override;
78     virtual bool paintSliderTrack(const RenderObject&, const PaintInfo&, const IntRect&) override;
79
80     virtual void adjustSliderThumbSize(RenderStyle*, Element*) const override;
81     virtual bool paintSliderThumbDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
82
83 #if ENABLE(PROGRESS_ELEMENT)
84     // Returns the repeat interval of the animation for the progress bar.
85     virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const override;
86     // Returns the duration of the animation for the progress bar.
87     virtual double animationDurationForProgressBar(RenderProgress*) const override;
88
89     virtual bool paintProgressBar(const RenderObject&, const PaintInfo&, const IntRect&) override;
90 #endif
91
92 #if ENABLE(DATALIST_ELEMENT)
93     virtual IntSize sliderTickSize() const override;
94     virtual int sliderTickOffsetFromTrackCenter() const override;
95 #endif
96
97     virtual void adjustSearchFieldStyle(StyleResolver*, RenderStyle*, Element*) const override;
98     virtual bool paintSearchFieldDecorations(const RenderObject&, const PaintInfo&, const IntRect&) override;
99
100     virtual Color platformActiveSelectionBackgroundColor() const override;
101     virtual Color platformInactiveSelectionBackgroundColor() const override;
102
103 #if ENABLE(TOUCH_EVENTS)
104     virtual Color platformTapHighlightColor() const override { return 0x4D1A1A1A; }
105 #endif
106
107     virtual bool shouldShowPlaceholderWhenFocused() const override;
108     virtual bool shouldHaveSpinButton(HTMLInputElement*) const override;
109
110 #if ENABLE(VIDEO)
111     virtual String mediaControlsStyleSheet() override;
112     virtual String mediaControlsScript() override;
113 #endif
114
115 private:
116     RenderThemeIOS();
117     virtual ~RenderThemeIOS() { }
118
119     const Color& shadowColor() const;
120     FloatRect addRoundedBorderClip(const RenderObject& box, GraphicsContext*, const IntRect&);
121
122     String m_mediaControlsScript;
123     String m_mediaControlsStyleSheet;
124 };
125
126 }
127
128 #endif // PLATFORM(IOS)
129 #endif // RenderThemeIOS_h