1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CCScrollbarGeometryFixedThumb_h
6 #define CCScrollbarGeometryFixedThumb_h
8 #include "CCScrollbarGeometryStub.h"
13 // This scrollbar geometry class behaves exactly like a normal geometry except
14 // it always returns a fixed thumb length. This allows a page to zoom (changing
15 // the total size of the scrollable area, changing the thumb length) while not
16 // requiring the thumb resource to be repainted.
17 class CCScrollbarGeometryFixedThumb
: public CCScrollbarGeometryStub
{
19 static PassOwnPtr
<CCScrollbarGeometryFixedThumb
> create(PassOwnPtr
<WebKit::WebScrollbarThemeGeometry
>);
20 virtual ~CCScrollbarGeometryFixedThumb();
22 // Update thumb length from scrollbar
23 void update(WebKit::WebScrollbar
*);
25 // WebScrollbarThemeGeometry interface
26 virtual WebKit::WebScrollbarThemeGeometry
* clone() const OVERRIDE
;
27 virtual int thumbLength(WebKit::WebScrollbar
*) OVERRIDE
;
28 virtual int thumbPosition(WebKit::WebScrollbar
*) OVERRIDE
;
29 virtual void splitTrack(WebKit::WebScrollbar
*, const WebKit::WebRect
& track
, WebKit::WebRect
& startTrack
, WebKit::WebRect
& thumb
, WebKit::WebRect
& endTrack
) OVERRIDE
;
32 explicit CCScrollbarGeometryFixedThumb(PassOwnPtr
<WebKit::WebScrollbarThemeGeometry
>);