18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This file is part of the theme implementation for form controls in WebCore.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
4e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Computer, Inc.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful,
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB.  If not, write to
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA.
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef RenderThemeMac_h
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RenderThemeMac_h
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "RenderTheme.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import <wtf/HashMap.h>
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import <wtf/RetainPtr.h>
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass RenderProgress;
31dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef __OBJC__
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class WebCoreRenderThemeNotificationObserver;
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass WebCoreRenderThemeNotificationObserver;
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderStyle;
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderThemeMac : public RenderTheme {
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    static PassRefPtr<RenderTheme> create();
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // A method asking if the control changes its tint when the window has focus or not.
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool controlSupportsTints(const RenderObject*) const;
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // A general method asking if any control tinting is supported at all.
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool supportsControlTints() const { return true; }
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustRepaintRect(const RenderObject*, IntRect&);
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isControlStyled(const RenderStyle*, const BorderData&,
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                                 const FillLayer&, const Color& backgroundColor) const;
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual Color platformActiveSelectionBackgroundColor() const;
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual Color platformInactiveSelectionBackgroundColor() const;
59635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual Color platformActiveListBoxSelectionBackgroundColor() const;
60635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual Color platformActiveListBoxSelectionForegroundColor() const;
61635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual Color platformInactiveListBoxSelectionBackgroundColor() const;
62635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual Color platformInactiveListBoxSelectionForegroundColor() const;
630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual Color platformFocusRingColor() const;
64635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
658f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    virtual ScrollbarControlSize scrollbarControlSizeForPart(ControlPart) { return SmallScrollbar; }
668f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void platformColorsDidChange();
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // System fonts.
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void systemFont(int cssValueId, FontDescription&) const;
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual int minimumMenuListSize(RenderStyle*) const;
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSliderThumbSize(RenderObject*) const;
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual int popupInternalPaddingLeft(RenderStyle*) const;
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual int popupInternalPaddingRight(RenderStyle*) const;
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual int popupInternalPaddingTop(RenderStyle*) const;
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual int popupInternalPaddingBottom(RenderStyle*) const;
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
81ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintCapsLockIndicator(RenderObject*, const PaintInfo&, const IntRect&);
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
83545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#if ENABLE(METER_TAG)
84545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual IntSize meterSizeForBounds(const RenderMeter*, const IntRect&) const;
85ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMeter(RenderObject*, const PaintInfo&, const IntRect&);
862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool supportsMeter(ControlPart) const;
87545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif
88545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
89dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(PROGRESS_TAG)
90dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // Returns the repeat interval of the animation for the progress bar.
91dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual double animationRepeatIntervalForProgressBar(RenderProgress*) const;
92dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // Returns the duration of the animation for the progress bar.
93dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual double animationDurationForProgressBar(RenderProgress*) const;
94dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif
95dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual Color systemColor(int cssValueId) const;
9721939df44de1705786c545cd1bf519d47250322dBen Murdoch    // Controls color values returned from platformFocusRingColor(). systemColor() will be used when false.
9821939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual bool usesTestModeFocusRingColor() const;
9921939df44de1705786c545cd1bf519d47250322dBen Murdoch    // A view associated to the contained document. Subclasses may not have such a view and return a fake.
10021939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual NSView* documentViewFor(RenderObject*) const;
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected:
10221939df44de1705786c545cd1bf519d47250322dBen Murdoch    RenderThemeMac();
10321939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual ~RenderThemeMac();
10421939df44de1705786c545cd1bf519d47250322dBen Murdoch
105635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual bool supportsSelectionForegroundColors() const { return false; }
106635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
107ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintTextField(RenderObject*, const PaintInfo&, const IntRect&);
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
110ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintTextArea(RenderObject*, const PaintInfo&, const IntRect&);
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustTextAreaStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
113ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMenuList(RenderObject*, const PaintInfo&, const IntRect&);
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
116ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMenuListButton(RenderObject*, const PaintInfo&, const IntRect&);
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
119dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#if ENABLE(PROGRESS_TAG)
120dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual void adjustProgressBarStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
121ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintProgressBar(RenderObject*, const PaintInfo&, const IntRect&);
122dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif
123dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
124ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
127ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
130ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintSearchField(RenderObject*, const PaintInfo&, const IntRect&);
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSearchFieldCancelButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
134ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintSearchFieldCancelButton(RenderObject*, const PaintInfo&, const IntRect&);
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSearchFieldDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
137ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintSearchFieldDecoration(RenderObject*, const PaintInfo&, const IntRect&);
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSearchFieldResultsDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
140ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintSearchFieldResultsDecoration(RenderObject*, const PaintInfo&, const IntRect&);
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void adjustSearchFieldResultsButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
143ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintSearchFieldResultsButton(RenderObject*, const PaintInfo&, const IntRect&);
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
145635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#if ENABLE(VIDEO)
146ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaFullscreenButton(RenderObject*, const PaintInfo&, const IntRect&);
147ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaPlayButton(RenderObject*, const PaintInfo&, const IntRect&);
148ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaMuteButton(RenderObject*, const PaintInfo&, const IntRect&);
149ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaSeekBackButton(RenderObject*, const PaintInfo&, const IntRect&);
150ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaSeekForwardButton(RenderObject*, const PaintInfo&, const IntRect&);
151ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
152ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
153ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaRewindButton(RenderObject*, const PaintInfo&, const IntRect&);
154ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaReturnToRealtimeButton(RenderObject*, const PaintInfo&, const IntRect&);
155ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaToggleClosedCaptionsButton(RenderObject*, const PaintInfo&, const IntRect&);
156ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaControlsBackground(RenderObject*, const PaintInfo&, const IntRect&);
157ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaCurrentTime(RenderObject*, const PaintInfo&, const IntRect&);
158ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    virtual bool paintMediaTimeRemaining(RenderObject*, const PaintInfo&, const IntRect&);
159e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    virtual bool paintMediaVolumeSliderContainer(RenderObject*, const PaintInfo&, const IntRect&);
160e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    virtual bool paintMediaVolumeSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
161e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    virtual bool paintMediaVolumeSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
162635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
163635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    // Media controls
164635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    virtual String extraMediaControlsStyleSheet();
1652bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API)
1662bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual String extraFullScreenStyleSheet();
1672bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
168231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
1692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool supportsClosedCaptioning() const { return true; }
1702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool hasOwnDisabledStateHandlingFor(ControlPart) const;
1712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual bool usesMediaControlStatusDisplay();
1722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    virtual bool usesMediaControlVolumeSlider() const;
17321939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void adjustMediaSliderThumbSize(RenderObject*) const;
17481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual IntPoint volumeSliderOffsetFromMuteButton(RenderBox*, const IntSize&) const;
175635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif
1762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
1772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    virtual bool shouldShowPlaceholderWhenFocused() const;
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate:
1800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    IntRect inflateRect(const IntRect&, const IntSize&, const int* margins, float zoomLevel = 1.0f) const;
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
183635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project    FloatRect convertToPaintingRect(const RenderObject* inputRenderer, const RenderObject* partRenderer, const FloatRect& inputRect, const IntRect& r) const;
184635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Get the control size based off the font.  Used by some of the controls (like buttons).
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSControlSize controlSizeForFont(RenderStyle*) const;
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSControlSize controlSizeForSystemFont(RenderStyle*) const;
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setControlSize(NSCell*, const IntSize* sizes, const IntSize& minSize, float zoomLevel = 1.0f);
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setSizeFromFont(RenderStyle*, const IntSize* sizes) const;
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    IntSize sizeForFont(RenderStyle*, const IntSize* sizes) const;
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    IntSize sizeForSystemFont(RenderStyle*, const IntSize* sizes) const;
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setFontFromControlSize(CSSStyleSelector*, RenderStyle*, NSControlSize) const;
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void updateCheckedState(NSCell*, const RenderObject*);
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void updateEnabledState(NSCell*, const RenderObject*);
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void updateFocusedState(NSCell*, const RenderObject*);
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void updatePressedState(NSCell*, const RenderObject*);
19821939df44de1705786c545cd1bf519d47250322dBen Murdoch    // An optional hook for subclasses to update the control tint of NSCell.
19921939df44de1705786c545cd1bf519d47250322dBen Murdoch    virtual void updateActiveState(NSCell*, const RenderObject*) {}
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Helpers for adjusting appearance and for painting
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setPopupButtonCellState(const RenderObject*, const IntRect&);
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const IntSize* popupButtonSizes() const;
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const int* popupButtonMargins() const;
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const int* popupButtonPadding(NSControlSize) const;
207ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    void paintMenuListButtonGradients(RenderObject*, const PaintInfo&, const IntRect&);
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const IntSize* menuListSizes() const;
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const IntSize* searchFieldSizes() const;
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const IntSize* cancelButtonSizes() const;
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const IntSize* resultsButtonSizes() const;
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setSearchCellState(RenderObject*, const IntRect&);
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void setSearchFieldSize(RenderStyle*) const;
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSPopUpButtonCell* popupButton() const;
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSSearchFieldCell* search() const;
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSMenu* searchMenuTemplate() const;
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSSliderCell* sliderThumbHorizontal() const;
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    NSSliderCell* sliderThumbVertical() const;
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
222545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#if ENABLE(METER_TAG)
223545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    NSLevelIndicatorStyle levelIndicatorStyleFor(ControlPart) const;
224545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    NSLevelIndicatorCell* levelIndicatorFor(const RenderMeter*) const;
225545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif
226545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate:
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    mutable RetainPtr<NSPopUpButtonCell> m_popupButton;
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    mutable RetainPtr<NSSearchFieldCell> m_search;
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    mutable RetainPtr<NSMenu> m_searchMenuTemplate;
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    mutable RetainPtr<NSSliderCell> m_sliderThumbHorizontal;
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    mutable RetainPtr<NSSliderCell> m_sliderThumbVertical;
233545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    mutable RetainPtr<NSLevelIndicatorCell> m_levelIndicator;
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    bool m_isSliderThumbHorizontalPressed;
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    bool m_isSliderThumbVerticalPressed;
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    mutable HashMap<int, RGBA32> m_systemColorCache;
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    RetainPtr<WebCoreRenderThemeNotificationObserver> m_notificationObserver;
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // RenderThemeMac_h
246