Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 #ifndef CC_SCROLLBAR_LAYER_H_ | 6 #ifndef CC_SCROLLBAR_LAYER_H_ |
| 7 #define CC_SCROLLBAR_LAYER_H_ | 7 #define CC_SCROLLBAR_LAYER_H_ |
| 8 | 8 |
| 9 #include "cc/cc_export.h" | 9 #include "cc/cc_export.h" |
| 10 #include "cc/contents_scaling_layer.h" | 10 #include "cc/contents_scaling_layer.h" |
| 11 #include "cc/layer_updater.h" | 11 #include "cc/layer_updater.h" |
| 12 #include "cc/scrollbar_theme_painter.h" | 12 #include "cc/scrollbar_theme_painter.h" |
| 13 #include "third_party/WebKit/Source/Platform/chromium/public/WebScrollbar.h" | 13 #include "third_party/WebKit/Source/Platform/chromium/public/WebScrollbar.h" |
| 14 #include "third_party/WebKit/Source/Platform/chromium/public/WebScrollbarThemeGe ometry.h" | 14 #include "third_party/WebKit/Source/Platform/chromium/public/WebScrollbarThemeGe ometry.h" |
| 15 | 15 |
| 16 namespace cc { | 16 namespace cc { |
| 17 class CachingBitmapContentLayerUpdater; | 17 class CachingBitmapContentLayerUpdater; |
| 18 class ResourceUpdateQueue; | 18 class ResourceUpdateQueue; |
| 19 class Scrollbar; | 19 class Scrollbar; |
| 20 class ScrollbarThemeComposite; | 20 class ScrollbarThemeComposite; |
| 21 | 21 |
| 22 class CC_EXPORT ScrollbarLayer : public ContentsScalingLayer { | 22 class CC_EXPORT ScrollbarLayer : public ContentsScalingLayer { |
| 23 public: | 23 public: |
| 24 virtual scoped_ptr<LayerImpl> createLayerImpl(LayerTreeImpl* treeImpl) OVERR IDE; | 24 virtual scoped_ptr<LayerImpl> createLayerImpl(LayerTreeImpl* treeImpl) OVERR IDE; |
| 25 | 25 |
| 26 static scoped_refptr<ScrollbarLayer> create( | 26 static scoped_refptr<ScrollbarLayer> create( |
| 27 scoped_ptr<WebKit::WebScrollbar>, | 27 scoped_ptr<WebKit::WebScrollbar>, |
| 28 scoped_ptr<ScrollbarThemePainter>, | 28 scoped_ptr<ScrollbarThemePainter>, |
| 29 scoped_ptr<WebKit::WebScrollbarThemeGeometry>, | 29 scoped_ptr<WebKit::WebScrollbarThemeGeometry>, |
| 30 int scrollLayerId, bool isPinchZoomScrollbar = false); | |
| 31 | |
| 32 // This version of create() only called when creating pinch zoom scrollbars. | |
| 33 static scoped_refptr<ScrollbarLayer> create( | |
| 34 scoped_ptr<WebKit::WebScrollbar>, | |
| 35 scoped_ptr<ScrollbarThemePainter>, | |
| 30 int scrollLayerId); | 36 int scrollLayerId); |
| 31 | 37 |
| 38 static void setDefaultGeometry(WebKit::WebScrollbarThemeGeometry*); | |
| 39 static WebKit::WebScrollbarThemeGeometry* cloneDefaultGeometry(); | |
| 40 static void setDefaultUsesOverlayScrollbars(bool); | |
| 41 static bool defaultUsesOverlayScrollbars() { return s_usesOverlayScrollbars; } | |
| 42 | |
| 32 int scrollLayerId() const { return m_scrollLayerId; } | 43 int scrollLayerId() const { return m_scrollLayerId; } |
| 33 void setScrollLayerId(int id); | 44 void setScrollLayerId(int id); |
| 34 | 45 |
| 35 WebKit::WebScrollbar::Orientation orientation() const; | 46 WebKit::WebScrollbar::Orientation orientation() const; |
| 36 | 47 |
| 48 bool isPinchZoomScrollbar() { return m_isPinchZoomScrollbar; } | |
| 49 | |
| 37 // Layer interface | 50 // Layer interface |
| 38 virtual void setTexturePriorities(const PriorityCalculator&) OVERRIDE; | 51 virtual void setTexturePriorities(const PriorityCalculator&) OVERRIDE; |
| 39 virtual void update(ResourceUpdateQueue&, const OcclusionTracker*, Rendering Stats*) OVERRIDE; | 52 virtual void update(ResourceUpdateQueue&, const OcclusionTracker*, Rendering Stats*) OVERRIDE; |
| 40 virtual void setLayerTreeHost(LayerTreeHost*) OVERRIDE; | 53 virtual void setLayerTreeHost(LayerTreeHost*) OVERRIDE; |
| 41 virtual void pushPropertiesTo(LayerImpl*) OVERRIDE; | 54 virtual void pushPropertiesTo(LayerImpl*) OVERRIDE; |
| 42 virtual void calculateContentsScale( | 55 virtual void calculateContentsScale( |
| 43 float idealContentsScale, | 56 float idealContentsScale, |
| 44 bool animatingTransformToScreen, | 57 bool animatingTransformToScreen, |
| 45 float* contentsScaleX, | 58 float* contentsScaleX, |
| 46 float* contentsScaleY, | 59 float* contentsScaleY, |
| 47 gfx::Size* contentBounds) OVERRIDE; | 60 gfx::Size* contentBounds) OVERRIDE; |
| 48 | 61 |
| 49 virtual ScrollbarLayer* toScrollbarLayer() OVERRIDE; | 62 virtual ScrollbarLayer* toScrollbarLayer() OVERRIDE; |
| 50 | 63 |
| 51 protected: | 64 protected: |
| 52 ScrollbarLayer( | 65 ScrollbarLayer( |
| 53 scoped_ptr<WebKit::WebScrollbar>, | 66 scoped_ptr<WebKit::WebScrollbar>, |
| 54 scoped_ptr<ScrollbarThemePainter>, | 67 scoped_ptr<ScrollbarThemePainter>, |
| 55 scoped_ptr<WebKit::WebScrollbarThemeGeometry>, | 68 scoped_ptr<WebKit::WebScrollbarThemeGeometry>, |
| 56 int scrollLayerId); | 69 int scrollLayerId, bool isPinchZoomScrollbar); |
| 57 virtual ~ScrollbarLayer(); | 70 virtual ~ScrollbarLayer(); |
| 58 | 71 |
| 59 private: | 72 private: |
| 60 void updatePart(CachingBitmapContentLayerUpdater*, LayerUpdater::Resource*, const gfx::Rect&, ResourceUpdateQueue&, RenderingStats*); | 73 void updatePart(CachingBitmapContentLayerUpdater*, LayerUpdater::Resource*, const gfx::Rect&, ResourceUpdateQueue&, RenderingStats*); |
| 61 void createUpdaterIfNeeded(); | 74 void createUpdaterIfNeeded(); |
| 62 gfx::Rect scrollbarLayerRectToContentRect(const gfx::Rect& layerRect) const; | 75 gfx::Rect scrollbarLayerRectToContentRect(const gfx::Rect& layerRect) const; |
| 63 | 76 |
| 64 bool isDirty() const { return !m_dirtyRect.IsEmpty(); } | 77 bool isDirty() const { return !m_dirtyRect.IsEmpty(); } |
| 65 | 78 |
| 66 int maxTextureSize(); | 79 int maxTextureSize(); |
| 67 float clampScaleToMaxTextureSize(float scale); | 80 float clampScaleToMaxTextureSize(float scale); |
| 68 | 81 |
| 82 static scoped_ptr<WebKit::WebScrollbarThemeGeometry> s_defaultGeometry; | |
| 83 static bool s_usesOverlayScrollbars; | |
|
aelias_OOO_until_Jul13
2013/02/06 19:02:45
Please avoid statics.
| |
| 84 | |
| 69 scoped_ptr<WebKit::WebScrollbar> m_scrollbar; | 85 scoped_ptr<WebKit::WebScrollbar> m_scrollbar; |
| 70 scoped_ptr<ScrollbarThemePainter> m_painter; | 86 scoped_ptr<ScrollbarThemePainter> m_painter; |
| 71 scoped_ptr<WebKit::WebScrollbarThemeGeometry> m_geometry; | 87 scoped_ptr<WebKit::WebScrollbarThemeGeometry> m_geometry; |
| 72 gfx::Size m_thumbSize; | 88 gfx::Size m_thumbSize; |
| 73 int m_scrollLayerId; | 89 int m_scrollLayerId; |
| 74 | 90 |
| 75 unsigned m_textureFormat; | 91 unsigned m_textureFormat; |
| 92 bool m_isPinchZoomScrollbar; | |
| 76 | 93 |
| 77 gfx::RectF m_dirtyRect; | 94 gfx::RectF m_dirtyRect; |
| 78 | 95 |
| 79 scoped_refptr<CachingBitmapContentLayerUpdater> m_backTrackUpdater; | 96 scoped_refptr<CachingBitmapContentLayerUpdater> m_backTrackUpdater; |
| 80 scoped_refptr<CachingBitmapContentLayerUpdater> m_foreTrackUpdater; | 97 scoped_refptr<CachingBitmapContentLayerUpdater> m_foreTrackUpdater; |
| 81 scoped_refptr<CachingBitmapContentLayerUpdater> m_thumbUpdater; | 98 scoped_refptr<CachingBitmapContentLayerUpdater> m_thumbUpdater; |
| 82 | 99 |
| 83 // All the parts of the scrollbar except the thumb | 100 // All the parts of the scrollbar except the thumb |
| 84 scoped_ptr<LayerUpdater::Resource> m_backTrack; | 101 scoped_ptr<LayerUpdater::Resource> m_backTrack; |
| 85 scoped_ptr<LayerUpdater::Resource> m_foreTrack; | 102 scoped_ptr<LayerUpdater::Resource> m_foreTrack; |
| 86 scoped_ptr<LayerUpdater::Resource> m_thumb; | 103 scoped_ptr<LayerUpdater::Resource> m_thumb; |
| 87 }; | 104 }; |
| 88 | 105 |
| 89 } | 106 } |
| 90 #endif // CC_SCROLLBAR_LAYER_H_ | 107 #endif // CC_SCROLLBAR_LAYER_H_ |
| OLD | NEW |