2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #ifndef LayoutScrollbarTheme_h
27 #define LayoutScrollbarTheme_h
29 #include "platform/scroll/ScrollbarTheme.h"
33 class PlatformMouseEvent
;
35 class LayoutScrollbarTheme final
: public ScrollbarTheme
{
37 ~LayoutScrollbarTheme() override
{ }
39 int scrollbarThickness(ScrollbarControlSize controlSize
) override
{ return ScrollbarTheme::theme()->scrollbarThickness(controlSize
); }
41 ScrollbarButtonsPlacement
buttonsPlacement() const override
{ return ScrollbarTheme::theme()->buttonsPlacement(); }
43 void paintScrollCorner(GraphicsContext
*, const DisplayItemClientWrapper
&, const IntRect
& cornerRect
) override
;
45 bool shouldCenterOnThumb(ScrollbarThemeClient
* scrollbar
, const PlatformMouseEvent
& event
) override
{ return ScrollbarTheme::theme()->shouldCenterOnThumb(scrollbar
, event
); }
46 bool shouldSnapBackToDragOrigin(ScrollbarThemeClient
* scrollbar
, const PlatformMouseEvent
& event
) override
{ return ScrollbarTheme::theme()->shouldSnapBackToDragOrigin(scrollbar
, event
); }
48 double initialAutoscrollTimerDelay() override
{ return ScrollbarTheme::theme()->initialAutoscrollTimerDelay(); }
49 double autoscrollTimerDelay() override
{ return ScrollbarTheme::theme()->autoscrollTimerDelay(); }
51 void registerScrollbar(ScrollbarThemeClient
* scrollbar
) override
{ return ScrollbarTheme::theme()->registerScrollbar(scrollbar
); }
52 void unregisterScrollbar(ScrollbarThemeClient
* scrollbar
) override
{ return ScrollbarTheme::theme()->unregisterScrollbar(scrollbar
); }
54 int minimumThumbLength(ScrollbarThemeClient
*) override
;
56 void buttonSizesAlongTrackAxis(ScrollbarThemeClient
*, int& beforeSize
, int& afterSize
);
58 static LayoutScrollbarTheme
* layoutScrollbarTheme();
61 bool hasButtons(ScrollbarThemeClient
*) override
;
62 bool hasThumb(ScrollbarThemeClient
*) override
;
64 IntRect
backButtonRect(ScrollbarThemeClient
*, ScrollbarPart
, bool painting
= false) override
;
65 IntRect
forwardButtonRect(ScrollbarThemeClient
*, ScrollbarPart
, bool painting
= false) override
;
66 IntRect
trackRect(ScrollbarThemeClient
*, bool painting
= false) override
;
68 void paintScrollbarBackground(GraphicsContext
*, ScrollbarThemeClient
*) override
;
69 void paintTrackBackground(GraphicsContext
*, ScrollbarThemeClient
*, const IntRect
&) override
;
70 void paintTrackPiece(GraphicsContext
*, ScrollbarThemeClient
*, const IntRect
&, ScrollbarPart
) override
;
71 void paintButton(GraphicsContext
*, ScrollbarThemeClient
*, const IntRect
&, ScrollbarPart
) override
;
72 void paintThumb(GraphicsContext
*, ScrollbarThemeClient
*, const IntRect
&) override
;
73 void paintTickmarks(GraphicsContext
*, ScrollbarThemeClient
*, const IntRect
&) override
;
75 IntRect
constrainTrackRectToTrackPieces(ScrollbarThemeClient
*, const IntRect
&) override
;
80 #endif // LayoutScrollbarTheme_h