Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(680)

Side by Side Diff: cc/layer_tree_host_impl.cc

Issue 11644008: Migrate from MathUtil::inverse() to gfx::Transform::GetInverse() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch for landing Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/layer_tree_host_common_unittest.cc ('k') | cc/math_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 targetRenderPass->shared_quad_state_list, 484 targetRenderPass->shared_quad_state_list,
485 rootLayer, 485 rootLayer,
486 occlusionTracker, 486 occlusionTracker,
487 rootLayer->showDebugBorders(), 487 rootLayer->showDebugBorders(),
488 forSurface); 488 forSurface);
489 489
490 // Manually create the quad state for the gutter quads, as the root layer 490 // Manually create the quad state for the gutter quads, as the root layer
491 // doesn't have any bounds and so can't generate this itself. 491 // doesn't have any bounds and so can't generate this itself.
492 // FIXME: Make the gutter quads generated by the solid color layer (make it smarter about generating quads to fill unoccluded areas). 492 // FIXME: Make the gutter quads generated by the solid color layer (make it smarter about generating quads to fill unoccluded areas).
493 493
494 DCHECK(rootLayer->screenSpaceTransform().IsInvertible());
495
496 gfx::Rect rootTargetRect = rootLayer->renderSurface()->contentRect(); 494 gfx::Rect rootTargetRect = rootLayer->renderSurface()->contentRect();
497 float opacity = 1; 495 float opacity = 1;
498 SharedQuadState* sharedQuadState = quadCuller.useSharedQuadState(SharedQuadS tate::Create()); 496 SharedQuadState* sharedQuadState = quadCuller.useSharedQuadState(SharedQuadS tate::Create());
499 sharedQuadState->SetAll(rootLayer->drawTransform(), 497 sharedQuadState->SetAll(rootLayer->drawTransform(),
500 rootTargetRect, 498 rootTargetRect,
501 rootTargetRect, 499 rootTargetRect,
502 rootTargetRect, 500 rootTargetRect,
503 false, 501 false,
504 opacity); 502 opacity);
505 503
506 AppendQuadsData appendQuadsData; 504 AppendQuadsData appendQuadsData;
507 gfx::Transform transformToLayerSpace = MathUtil::inverse(rootLayer->screenSp aceTransform()); 505
506 gfx::Transform transformToLayerSpace(gfx::Transform::kSkipInitialization);
507 bool didInvert = rootLayer->screenSpaceTransform().GetInverse(&transformToLa yerSpace);
508 DCHECK(didInvert);
508 for (Region::Iterator fillRects(fillRegion); fillRects.has_rect(); fillRects .next()) { 509 for (Region::Iterator fillRects(fillRegion); fillRects.has_rect(); fillRects .next()) {
509 // The root layer transform is composed of translations and scales only, 510 // The root layer transform is composed of translations and scales only,
510 // no perspective, so mapping is sufficient. 511 // no perspective, so mapping is sufficient (as opposed to projecting).
511 gfx::Rect layerRect = MathUtil::mapClippedRect(transformToLayerSpace, fi llRects.rect()); 512 gfx::Rect layerRect = MathUtil::mapClippedRect(transformToLayerSpace, fi llRects.rect());
512 // Skip the quad culler and just append the quads directly to avoid 513 // Skip the quad culler and just append the quads directly to avoid
513 // occlusion checks. 514 // occlusion checks.
514 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 515 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
515 quad->SetNew(sharedQuadState, layerRect, screenBackgroundColor); 516 quad->SetNew(sharedQuadState, layerRect, screenBackgroundColor);
516 quadCuller.append(quad.PassAs<DrawQuad>(), appendQuadsData); 517 quadCuller.append(quad.PassAs<DrawQuad>(), appendQuadsData);
517 } 518 }
518 } 519 }
519 520
520 bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame) 521 bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 return ScrollStarted; 1271 return ScrollStarted;
1271 } 1272 }
1272 return ScrollIgnored; 1273 return ScrollIgnored;
1273 } 1274 }
1274 1275
1275 static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewp ort, LayerImpl& layerImpl, float scaleFromViewportToScreenSpace, gfx::PointF vie wportPoint, gfx::Vector2dF viewportDelta) 1276 static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewp ort, LayerImpl& layerImpl, float scaleFromViewportToScreenSpace, gfx::PointF vie wportPoint, gfx::Vector2dF viewportDelta)
1276 { 1277 {
1277 // Layers with non-invertible screen space transforms should not have passed the scroll hit 1278 // Layers with non-invertible screen space transforms should not have passed the scroll hit
1278 // test in the first place. 1279 // test in the first place.
1279 DCHECK(layerImpl.screenSpaceTransform().IsInvertible()); 1280 DCHECK(layerImpl.screenSpaceTransform().IsInvertible());
1280 gfx::Transform inverseScreenSpaceTransform = MathUtil::inverse(layerImpl.scr eenSpaceTransform()); 1281 gfx::Transform inverseScreenSpaceTransform(gfx::Transform::kSkipInitializati on);
1282 bool didInvert = layerImpl.screenSpaceTransform().GetInverse(&inverseScreenS paceTransform);
1283 // TODO: With the advent of impl-side crolling for non-root layers, we may
1284 // need to explicitly handle uninvertible transforms here.
1285 DCHECK(didInvert);
1281 1286
1282 gfx::PointF screenSpacePoint = gfx::ScalePoint(viewportPoint, scaleFromViewp ortToScreenSpace); 1287 gfx::PointF screenSpacePoint = gfx::ScalePoint(viewportPoint, scaleFromViewp ortToScreenSpace);
1283 1288
1284 gfx::Vector2dF screenSpaceDelta = viewportDelta; 1289 gfx::Vector2dF screenSpaceDelta = viewportDelta;
1285 screenSpaceDelta.Scale(scaleFromViewportToScreenSpace); 1290 screenSpaceDelta.Scale(scaleFromViewportToScreenSpace);
1286 1291
1287 // First project the scroll start and end points to local layer space to fin d the scroll delta 1292 // First project the scroll start and end points to local layer space to fin d the scroll delta
1288 // in layer coordinates. 1293 // in layer coordinates.
1289 bool startClipped, endClipped; 1294 bool startClipped, endClipped;
1290 gfx::PointF screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta; 1295 gfx::PointF screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta;
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
1718 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController(); 1723 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController();
1719 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); 1724 double monotonicTime = (time - base::TimeTicks()).InSecondsF();
1720 if (scrollbarController && scrollbarController->animate(monotonicTime)) 1725 if (scrollbarController && scrollbarController->animate(monotonicTime))
1721 m_client->setNeedsRedrawOnImplThread(); 1726 m_client->setNeedsRedrawOnImplThread();
1722 1727
1723 for (size_t i = 0; i < layer->children().size(); ++i) 1728 for (size_t i = 0; i < layer->children().size(); ++i)
1724 animateScrollbarsRecursive(layer->children()[i], time); 1729 animateScrollbarsRecursive(layer->children()[i], time);
1725 } 1730 }
1726 1731
1727 } // namespace cc 1732 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer_tree_host_common_unittest.cc ('k') | cc/math_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698