// Copyright 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CCScrollbarGeometryFixedThumb_h #define CCScrollbarGeometryFixedThumb_h #include "CCScrollbarGeometryStub.h" #include "IntSize.h" namespace cc { // This scrollbar geometry class behaves exactly like a normal geometry except // it always returns a fixed thumb length. This allows a page to zoom (changing // the total size of the scrollable area, changing the thumb length) while not // requiring the thumb resource to be repainted. class CCScrollbarGeometryFixedThumb : public CCScrollbarGeometryStub { public: static scoped_ptr create(scoped_ptr); virtual ~CCScrollbarGeometryFixedThumb(); // Update thumb length from scrollbar void update(WebKit::WebScrollbar*); // WebScrollbarThemeGeometry interface virtual WebKit::WebScrollbarThemeGeometry* clone() const OVERRIDE; virtual int thumbLength(WebKit::WebScrollbar*) OVERRIDE; virtual int thumbPosition(WebKit::WebScrollbar*) OVERRIDE; virtual void splitTrack(WebKit::WebScrollbar*, const WebKit::WebRect& track, WebKit::WebRect& startTrack, WebKit::WebRect& thumb, WebKit::WebRect& endTrack) OVERRIDE; private: explicit CCScrollbarGeometryFixedThumb(scoped_ptr); IntSize m_thumbSize; }; } #endif