diff options
Diffstat (limited to 'cc/proto/property_tree.proto')
-rw-r--r-- | cc/proto/property_tree.proto | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/cc/proto/property_tree.proto b/cc/proto/property_tree.proto new file mode 100644 index 0000000..6bf2a7f --- /dev/null +++ b/cc/proto/property_tree.proto @@ -0,0 +1,148 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +syntax = "proto2"; + +import "rectf.proto"; +import "scroll_offset.proto"; +import "transform.proto"; +import "vector2df.proto"; + +option optimize_for = LITE_RUNTIME; + +package cc.proto; + +// The messages declared in this file correspond to the classes declared in +// cc/trees/property_tree.h + +// Proto for struct TransformNodeData. +message TranformNodeData { + optional Transform pre_local = 1; + optional Transform local = 2; + optional Transform post_local = 3; + optional Transform to_parent = 4; + optional Transform to_target = 5; + optional Transform from_target = 6; + optional Transform to_screen = 7; + optional Transform from_screen = 8; + + optional int64 target_id = 9; + optional int64 content_target_id = 10; + optional int64 source_node_id = 11; + optional bool needs_local_transform_update = 12; + optional bool is_invertible = 13; + optional bool ancestors_are_invertible = 14; + optional bool is_animated = 15; + optional bool to_screen_is_animated = 16; + optional bool has_only_translation_animations = 17; + optional bool to_screen_has_scale_animation = 18; + optional bool flattens_inherited_transform = 19; + optional bool node_and_ancestors_are_flat = 20; + optional bool node_and_ancestors_have_only_integer_translation = 21; + optional bool scrolls = 22; + optional bool needs_sublayer_scale = 23; + optional bool affected_by_inner_viewport_bounds_delta_x = 24; + optional bool affected_by_inner_viewport_bounds_delta_y = 25; + optional bool affected_by_outer_viewport_bounds_delta_x = 26; + optional bool affected_by_outer_viewport_bounds_delta_y = 27; + optional bool in_subtree_of_page_scale_layer = 28; + optional float post_local_scale_factor = 29; + optional float local_maximum_animation_target_scale = 30; + optional float local_starting_animation_scale = 31; + optional float combined_maximum_animation_target_scale = 32; + optional float combined_starting_animation_scale = 33; + + optional Vector2dF sublayer_scale = 34; + optional ScrollOffset scroll_offset = 35; + optional Vector2dF scroll_snap = 36; + optional Vector2dF source_offset = 37; + optional Vector2dF source_to_parent = 38; +} + +// Proto for struct ClipNodeData. +message ClipNodeData { + optional RectF clip = 1; + optional RectF combined_clip_in_target_space = 2; + optional RectF clip_in_target_space = 3; + + optional int64 transform_id = 4; + optional int64 target_id = 5; + optional bool applies_local_clip = 6; + optional bool layer_clipping_uses_only_local_clip = 7; + optional bool target_is_clipped = 8; + optional bool layers_are_clipped = 9; + optional bool layers_are_clipped_when_surfaces_disabled = 10; + optional bool resets_clip = 11; +} + +// Proto for struct EffectNodeData. +message EffectNodeData { + optional float opacity = 1; + optional float screen_space_opacity = 2; + optional bool has_render_surface = 3; + optional int64 transform_id = 4; + optional int64 clip_id = 5; +} + +// This defines the proto used for all types of struct TreeNode. +message TreeNode { + // The following fields are the base TreeNode properties. This list + // corresponds to the data members from struct TreeNode. + optional int64 id = 1; + optional int64 parent_id = 2; + optional int64 owner_id = 3; + + // The following fields correspond to the possible values for TreeNode::data. + // Only one of these fields should be set, based on the type of property tree + // this node belongs to. + optional TranformNodeData transform_node_data = 1000; + optional ClipNodeData clip_node_data = 1001; + optional EffectNodeData effect_node_data = 1002; +} + +// This defines the proto used for all property trees. PropertyType denotes the +// type of this tree. +message PropertyTree { + enum PropertyType { + Transform = 1; + Clip = 2; + Effect = 3; + } + + // The following fields are the base PropertyTree properties. This list + // corresponds to the data members from class PropertyTree. + optional PropertyType property_type = 1; + repeated TreeNode nodes = 2; + optional bool needs_update = 3; + + // The following fields denote the data members for each subclass of + // PropertyTree. Only one of these fields should be set, depending on the type + // of this property tree. + optional TransformTreeData transform_tree_data = 1000; +} + +// Proto for data members of class TransformTree. +message TransformTreeData { + optional bool source_to_parent_updates_allowed = 1; + optional float page_scale_factor = 2; + optional float device_scale_factor = 3; + optional float device_transform_scale_factor = 4; + optional Vector2dF inner_viewport_bounds_delta = 5; + optional Vector2dF outer_viewport_bounds_delta = 6; + repeated int64 nodes_affected_by_inner_viewport_bounds_delta = 7 + [packed = true]; + repeated int64 nodes_affected_by_outer_viewport_bounds_delta = 8 + [packed = true]; +} + +// Proto for class PropertyTrees. +message PropertyTrees { + optional PropertyTree transform_tree = 1; + optional PropertyTree effect_tree = 2; + optional PropertyTree clip_tree = 3; + + optional bool needs_rebuild = 4; + optional bool non_root_surfaces_enabled = 5; + optional int64 sequence_number = 6; +}
\ No newline at end of file |