1 // Copyright (c) 2011 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. 4 5 #ifndef UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_WRAPPER_H_ 6 #define UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_WRAPPER_H_ 7 8 #include "ui/views/views_export.h" 9 10 namespace ui { 11 class NativeTheme; 12 } 13 14 namespace views { 15 16 class NativeScrollBar; 17 class View; 18 19 // A specialization of NativeControlWrapper that hosts a platform-native 20 // scroll bar. 21 class VIEWS_EXPORT NativeScrollBarWrapper { 22 public: 23 virtual ~NativeScrollBarWrapper() {} 24 25 // Updates the scroll bar appearance given a viewport size, content size and 26 // current position. 27 virtual void Update(int viewport_size, int content_size, int current_pos) = 0; 28 29 // Retrieves the views::View that hosts the native control. 30 virtual View* GetView() = 0; 31 32 // Returns the position of the scrollbar. 33 virtual int GetPosition() const = 0; 34 35 // Creates an appropriate NativeScrollBarWrapper for the platform. 36 static NativeScrollBarWrapper* CreateWrapper(NativeScrollBar* button); 37 38 // Returns the system sizes of vertical/horizontal scroll bars. 39 static int GetVerticalScrollBarWidth(const ui::NativeTheme* theme); 40 static int GetHorizontalScrollBarHeight(const ui::NativeTheme* theme); 41 }; 42 43 } // namespace views 44 45 #endif // UI_VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_WRAPPER_H_ 46