OLD | NEW |
---|---|
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/layer_tree_host_impl.h" | 5 #include "cc/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
491 float opacity = 1; | 491 float opacity = 1; |
492 SharedQuadState* sharedQuadState = quadCuller.useSharedQuadState(SharedQuadS tate::Create()); | 492 SharedQuadState* sharedQuadState = quadCuller.useSharedQuadState(SharedQuadS tate::Create()); |
493 sharedQuadState->SetAll(rootLayer->drawTransform(), | 493 sharedQuadState->SetAll(rootLayer->drawTransform(), |
494 rootTargetRect, | 494 rootTargetRect, |
495 rootTargetRect, | 495 rootTargetRect, |
496 rootTargetRect, | 496 rootTargetRect, |
497 false, | 497 false, |
498 opacity); | 498 opacity); |
499 | 499 |
500 AppendQuadsData appendQuadsData; | 500 AppendQuadsData appendQuadsData; |
501 gfx::Transform transformToLayerSpace = MathUtil::inverse(rootLayer->screenSp aceTransform()); | 501 gfx::Transform transformToLayerSpace(gfx::Transform::kSkipInitialization); |
502 rootLayer->screenSpaceTransform().GetInverse(&transformToLayerSpace); | |
danakj
2012/12/19 05:23:06
You can DCHECK the return value here instead of Is
| |
502 for (Region::Iterator fillRects(fillRegion); fillRects.has_rect(); fillRects .next()) { | 503 for (Region::Iterator fillRects(fillRegion); fillRects.has_rect(); fillRects .next()) { |
503 // The root layer transform is composed of translations and scales only, | 504 // The root layer transform is composed of translations and scales only, |
504 // no perspective, so mapping is sufficient. | 505 // no perspective, so mapping is sufficient. |
505 gfx::Rect layerRect = MathUtil::mapClippedRect(transformToLayerSpace, fi llRects.rect()); | 506 gfx::Rect layerRect = MathUtil::mapClippedRect(transformToLayerSpace, fi llRects.rect()); |
506 // Skip the quad culler and just append the quads directly to avoid | 507 // Skip the quad culler and just append the quads directly to avoid |
507 // occlusion checks. | 508 // occlusion checks. |
508 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); | 509 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); |
509 quad->SetNew(sharedQuadState, layerRect, screenBackgroundColor); | 510 quad->SetNew(sharedQuadState, layerRect, screenBackgroundColor); |
510 quadCuller.append(quad.PassAs<DrawQuad>(), appendQuadsData); | 511 quadCuller.append(quad.PassAs<DrawQuad>(), appendQuadsData); |
511 } | 512 } |
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1301 return ScrollStarted; | 1302 return ScrollStarted; |
1302 } | 1303 } |
1303 return ScrollIgnored; | 1304 return ScrollIgnored; |
1304 } | 1305 } |
1305 | 1306 |
1306 static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewp ort, LayerImpl& layerImpl, float scaleFromViewportToScreenSpace, gfx::PointF vie wportPoint, gfx::Vector2dF viewportDelta) | 1307 static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewp ort, LayerImpl& layerImpl, float scaleFromViewportToScreenSpace, gfx::PointF vie wportPoint, gfx::Vector2dF viewportDelta) |
1307 { | 1308 { |
1308 // Layers with non-invertible screen space transforms should not have passed the scroll hit | 1309 // Layers with non-invertible screen space transforms should not have passed the scroll hit |
1309 // test in the first place. | 1310 // test in the first place. |
1310 DCHECK(layerImpl.screenSpaceTransform().IsInvertible()); | 1311 DCHECK(layerImpl.screenSpaceTransform().IsInvertible()); |
1311 gfx::Transform inverseScreenSpaceTransform = MathUtil::inverse(layerImpl.scr eenSpaceTransform()); | 1312 gfx::Transform inverseScreenSpaceTransform(gfx::Transform::kSkipInitializati on); |
1313 layerImpl.screenSpaceTransform().GetInverse(&inverseScreenSpaceTransform); | |
danakj
2012/12/19 05:23:06
Can DCHECK here instead of IsInvertible also.
| |
1312 | 1314 |
1313 gfx::PointF screenSpacePoint = gfx::ScalePoint(viewportPoint, scaleFromViewp ortToScreenSpace); | 1315 gfx::PointF screenSpacePoint = gfx::ScalePoint(viewportPoint, scaleFromViewp ortToScreenSpace); |
1314 | 1316 |
1315 gfx::Vector2dF screenSpaceDelta = viewportDelta; | 1317 gfx::Vector2dF screenSpaceDelta = viewportDelta; |
1316 screenSpaceDelta.Scale(scaleFromViewportToScreenSpace); | 1318 screenSpaceDelta.Scale(scaleFromViewportToScreenSpace); |
1317 | 1319 |
1318 // First project the scroll start and end points to local layer space to fin d the scroll delta | 1320 // First project the scroll start and end points to local layer space to fin d the scroll delta |
1319 // in layer coordinates. | 1321 // in layer coordinates. |
1320 bool startClipped, endClipped; | 1322 bool startClipped, endClipped; |
1321 gfx::PointF screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta; | 1323 gfx::PointF screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta; |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1757 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController(); | 1759 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController(); |
1758 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1760 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
1759 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1761 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
1760 m_client->setNeedsRedrawOnImplThread(); | 1762 m_client->setNeedsRedrawOnImplThread(); |
1761 | 1763 |
1762 for (size_t i = 0; i < layer->children().size(); ++i) | 1764 for (size_t i = 0; i < layer->children().size(); ++i) |
1763 animateScrollbarsRecursive(layer->children()[i], time); | 1765 animateScrollbarsRecursive(layer->children()[i], time); |
1764 } | 1766 } |
1765 | 1767 |
1766 } // namespace cc | 1768 } // namespace cc |
OLD | NEW |