Index: cc/layers/layer_proto_converter.cc |
diff --git a/cc/layers/layer_proto_converter.cc b/cc/layers/layer_proto_converter.cc |
index 2dcc3d90a441209006cffd8f9fc55a3fc6bd4610..970c446577c28cc161cfd8c5fb04c686eb8cf0c7 100644 |
--- a/cc/layers/layer_proto_converter.cc |
+++ b/cc/layers/layer_proto_converter.cc |
@@ -42,6 +42,48 @@ scoped_refptr<Layer> LayerProtoConverter::DeserializeLayerHierarchy( |
} |
// static |
+void LayerProtoConverter::SerializeLayerProperties( |
+ const scoped_refptr<Layer> root_layer, |
+ proto::LayerUpdate* layer_update) { |
+ RecursivelySerializeLayerProperties(root_layer, layer_update); |
+} |
+ |
+// static |
+void LayerProtoConverter::DeserializeLayerProperties( |
+ scoped_refptr<Layer> existing_root, |
vmpstr
2015/11/18 04:05:25
Can you pass a raw pointer here instead?
nyquist
2015/11/18 07:15:59
Done.
|
+ const proto::LayerUpdate& layer_update) { |
+ LayerIdMap layer_id_map; |
+ RecursivelyFindAllLayers(existing_root, &layer_id_map); |
+ |
+ for (int i = 0; i < layer_update.layers_size(); ++i) { |
+ const proto::LayerProperties& layer_properties = layer_update.layers(i); |
+ |
+ Layer::LayerIdMap::const_iterator iter = |
+ layer_id_map.find(layer_properties.id()); |
+ DCHECK(iter != layer_id_map.end()); |
+ |
+ iter->second->FromLayerPropertiesProto(layer_properties); |
+ } |
+} |
+ |
+// static |
+void LayerProtoConverter::RecursivelySerializeLayerProperties( |
+ const scoped_refptr<Layer> layer, |
+ proto::LayerUpdate* layer_update) { |
+ bool serialize_descendants = layer->ToLayerPropertiesProto(layer_update); |
+ if (!serialize_descendants) |
vmpstr
2015/11/18 04:05:25
Are mask/replica considered descendants? That is,
nyquist
2015/11/18 07:15:59
According to Layer::SetMaskLayer(...) ( https://ch
|
+ return; |
+ |
+ for (const auto& child : layer->children()) { |
+ RecursivelySerializeLayerProperties(child, layer_update); |
+ } |
+ if (layer->mask_layer()) |
+ RecursivelySerializeLayerProperties(layer->mask_layer(), layer_update); |
+ if (layer->replica_layer()) |
+ RecursivelySerializeLayerProperties(layer->replica_layer(), layer_update); |
+} |
+ |
+// static |
void LayerProtoConverter::RecursivelyFindAllLayers( |
const scoped_refptr<Layer>& layer, |
LayerIdMap* layer_id_map) { |