1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CompositingReasons_h 6#define CompositingReasons_h 7 8#include "wtf/MathExtras.h" 9 10namespace WebCore { 11 12const uint64_t CompositingReasonNone = 0; 13 14// Intrinsic reasons that can be known right away by the layer 15const uint64_t CompositingReason3DTransform = UINT64_C(1) << 0; 16const uint64_t CompositingReasonVideo = UINT64_C(1) << 1; 17const uint64_t CompositingReasonCanvas = UINT64_C(1) << 2; 18const uint64_t CompositingReasonPlugin = UINT64_C(1) << 3; 19const uint64_t CompositingReasonIFrame = UINT64_C(1) << 4; 20const uint64_t CompositingReasonBackfaceVisibilityHidden = UINT64_C(1) << 5; 21const uint64_t CompositingReasonAnimation = UINT64_C(1) << 6; 22const uint64_t CompositingReasonFilters = UINT64_C(1) << 7; 23const uint64_t CompositingReasonPositionFixed = UINT64_C(1) << 8; 24const uint64_t CompositingReasonPositionSticky = UINT64_C(1) << 9; 25const uint64_t CompositingReasonOverflowScrollingTouch = UINT64_C(1) << 10; 26const uint64_t CompositingReasonBlending = UINT64_C(1) << 11; 27 28// Overlap reasons that require knowing what's behind you in paint-order before knowing the answer 29const uint64_t CompositingReasonAssumedOverlap = UINT64_C(1) << 12; 30const uint64_t CompositingReasonOverlap = UINT64_C(1) << 13; 31const uint64_t CompositingReasonNegativeZIndexChildren = UINT64_C(1) << 14; 32 33// Subtree reasons that require knowing what the status of your subtree is before knowing the answer 34const uint64_t CompositingReasonTransformWithCompositedDescendants = UINT64_C(1) << 15; 35const uint64_t CompositingReasonOpacityWithCompositedDescendants = UINT64_C(1) << 16; 36const uint64_t CompositingReasonMaskWithCompositedDescendants = UINT64_C(1) << 17; 37const uint64_t CompositingReasonReflectionWithCompositedDescendants = UINT64_C(1) << 18; 38const uint64_t CompositingReasonFilterWithCompositedDescendants = UINT64_C(1) << 19; 39const uint64_t CompositingReasonBlendingWithCompositedDescendants = UINT64_C(1) << 20; 40const uint64_t CompositingReasonClipsCompositingDescendants = UINT64_C(1) << 21; 41const uint64_t CompositingReasonPerspective = UINT64_C(1) << 22; 42const uint64_t CompositingReasonPreserve3D = UINT64_C(1) << 23; 43const uint64_t CompositingReasonReflectionOfCompositedParent = UINT64_C(1) << 24; 44 45// The root layer is a special case that may be forced to be a layer, but also it needs to be 46// a layer if anything else in the subtree is composited. 47const uint64_t CompositingReasonRoot = UINT64_C(1) << 25; 48 49// RenderLayerBacking internal hierarchy reasons 50const uint64_t CompositingReasonLayerForClip = UINT64_C(1) << 26; 51const uint64_t CompositingReasonLayerForScrollbar = UINT64_C(1) << 27; 52const uint64_t CompositingReasonLayerForScrollingContainer = UINT64_C(1) << 28; 53const uint64_t CompositingReasonLayerForForeground = UINT64_C(1) << 29; 54const uint64_t CompositingReasonLayerForBackground = UINT64_C(1) << 30; 55const uint64_t CompositingReasonLayerForMask = UINT64_C(1) << 31; 56 57// FIXME: the following compositing reasons need to be re-organized to fit with categories 58// used in all the other reasons above. 59const uint64_t CompositingReasonLayerForVideoOverlay = UINT64_C(1) << 32; 60 61// Note: if you add more reasons here, you will need to update WebCompositingReasons as well. 62typedef uint64_t CompositingReasons; 63 64 65} // namespace WebCore 66 67#endif // CompositingReasons_h 68