Home | History | Annotate | Download | only in rendering
      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 
     10 namespace WebCore {
     11 
     12 const uint64_t CompositingReasonNone                                   = 0;
     13 
     14 // Intrinsic reasons that can be known right away by the layer
     15 const uint64_t CompositingReason3DTransform                            = UINT64_C(1) << 0;
     16 const uint64_t CompositingReasonVideo                                  = UINT64_C(1) << 1;
     17 const uint64_t CompositingReasonCanvas                                 = UINT64_C(1) << 2;
     18 const uint64_t CompositingReasonPlugin                                 = UINT64_C(1) << 3;
     19 const uint64_t CompositingReasonIFrame                                 = UINT64_C(1) << 4;
     20 const uint64_t CompositingReasonBackfaceVisibilityHidden               = UINT64_C(1) << 5;
     21 const uint64_t CompositingReasonAnimation                              = UINT64_C(1) << 6;
     22 const uint64_t CompositingReasonFilters                                = UINT64_C(1) << 7;
     23 const uint64_t CompositingReasonPositionFixed                          = UINT64_C(1) << 8;
     24 const uint64_t CompositingReasonPositionSticky                         = UINT64_C(1) << 9;
     25 const uint64_t CompositingReasonOverflowScrollingTouch                 = UINT64_C(1) << 10;
     26 const 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
     29 const uint64_t CompositingReasonAssumedOverlap                         = UINT64_C(1) << 12;
     30 const uint64_t CompositingReasonOverlap                                = UINT64_C(1) << 13;
     31 const 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
     34 const uint64_t CompositingReasonTransformWithCompositedDescendants     = UINT64_C(1) << 15;
     35 const uint64_t CompositingReasonOpacityWithCompositedDescendants       = UINT64_C(1) << 16;
     36 const uint64_t CompositingReasonMaskWithCompositedDescendants          = UINT64_C(1) << 17;
     37 const uint64_t CompositingReasonReflectionWithCompositedDescendants    = UINT64_C(1) << 18;
     38 const uint64_t CompositingReasonFilterWithCompositedDescendants        = UINT64_C(1) << 19;
     39 const uint64_t CompositingReasonBlendingWithCompositedDescendants      = UINT64_C(1) << 20;
     40 const uint64_t CompositingReasonClipsCompositingDescendants            = UINT64_C(1) << 21;
     41 const uint64_t CompositingReasonPerspective                            = UINT64_C(1) << 22;
     42 const uint64_t CompositingReasonPreserve3D                             = UINT64_C(1) << 23;
     43 const 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.
     47 const uint64_t CompositingReasonRoot                                   = UINT64_C(1) << 25;
     48 
     49 // RenderLayerBacking internal hierarchy reasons
     50 const uint64_t CompositingReasonLayerForClip                           = UINT64_C(1) << 26;
     51 const uint64_t CompositingReasonLayerForScrollbar                      = UINT64_C(1) << 27;
     52 const uint64_t CompositingReasonLayerForScrollingContainer             = UINT64_C(1) << 28;
     53 const uint64_t CompositingReasonLayerForForeground                     = UINT64_C(1) << 29;
     54 const uint64_t CompositingReasonLayerForBackground                     = UINT64_C(1) << 30;
     55 const 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.
     59 const uint64_t CompositingReasonLayerForVideoOverlay                   = UINT64_C(1) << 32;
     60 
     61 // Note: if you add more reasons here, you will need to update WebCompositingReasons as well.
     62 typedef uint64_t CompositingReasons;
     63 
     64 
     65 } // namespace WebCore
     66 
     67 #endif // CompositingReasons_h
     68