| 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/trees/occlusion_tracker.h" | 5 #include "cc/trees/occlusion_tracker.h" |
| 6 | 6 |
| 7 #include "cc/animation/layer_animation_controller.h" | 7 #include "cc/animation/layer_animation_controller.h" |
| 8 #include "cc/base/math_util.h" | 8 #include "cc/base/math_util.h" |
| 9 #include "cc/debug/overdraw_metrics.h" | 9 #include "cc/debug/overdraw_metrics.h" |
| 10 #include "cc/layers/layer.h" | 10 #include "cc/layers/layer.h" |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 Types::DestroyLayer(&root_); | 193 Types::DestroyLayer(&root_); |
| 194 render_surface_layer_list_.reset(); | 194 render_surface_layer_list_.reset(); |
| 195 render_surface_layer_list_impl_.clear(); | 195 render_surface_layer_list_impl_.clear(); |
| 196 replica_layers_.clear(); | 196 replica_layers_.clear(); |
| 197 mask_layers_.clear(); | 197 mask_layers_.clear(); |
| 198 } | 198 } |
| 199 | 199 |
| 200 typename Types::HostType* GetHost(); | 200 typename Types::HostType* GetHost(); |
| 201 | 201 |
| 202 typename Types::ContentLayerType* CreateRoot(const gfx::Transform& transform, | 202 typename Types::ContentLayerType* CreateRoot(const gfx::Transform& transform, |
| 203 gfx::PointF position, | 203 const gfx::PointF& position, |
| 204 gfx::Size bounds) { | 204 gfx::Size bounds) { |
| 205 typename Types::ContentLayerPtrType layer( | 205 typename Types::ContentLayerPtrType layer( |
| 206 Types::CreateContentLayer(GetHost())); | 206 Types::CreateContentLayer(GetHost())); |
| 207 typename Types::ContentLayerType* layer_ptr = layer.get(); | 207 typename Types::ContentLayerType* layer_ptr = layer.get(); |
| 208 SetProperties(layer_ptr, transform, position, bounds); | 208 SetProperties(layer_ptr, transform, position, bounds); |
| 209 | 209 |
| 210 DCHECK(!root_.get()); | 210 DCHECK(!root_.get()); |
| 211 root_ = Types::PassLayerPtr(&layer); | 211 root_ = Types::PassLayerPtr(&layer); |
| 212 | 212 |
| 213 SetRootLayerOnMainThread(layer_ptr); | 213 SetRootLayerOnMainThread(layer_ptr); |
| 214 | 214 |
| 215 return layer_ptr; | 215 return layer_ptr; |
| 216 } | 216 } |
| 217 | 217 |
| 218 typename Types::LayerType* CreateLayer(typename Types::LayerType* parent, | 218 typename Types::LayerType* CreateLayer(typename Types::LayerType* parent, |
| 219 const gfx::Transform& transform, | 219 const gfx::Transform& transform, |
| 220 gfx::PointF position, | 220 const gfx::PointF& position, |
| 221 gfx::Size bounds) { | 221 gfx::Size bounds) { |
| 222 typename Types::LayerPtrType layer(Types::CreateLayer(GetHost())); | 222 typename Types::LayerPtrType layer(Types::CreateLayer(GetHost())); |
| 223 typename Types::LayerType* layer_ptr = layer.get(); | 223 typename Types::LayerType* layer_ptr = layer.get(); |
| 224 SetProperties(layer_ptr, transform, position, bounds); | 224 SetProperties(layer_ptr, transform, position, bounds); |
| 225 parent->AddChild(Types::PassLayerPtr(&layer)); | 225 parent->AddChild(Types::PassLayerPtr(&layer)); |
| 226 return layer_ptr; | 226 return layer_ptr; |
| 227 } | 227 } |
| 228 | 228 |
| 229 typename Types::LayerType* CreateSurface(typename Types::LayerType* parent, | 229 typename Types::LayerType* CreateSurface(typename Types::LayerType* parent, |
| 230 const gfx::Transform& transform, | 230 const gfx::Transform& transform, |
| 231 gfx::PointF position, | 231 const gfx::PointF& position, |
| 232 gfx::Size bounds) { | 232 gfx::Size bounds) { |
| 233 typename Types::LayerType* layer = | 233 typename Types::LayerType* layer = |
| 234 CreateLayer(parent, transform, position, bounds); | 234 CreateLayer(parent, transform, position, bounds); |
| 235 layer->SetForceRenderSurface(true); | 235 layer->SetForceRenderSurface(true); |
| 236 return layer; | 236 return layer; |
| 237 } | 237 } |
| 238 | 238 |
| 239 typename Types::ContentLayerType* CreateDrawingLayer( | 239 typename Types::ContentLayerType* CreateDrawingLayer( |
| 240 typename Types::LayerType* parent, | 240 typename Types::LayerType* parent, |
| 241 const gfx::Transform& transform, | 241 const gfx::Transform& transform, |
| 242 gfx::PointF position, | 242 const gfx::PointF& position, |
| 243 gfx::Size bounds, | 243 gfx::Size bounds, |
| 244 bool opaque) { | 244 bool opaque) { |
| 245 typename Types::ContentLayerPtrType layer( | 245 typename Types::ContentLayerPtrType layer( |
| 246 Types::CreateContentLayer(GetHost())); | 246 Types::CreateContentLayer(GetHost())); |
| 247 typename Types::ContentLayerType* layer_ptr = layer.get(); | 247 typename Types::ContentLayerType* layer_ptr = layer.get(); |
| 248 SetProperties(layer_ptr, transform, position, bounds); | 248 SetProperties(layer_ptr, transform, position, bounds); |
| 249 | 249 |
| 250 if (opaque_layers_) { | 250 if (opaque_layers_) { |
| 251 layer_ptr->SetContentsOpaque(opaque); | 251 layer_ptr->SetContentsOpaque(opaque); |
| 252 } else { | 252 } else { |
| 253 layer_ptr->SetContentsOpaque(false); | 253 layer_ptr->SetContentsOpaque(false); |
| 254 if (opaque) | 254 if (opaque) |
| 255 layer_ptr->SetOpaqueContentsRect(gfx::Rect(bounds)); | 255 layer_ptr->SetOpaqueContentsRect(gfx::Rect(bounds)); |
| 256 else | 256 else |
| 257 layer_ptr->SetOpaqueContentsRect(gfx::Rect()); | 257 layer_ptr->SetOpaqueContentsRect(gfx::Rect()); |
| 258 } | 258 } |
| 259 | 259 |
| 260 parent->AddChild(Types::PassLayerPtr(&layer)); | 260 parent->AddChild(Types::PassLayerPtr(&layer)); |
| 261 return layer_ptr; | 261 return layer_ptr; |
| 262 } | 262 } |
| 263 | 263 |
| 264 typename Types::LayerType* CreateReplicaLayer( | 264 typename Types::LayerType* CreateReplicaLayer( |
| 265 typename Types::LayerType* owning_layer, | 265 typename Types::LayerType* owning_layer, |
| 266 const gfx::Transform& transform, | 266 const gfx::Transform& transform, |
| 267 gfx::PointF position, | 267 const gfx::PointF& position, |
| 268 gfx::Size bounds) { | 268 gfx::Size bounds) { |
| 269 typename Types::ContentLayerPtrType layer( | 269 typename Types::ContentLayerPtrType layer( |
| 270 Types::CreateContentLayer(GetHost())); | 270 Types::CreateContentLayer(GetHost())); |
| 271 typename Types::ContentLayerType* layer_ptr = layer.get(); | 271 typename Types::ContentLayerType* layer_ptr = layer.get(); |
| 272 SetProperties(layer_ptr, transform, position, bounds); | 272 SetProperties(layer_ptr, transform, position, bounds); |
| 273 SetReplica(owning_layer, Types::PassLayerPtr(&layer)); | 273 SetReplica(owning_layer, Types::PassLayerPtr(&layer)); |
| 274 return layer_ptr; | 274 return layer_ptr; |
| 275 } | 275 } |
| 276 | 276 |
| 277 typename Types::LayerType* CreateMaskLayer( | 277 typename Types::LayerType* CreateMaskLayer( |
| 278 typename Types::LayerType* owning_layer, | 278 typename Types::LayerType* owning_layer, |
| 279 gfx::Size bounds) { | 279 gfx::Size bounds) { |
| 280 typename Types::ContentLayerPtrType layer( | 280 typename Types::ContentLayerPtrType layer( |
| 281 Types::CreateContentLayer(GetHost())); | 281 Types::CreateContentLayer(GetHost())); |
| 282 typename Types::ContentLayerType* layer_ptr = layer.get(); | 282 typename Types::ContentLayerType* layer_ptr = layer.get(); |
| 283 SetProperties(layer_ptr, identity_matrix, gfx::PointF(), bounds); | 283 SetProperties(layer_ptr, identity_matrix, gfx::PointF(), bounds); |
| 284 SetMask(owning_layer, Types::PassLayerPtr(&layer)); | 284 SetMask(owning_layer, Types::PassLayerPtr(&layer)); |
| 285 return layer_ptr; | 285 return layer_ptr; |
| 286 } | 286 } |
| 287 | 287 |
| 288 typename Types::ContentLayerType* CreateDrawingSurface( | 288 typename Types::ContentLayerType* CreateDrawingSurface( |
| 289 typename Types::LayerType* parent, | 289 typename Types::LayerType* parent, |
| 290 const gfx::Transform& transform, | 290 const gfx::Transform& transform, |
| 291 gfx::PointF position, | 291 const gfx::PointF& position, |
| 292 gfx::Size bounds, | 292 gfx::Size bounds, |
| 293 bool opaque) { | 293 bool opaque) { |
| 294 typename Types::ContentLayerType* layer = | 294 typename Types::ContentLayerType* layer = |
| 295 CreateDrawingLayer(parent, transform, position, bounds, opaque); | 295 CreateDrawingLayer(parent, transform, position, bounds, opaque); |
| 296 layer->SetForceRenderSurface(true); | 296 layer->SetForceRenderSurface(true); |
| 297 return layer; | 297 return layer; |
| 298 } | 298 } |
| 299 | 299 |
| 300 | 300 |
| 301 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {} | 301 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {} |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 | 406 |
| 407 private: | 407 private: |
| 408 void SetRootLayerOnMainThread(Layer* root) { | 408 void SetRootLayerOnMainThread(Layer* root) { |
| 409 host_->SetRootLayer(scoped_refptr<Layer>(root)); | 409 host_->SetRootLayer(scoped_refptr<Layer>(root)); |
| 410 } | 410 } |
| 411 | 411 |
| 412 void SetRootLayerOnMainThread(LayerImpl* root) {} | 412 void SetRootLayerOnMainThread(LayerImpl* root) {} |
| 413 | 413 |
| 414 void SetBaseProperties(typename Types::LayerType* layer, | 414 void SetBaseProperties(typename Types::LayerType* layer, |
| 415 const gfx::Transform& transform, | 415 const gfx::Transform& transform, |
| 416 gfx::PointF position, | 416 const gfx::PointF& position, |
| 417 gfx::Size bounds) { | 417 gfx::Size bounds) { |
| 418 layer->SetTransform(transform); | 418 layer->SetTransform(transform); |
| 419 layer->SetSublayerTransform(gfx::Transform()); | 419 layer->SetSublayerTransform(gfx::Transform()); |
| 420 layer->SetAnchorPoint(gfx::PointF()); | 420 layer->SetAnchorPoint(gfx::PointF()); |
| 421 layer->SetPosition(position); | 421 layer->SetPosition(position); |
| 422 layer->SetBounds(bounds); | 422 layer->SetBounds(bounds); |
| 423 } | 423 } |
| 424 | 424 |
| 425 void SetProperties(Layer* layer, | 425 void SetProperties(Layer* layer, |
| 426 const gfx::Transform& transform, | 426 const gfx::Transform& transform, |
| 427 gfx::PointF position, | 427 const gfx::PointF& position, |
| 428 gfx::Size bounds) { | 428 gfx::Size bounds) { |
| 429 SetBaseProperties(layer, transform, position, bounds); | 429 SetBaseProperties(layer, transform, position, bounds); |
| 430 } | 430 } |
| 431 | 431 |
| 432 void SetProperties(LayerImpl* layer, | 432 void SetProperties(LayerImpl* layer, |
| 433 const gfx::Transform& transform, | 433 const gfx::Transform& transform, |
| 434 gfx::PointF position, | 434 const gfx::PointF& position, |
| 435 gfx::Size bounds) { | 435 gfx::Size bounds) { |
| 436 SetBaseProperties(layer, transform, position, bounds); | 436 SetBaseProperties(layer, transform, position, bounds); |
| 437 | 437 |
| 438 layer->SetContentBounds(layer->bounds()); | 438 layer->SetContentBounds(layer->bounds()); |
| 439 } | 439 } |
| 440 | 440 |
| 441 void SetReplica(Layer* owning_layer, scoped_refptr<Layer> layer) { | 441 void SetReplica(Layer* owning_layer, scoped_refptr<Layer> layer) { |
| 442 owning_layer->SetReplicaLayer(layer.get()); | 442 owning_layer->SetReplicaLayer(layer.get()); |
| 443 replica_layers_.push_back(layer); | 443 replica_layers_.push_back(layer); |
| 444 } | 444 } |
| (...skipping 3368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3813 occlusion.occlusion_from_outside_target().ToString()); | 3813 occlusion.occlusion_from_outside_target().ToString()); |
| 3814 EXPECT_EQ(gfx::Rect().ToString(), | 3814 EXPECT_EQ(gfx::Rect().ToString(), |
| 3815 occlusion.occlusion_from_inside_target().ToString()); | 3815 occlusion.occlusion_from_inside_target().ToString()); |
| 3816 } | 3816 } |
| 3817 }; | 3817 }; |
| 3818 | 3818 |
| 3819 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestEmptyEventLayerDoesNotOcclude) | 3819 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestEmptyEventLayerDoesNotOcclude) |
| 3820 | 3820 |
| 3821 } // namespace | 3821 } // namespace |
| 3822 } // namespace cc | 3822 } // namespace cc |
| OLD | NEW |