1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 tvcm.require('tracing.trace_model.object_instance');
8 tvcm.require('cc.layer_impl');
10 tvcm.exportTo('cc', function() {
11 var ObjectSnapshot = tracing.trace_model.ObjectSnapshot;
16 function LayerTreeImplSnapshot() {
17 ObjectSnapshot.apply(this, arguments);
20 LayerTreeImplSnapshot.prototype = {
21 __proto__: ObjectSnapshot.prototype,
23 preInitialize: function() {
24 cc.preInitializeObject(this);
25 this.layerTreeHostImpl = undefined;
26 this.whichTree = undefined;
29 initialize: function() {
30 cc.moveRequiredFieldsFromArgsToToplevel(
32 'renderSurfaceLayerList']);
33 this.rootLayer.layerTreeImpl = this;
36 iterLayers: function(func, thisArg) {
37 var visitedLayers = {};
38 function visitLayer(layer, depth, isMask, isReplica) {
39 if (visitedLayers[layer.layerId])
41 visitedLayers[layer.layerId] = true;
42 func.call(thisArg, layer, depth, isMask, isReplica);
43 for (var i = 0; i < layer.children.length; i++)
44 visitLayer(layer.children[i], depth + 1);
46 visitLayer(layer.maskLayer, depth + 1, true, false);
47 if (layer.replicaLayer)
48 visitLayer(layer.replicaLayer, depth + 1, false, true);
50 visitLayer(this.rootLayer, 0, false, false);
52 findLayerWithId: function(id) {
53 var foundLayer = undefined;
54 function visitLayer(layer) {
55 if (layer.layerId == id)
58 this.iterLayers(visitLayer);
63 ObjectSnapshot.register('cc::LayerTreeImpl', LayerTreeImplSnapshot);
66 LayerTreeImplSnapshot: LayerTreeImplSnapshot