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 |