166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model.object_instance'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('cc.layer_impl'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.exportTo('cc', function() { 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var ObjectSnapshot = tracing.trace_model.ObjectSnapshot; 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis /** 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis * @constructor 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis */ 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis function LayerTreeImplSnapshot() { 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshot.apply(this, arguments); 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis LayerTreeImplSnapshot.prototype = { 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis __proto__: ObjectSnapshot.prototype, 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis preInitialize: function() { 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis cc.preInitializeObject(this); 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.layerTreeHostImpl = undefined; 2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.whichTree = undefined; 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis initialize: function() { 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis cc.moveRequiredFieldsFromArgsToToplevel( 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this, ['rootLayer', 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 'renderSurfaceLayerList']); 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.rootLayer.layerTreeImpl = this; 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis iterLayers: function(func) { 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis function visitLayer(layer, depth, isMask, isReplica) { 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis func(layer, depth, isMask, isReplica); 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis for (var i = 0; i < layer.children.length; i++) 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis visitLayer(layer.children[i], depth + 1); 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis if (layer.maskLayer) 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis visitLayer(layer, depth + 1, true, false); 4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis if (layer.replicaLayer) 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis visitLayer(layer, depth + 1, false, true); 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis visitLayer(this.rootLayer, 0, false, false); 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis findLayerWithId: function(id) { 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var foundLayer = undefined; 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis function visitLayer(layer) { 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis if (layer.layerId == id) 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis foundLayer = layer; 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.iterLayers(visitLayer); 5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return foundLayer; 5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshot.register('cc::LayerTreeImpl', LayerTreeImplSnapshot); 6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return { 6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis LayerTreeImplSnapshot: LayerTreeImplSnapshot 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 65