// Copyright 2014 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 LayerClipRecorder_h
#define LayerClipRecorder_h

#include "core/CoreExport.h"
#include "core/paint/PaintLayerPaintingInfo.h"
#include "core/paint/PaintPhase.h"
#include "platform/graphics/paint/ClipDisplayItem.h"
#include "platform/graphics/paint/DisplayItem.h"
#include "wtf/Vector.h"

namespace blink {

class ClipRect;
class GraphicsContext;
class LayoutBoxModelObject;

class CORE_EXPORT LayerClipRecorder {
  USING_FAST_MALLOC(LayerClipRecorder);

 public:
  enum BorderRadiusClippingRule {
    IncludeSelfForBorderRadius,
    DoNotIncludeSelfForBorderRadius
  };

  // Set rounded clip rectangles defined by border radii all the way from the
  // PaintLayerPaintingInfo "root" layer down to the specified layer (or the
  // parent of said layer, in case BorderRadiusClippingRule says to skip self).
  // fragmentOffset is used for multicol, to specify the translation required to
  // get from flow thread coordinates to visual coordinates for a certain
  // column.
  // FIXME: The BorderRadiusClippingRule parameter is really useless now. If we
  // want to skip self,
  // why not just supply the parent layer as the first parameter instead?
  // FIXME: The ClipRect passed is in visual coordinates (not flow thread
  // coordinates), but at the same time we pass a fragmentOffset, so that we can
  // translate from flow thread coordinates to visual coordinates. This may look
  // rather confusing/redundant, but it is needed for rounded border clipping.
  // Would be nice to clean up this.
  explicit LayerClipRecorder(
      GraphicsContext&,
      const LayoutBoxModelObject&,
      DisplayItem::Type,
      const ClipRect&,
      const PaintLayerPaintingInfo* localPaintingInfo,
      const LayoutPoint& fragmentOffset,
      PaintLayerFlags,
      BorderRadiusClippingRule = IncludeSelfForBorderRadius);

  ~LayerClipRecorder();

 private:
  void collectRoundedRectClips(PaintLayer&,
                               const PaintLayerPaintingInfo& localPaintingInfo,
                               GraphicsContext&,
                               const LayoutPoint& fragmentOffset,
                               PaintLayerFlags,
                               BorderRadiusClippingRule,
                               Vector<FloatRoundedRect>& roundedRectClips);

  GraphicsContext& m_graphicsContext;
  const LayoutBoxModelObject& m_layoutObject;
  DisplayItem::Type m_clipType;
};

}  // namespace blink

#endif  // LayerClipRecorder_h
