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

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: Moved uninvertible matrix identity-initialization into gfx::Transform 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
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 DCHECK(rootLayer->screenSpaceTransform().IsInvertible());
danakj 2013/01/04 21:56:07 This DCHECK is redundant with the DCHECK(didInvert
507 gfx::Transform transformToLayerSpace(gfx::Transform::kSkipInitialization);
508 bool didInvert = rootLayer->screenSpaceTransform().GetInverse(&transformToLa yerSpace);
509 DCHECK(didInvert);
508 for (Region::Iterator fillRects(fillRegion); fillRects.has_rect(); fillRects .next()) { 510 for (Region::Iterator fillRects(fillRegion); fillRects.has_rect(); fillRects .next()) {
509 // The root layer transform is composed of translations and scales only, 511 // The root layer transform is composed of translations and scales only,
510 // no perspective, so mapping is sufficient. 512 // no perspective, so mapping is sufficient (as opposed to projecting).
danakj 2013/01/04 21:56:07 ^_^
511 gfx::Rect layerRect = MathUtil::mapClippedRect(transformToLayerSpace, fi llRects.rect()); 513 gfx::Rect layerRect = MathUtil::mapClippedRect(transformToLayerSpace, fi llRects.rect());
512 // Skip the quad culler and just append the quads directly to avoid 514 // Skip the quad culler and just append the quads directly to avoid
513 // occlusion checks. 515 // occlusion checks.
514 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 516 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
515 quad->SetNew(sharedQuadState, layerRect, screenBackgroundColor); 517 quad->SetNew(sharedQuadState, layerRect, screenBackgroundColor);
516 quadCuller.append(quad.PassAs<DrawQuad>(), appendQuadsData); 518 quadCuller.append(quad.PassAs<DrawQuad>(), appendQuadsData);
517 } 519 }
518 } 520 }
519 521
520 bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame) 522 bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 return ScrollStarted; 1272 return ScrollStarted;
1271 } 1273 }
1272 return ScrollIgnored; 1274 return ScrollIgnored;
1273 } 1275 }
1274 1276
1275 static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewp ort, LayerImpl& layerImpl, float scaleFromViewportToScreenSpace, gfx::PointF vie wportPoint, gfx::Vector2dF viewportDelta) 1277 static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewp ort, LayerImpl& layerImpl, float scaleFromViewportToScreenSpace, gfx::PointF vie wportPoint, gfx::Vector2dF viewportDelta)
1276 { 1278 {
1277 // Layers with non-invertible screen space transforms should not have passed the scroll hit 1279 // Layers with non-invertible screen space transforms should not have passed the scroll hit
1278 // test in the first place. 1280 // test in the first place.
1279 DCHECK(layerImpl.screenSpaceTransform().IsInvertible()); 1281 DCHECK(layerImpl.screenSpaceTransform().IsInvertible());
1280 gfx::Transform inverseScreenSpaceTransform = MathUtil::inverse(layerImpl.scr eenSpaceTransform()); 1282 gfx::Transform inverseScreenSpaceTransform(gfx::Transform::kSkipInitializati on);
1283 bool didInvert = layerImpl.screenSpaceTransform().GetInverse(&inverseScreenS paceTransform);
1284 DCHECK(didInvert);
danakj 2013/01/04 21:56:07 This is going to potentially bomb when we start im
1281 1285
1282 gfx::PointF screenSpacePoint = gfx::ScalePoint(viewportPoint, scaleFromViewp ortToScreenSpace); 1286 gfx::PointF screenSpacePoint = gfx::ScalePoint(viewportPoint, scaleFromViewp ortToScreenSpace);
1283 1287
1284 gfx::Vector2dF screenSpaceDelta = viewportDelta; 1288 gfx::Vector2dF screenSpaceDelta = viewportDelta;
1285 screenSpaceDelta.Scale(scaleFromViewportToScreenSpace); 1289 screenSpaceDelta.Scale(scaleFromViewportToScreenSpace);
1286 1290
1287 // First project the scroll start and end points to local layer space to fin d the scroll delta 1291 // First project the scroll start and end points to local layer space to fin d the scroll delta
1288 // in layer coordinates. 1292 // in layer coordinates.
1289 bool startClipped, endClipped; 1293 bool startClipped, endClipped;
1290 gfx::PointF screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta; 1294 gfx::PointF screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta;
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
1718 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController(); 1722 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio nController();
1719 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); 1723 double monotonicTime = (time - base::TimeTicks()).InSecondsF();
1720 if (scrollbarController && scrollbarController->animate(monotonicTime)) 1724 if (scrollbarController && scrollbarController->animate(monotonicTime))
1721 m_client->setNeedsRedrawOnImplThread(); 1725 m_client->setNeedsRedrawOnImplThread();
1722 1726
1723 for (size_t i = 0; i < layer->children().size(); ++i) 1727 for (size_t i = 0; i < layer->children().size(); ++i)
1724 animateScrollbarsRecursive(layer->children()[i], time); 1728 animateScrollbarsRecursive(layer->children()[i], time);
1725 } 1729 }
1726 1730
1727 } // namespace cc 1731 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698