Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3553)

Unified Diff: cc/trees/property_tree.cc

Issue 2180223005: cc : Split TransformTree::ComputeTransform (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/property_tree.cc
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index 29ac85b1c4c06cefa91c436e9259b00751fc57f6..12e42508beb4fbf3146215d675ecbebf7ff48e3f 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -151,12 +151,22 @@ bool TransformTree::ComputeTransform(int source_id,
return true;
if (source_id > dest_id) {
- return CombineTransformsBetween(source_id, dest_id, transform);
+ CombineTransformsBetween(source_id, dest_id, transform);
+ return true;
}
return CombineInversesBetween(source_id, dest_id, transform);
}
+bool TransformTree::ComputeTranslation(int source_id,
+ int dest_id,
+ gfx::Transform* transform) const {
+ bool success = ComputeTransform(source_id, dest_id, transform);
+ DCHECK(
+ transform->IsApproximatelyIdentityOrTranslation(SkDoubleToMScalar(1e-4)));
jaydasika 2016/07/28 02:18:04 Had to change this as some browser tests are faili
+ return success;
+}
+
bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) {
return (source_to_parent_updates_allowed() &&
node->parent_id != node->source_node_id);
@@ -198,7 +208,7 @@ bool TransformTree::IsDescendant(int desc_id, int source_id) const {
return true;
}
-bool TransformTree::CombineTransformsBetween(int source_id,
+void TransformTree::CombineTransformsBetween(int source_id,
int dest_id,
gfx::Transform* transform) const {
DCHECK(source_id > dest_id);
@@ -219,7 +229,7 @@ bool TransformTree::CombineTransformsBetween(int source_id,
transform->ConcatTransform(ToScreen(current->id));
if (dest)
transform->ConcatTransform(FromScreen(dest->id));
- return true;
+ return;
}
// Flattening is defined in a way that requires it to be applied while
@@ -290,7 +300,6 @@ bool TransformTree::CombineTransformsBetween(int source_id,
}
transform->ConcatTransform(combined_transform);
- return true;
}
bool TransformTree::CombineInversesBetween(int source_id,
@@ -327,7 +336,7 @@ void TransformTree::UpdateLocalTransform(TransformNode* node) {
gfx::Transform transform = node->post_local;
if (NeedsSourceToParentUpdate(node)) {
gfx::Transform to_parent;
- ComputeTransform(node->source_node_id, node->parent_id, &to_parent);
+ ComputeTranslation(node->source_node_id, node->parent_id, &to_parent);
node->source_to_parent = to_parent.To2dTranslation();
}
@@ -1961,29 +1970,44 @@ bool PropertyTrees::ComputeTransformToTarget(int transform_id,
gfx::Transform* transform) const {
transform->MakeIdentity();
- int destination_transform_id;
+ int target_transform_id;
if (effect_id == EffectTree::kInvalidNodeId) {
// This can happen when PaintArtifactCompositor builds property trees as
// it doesn't set effect ids on clip nodes. We want to compute transform
// to the root in this case.
- destination_transform_id = TransformTree::kRootNodeId;
+ target_transform_id = TransformTree::kRootNodeId;
} else {
const EffectNode* effect_node = effect_tree.Node(effect_id);
DCHECK(effect_node->has_render_surface ||
effect_node->id == EffectTree::kRootNodeId);
- destination_transform_id = effect_node->transform_id;
+ target_transform_id = effect_node->transform_id;
}
- if (transform_id == destination_transform_id)
- return true;
+ return transform_tree.ComputeTransform(transform_id, target_transform_id,
+ transform);
+}
- if (transform_id > destination_transform_id) {
- return transform_tree.CombineTransformsBetween(
- transform_id, destination_transform_id, transform);
+bool PropertyTrees::ComputeTransformFromTarget(
+ int transform_id,
+ int effect_id,
+ gfx::Transform* transform) const {
+ transform->MakeIdentity();
+
+ int target_transform_id;
+ if (effect_id == EffectTree::kInvalidNodeId) {
+ // This can happen when PaintArtifactCompositor builds property trees as
+ // it doesn't set effect ids on clip nodes. We want to compute transform
+ // to the root in this case.
+ target_transform_id = TransformTree::kRootNodeId;
+ } else {
+ const EffectNode* effect_node = effect_tree.Node(effect_id);
+ DCHECK(effect_node->has_render_surface ||
+ effect_node->id == EffectTree::kRootNodeId);
+ target_transform_id = effect_node->transform_id;
}
- return transform_tree.CombineInversesBetween(
- transform_id, destination_transform_id, transform);
+ return transform_tree.ComputeTransform(target_transform_id, transform_id,
+ transform);
}
} // namespace cc
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698