| 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 #include "cc/scrollbar_layer_impl.h" | 5 #include "cc/scrollbar_layer_impl.h" |
| 6 | 6 |
| 7 #include "cc/quad_sink.h" | 7 #include "cc/quad_sink.h" |
| 8 #include "cc/scrollbar_animation_controller.h" | 8 #include "cc/scrollbar_animation_controller.h" |
| 9 #include "cc/texture_draw_quad.h" | 9 #include "cc/texture_draw_quad.h" |
| 10 #include "ui/gfx/rect_conversions.h" | 10 #include "ui/gfx/rect_conversions.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 | 88 |
| 89 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createSharedQ
uadState()); | 89 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createSharedQ
uadState()); |
| 90 appendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData); | 90 appendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData); |
| 91 | 91 |
| 92 WebRect thumbRect, backTrackRect, foreTrackRect; | 92 WebRect thumbRect, backTrackRect, foreTrackRect; |
| 93 m_geometry->splitTrack(&m_scrollbar, m_geometry->trackRect(&m_scrollbar), ba
ckTrackRect, thumbRect, foreTrackRect); | 93 m_geometry->splitTrack(&m_scrollbar, m_geometry->trackRect(&m_scrollbar), ba
ckTrackRect, thumbRect, foreTrackRect); |
| 94 if (!m_geometry->hasThumb(&m_scrollbar)) | 94 if (!m_geometry->hasThumb(&m_scrollbar)) |
| 95 thumbRect = WebRect(); | 95 thumbRect = WebRect(); |
| 96 | 96 |
| 97 if (m_thumbResourceId && !thumbRect.isEmpty()) { | 97 if (m_thumbResourceId && !thumbRect.isEmpty()) { |
| 98 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::create(sharedQuadSta
te, scrollbarLayerRectToContentRect(thumbRect), m_thumbResourceId, premultipledA
lpha, uvRect, flipped); | 98 gfx::Rect quadRect(scrollbarLayerRectToContentRect(thumbRect)); |
| 99 quad->setNeedsBlending(); | 99 gfx::Rect opaqueRect; |
| 100 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::create(sharedQuadSta
te, quadRect, opaqueRect, m_thumbResourceId, premultipledAlpha, uvRect, flipped)
; |
| 100 quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); | 101 quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); |
| 101 } | 102 } |
| 102 | 103 |
| 103 if (!m_backTrackResourceId) | 104 if (!m_backTrackResourceId) |
| 104 return; | 105 return; |
| 105 | 106 |
| 106 // We only paint the track in two parts if we were given a texture for the f
orward track part. | 107 // We only paint the track in two parts if we were given a texture for the f
orward track part. |
| 107 if (m_foreTrackResourceId && !foreTrackRect.isEmpty()) | 108 if (m_foreTrackResourceId && !foreTrackRect.isEmpty()) { |
| 108 quadSink.append(TextureDrawQuad::create(sharedQuadState, scrollbarLayerR
ectToContentRect(foreTrackRect), m_foreTrackResourceId, premultipledAlpha, toUVR
ect(foreTrackRect, boundsRect), flipped).PassAs<DrawQuad>(), appendQuadsData); | 109 gfx::Rect quadRect(scrollbarLayerRectToContentRect(foreTrackRect)); |
| 110 gfx::Rect opaqueRect(contentsOpaque() ? quadRect : gfx::Rect()); |
| 111 quadSink.append(TextureDrawQuad::create(sharedQuadState, quadRect, opaqu
eRect, m_foreTrackResourceId, premultipledAlpha, toUVRect(foreTrackRect, boundsR
ect), flipped).PassAs<DrawQuad>(), appendQuadsData); |
| 112 } |
| 109 | 113 |
| 110 // Order matters here: since the back track texture is being drawn to the en
tire contents rect, we must append it after the thumb and | 114 // Order matters here: since the back track texture is being drawn to the en
tire contents rect, we must append it after the thumb and |
| 111 // fore track quads. The back track texture contains (and displays) the butt
ons. | 115 // fore track quads. The back track texture contains (and displays) the butt
ons. |
| 112 if (!contentBoundsRect.IsEmpty()) | 116 if (!contentBoundsRect.IsEmpty()) { |
| 113 quadSink.append(TextureDrawQuad::create(sharedQuadState, gfx::Rect(conte
ntBoundsRect), m_backTrackResourceId, premultipledAlpha, uvRect, flipped).PassAs
<DrawQuad>(), appendQuadsData); | 117 gfx::Rect quadRect(contentBoundsRect); |
| 118 gfx::Rect opaqueRect(contentsOpaque() ? quadRect : gfx::Rect()); |
| 119 quadSink.append(TextureDrawQuad::create(sharedQuadState, quadRect, opaqu
eRect, m_backTrackResourceId, premultipledAlpha, uvRect, flipped).PassAs<DrawQua
d>(), appendQuadsData); |
| 120 } |
| 114 } | 121 } |
| 115 | 122 |
| 116 void ScrollbarLayerImpl::didLoseContext() | 123 void ScrollbarLayerImpl::didLoseContext() |
| 117 { | 124 { |
| 118 m_backTrackResourceId = 0; | 125 m_backTrackResourceId = 0; |
| 119 m_foreTrackResourceId = 0; | 126 m_foreTrackResourceId = 0; |
| 120 m_thumbResourceId = 0; | 127 m_thumbResourceId = 0; |
| 121 } | 128 } |
| 122 | 129 |
| 123 bool ScrollbarLayerImpl::Scrollbar::isOverlay() const | 130 bool ScrollbarLayerImpl::Scrollbar::isOverlay() const |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 { | 206 { |
| 200 return m_owner->m_isCustomScrollbar; | 207 return m_owner->m_isCustomScrollbar; |
| 201 } | 208 } |
| 202 | 209 |
| 203 const char* ScrollbarLayerImpl::layerTypeAsString() const | 210 const char* ScrollbarLayerImpl::layerTypeAsString() const |
| 204 { | 211 { |
| 205 return "ScrollbarLayer"; | 212 return "ScrollbarLayer"; |
| 206 } | 213 } |
| 207 | 214 |
| 208 } // namespace cc | 215 } // namespace cc |
| OLD | NEW |