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

Unified Diff: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp

Issue 1714523005: WIP: backface visibility plumbing (not for review) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: still broken Created 4 years, 10 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
Index: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
index e534ded2b24f23af1db7817f785e0cb248cc34ac..219c007694157f662490c3c689114e0b0f77218c 100644
--- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
@@ -26,7 +26,9 @@ struct PaintPropertyTreeBuilderContext {
, clipForOutOfFlowPositioned(nullptr)
, transformForFixedPositioned(nullptr)
, clipForFixedPositioned(nullptr)
- , currentEffect(nullptr) { }
+ , currentEffect(nullptr)
+ , preserving3d(false)
+ , backfaceHidden(false) { }
// The combination of a transform and paint offset describes a linear space.
// When a layout object recur to its children, the main context is expected to refer
@@ -59,6 +61,9 @@ struct PaintPropertyTreeBuilderContext {
// DOM descendant is also a stacking context descendant. Therefore, we don't need extra
// bookkeeping for effect nodes and can generate the effect tree from a DOM-order traversal.
EffectPaintPropertyNode* currentEffect;
+
+ bool preserving3d;
+ bool backfaceHidden;
};
void PaintPropertyTreeBuilder::buildPropertyTrees(FrameView& rootFrame)
@@ -322,13 +327,38 @@ PassOwnPtr<ObjectPaintProperties::LocalBorderBoxProperties> recordTreeContextIfN
recordedContext->properties.transform = context.currentTransform;
recordedContext->properties.clip = context.currentClip;
recordedContext->properties.effect = context.currentEffect;
+ recordedContext->properties.backfaceHidden = context.backfaceHidden;
return recordedContext.release();
}
void PaintPropertyTreeBuilder::walk(LayoutObject& object, const PaintPropertyTreeBuilderContext& context)
{
+
+//fprintf(stderr, "walk trees, build propz.\n");
+//if (object.node())
+// object.node()->showTreeForThisInFlatTree();
+//fprintf(stderr, "layout object %s\n\n", object.node() ? object.node()->nodeName().utf8().data() : "dunno");
+
PaintPropertyTreeBuilderContext localContext(context);
+ fprintf(stderr, "walking into %s, context.preserving3d %d, context.backfaceHidden %d, object.preserves3d %d, object.backfacehidden %d\n",
+ object.debugName().utf8().data(),
+ localContext.preserving3d,
+ localContext.backfaceHidden,
+ object.styleRef().preserves3D(),
+ object.hasHiddenBackface());
+
+ localContext.preserving3d = object.styleRef().preserves3D();
+ if (localContext.preserving3d) {
+ if (object.hasTransformRelatedProperty())
+ localContext.backfaceHidden = object.hasHiddenBackface();
+ } else {
+ //if (object.hasTransformRelatedProperty())
+ localContext.backfaceHidden = false;
+ if (object.hasHiddenBackface())
+ localContext.backfaceHidden = true;
+ }
+
deriveBorderBoxFromContainerContext(object, localContext);
RefPtr<TransformPaintPropertyNode> newTransformNodeForPaintOffsetTranslation = createPaintOffsetTranslationIfNeeded(object, localContext);
RefPtr<TransformPaintPropertyNode> newTransformNodeForTransform = createTransformIfNeeded(object, localContext);

Powered by Google App Engine
This is Rietveld 408576698