// Copyright 2013 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.

#ifndef CompositingReasons_h
#define CompositingReasons_h

#include "wtf/MathExtras.h"
#include <stdint.h>

namespace WebCore {

const uint64_t CompositingReasonNone                                   = 0;

// Intrinsic reasons that can be known right away by the layer
const uint64_t CompositingReason3DTransform                            = UINT64_C(1) << 0;
const uint64_t CompositingReasonVideo                                  = UINT64_C(1) << 1;
const uint64_t CompositingReasonCanvas                                 = UINT64_C(1) << 2;
const uint64_t CompositingReasonPlugin                                 = UINT64_C(1) << 3;
const uint64_t CompositingReasonIFrame                                 = UINT64_C(1) << 4;
const uint64_t CompositingReasonBackfaceVisibilityHidden               = UINT64_C(1) << 5;
const uint64_t CompositingReasonAnimation                              = UINT64_C(1) << 6;
const uint64_t CompositingReasonFilters                                = UINT64_C(1) << 7;
const uint64_t CompositingReasonPositionFixed                          = UINT64_C(1) << 8;
const uint64_t CompositingReasonPositionSticky                         = UINT64_C(1) << 9;
const uint64_t CompositingReasonOverflowScrollingTouch                 = UINT64_C(1) << 10;

// Overlap reasons that require knowing what's behind you in paint-order before knowing the answer
const uint64_t CompositingReasonAssumedOverlap                         = UINT64_C(1) << 12;
const uint64_t CompositingReasonOverlap                                = UINT64_C(1) << 13;
const uint64_t CompositingReasonNegativeZIndexChildren                 = UINT64_C(1) << 14;

// Subtree reasons that require knowing what the status of your subtree is before knowing the answer
const uint64_t CompositingReasonTransformWithCompositedDescendants     = UINT64_C(1) << 15;
const uint64_t CompositingReasonOpacityWithCompositedDescendants       = UINT64_C(1) << 16;
const uint64_t CompositingReasonMaskWithCompositedDescendants          = UINT64_C(1) << 17;
const uint64_t CompositingReasonReflectionWithCompositedDescendants    = UINT64_C(1) << 18;
const uint64_t CompositingReasonFilterWithCompositedDescendants        = UINT64_C(1) << 19;
const uint64_t CompositingReasonBlendingWithCompositedDescendants      = UINT64_C(1) << 20;
const uint64_t CompositingReasonClipsCompositingDescendants            = UINT64_C(1) << 21;
const uint64_t CompositingReasonPerspective                            = UINT64_C(1) << 22;
const uint64_t CompositingReasonPreserve3D                             = UINT64_C(1) << 23;
const uint64_t CompositingReasonReflectionOfCompositedParent           = UINT64_C(1) << 24;

// The root layer is a special case that may be forced to be a layer, but also it needs to be
// a layer if anything else in the subtree is composited.
const uint64_t CompositingReasonRoot                                   = UINT64_C(1) << 25;

// CompositedLayerMapping internal hierarchy reasons
const uint64_t CompositingReasonLayerForClip                           = UINT64_C(1) << 26;
const uint64_t CompositingReasonLayerForScrollbar                      = UINT64_C(1) << 27;
const uint64_t CompositingReasonLayerForScrollingContainer             = UINT64_C(1) << 28;
const uint64_t CompositingReasonLayerForForeground                     = UINT64_C(1) << 29;
const uint64_t CompositingReasonLayerForBackground                     = UINT64_C(1) << 30;
const uint64_t CompositingReasonLayerForMask                           = UINT64_C(1) << 31;

// FIXME: the following compositing reasons need to be re-organized to fit with categories
// used in all the other reasons above.
const uint64_t CompositingReasonOverflowScrollingParent                = UINT64_C(1) << 32;
const uint64_t CompositingReasonOutOfFlowClipping                      = UINT64_C(1) << 33;

const uint64_t CompositingReasonLayerForVideoOverlay                   = UINT64_C(1) << 34;

// Note: if you add more reasons here, you will need to update WebCompositingReasons as well.
typedef uint64_t CompositingReasons;


} // namespace WebCore

#endif // CompositingReasons_h
