blob: d726046b7601ad851068c506a6a9ccf844caf8e5 [file] [log] [blame]
// Copyright 2016 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 ClipPathClipper_h
#define ClipPathClipper_h
#include "platform/graphics/paint/ClipPathRecorder.h"
#include "wtf/Optional.h"
namespace blink {
class ClipPathOperation;
class FloatPoint;
class FloatRect;
class GraphicsContext;
class LayoutSVGResourceClipper;
class LayoutObject;
enum class ClipperState { NotApplied, AppliedPath, AppliedMask };
class ClipPathClipper {
DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
public:
ClipPathClipper(GraphicsContext&,
ClipPathOperation&,
const LayoutObject&,
const FloatRect& referenceBox,
const FloatPoint& origin);
~ClipPathClipper();
bool usingMask() const { return m_clipperState == ClipperState::AppliedMask; }
private:
LayoutSVGResourceClipper* m_resourceClipper;
Optional<ClipPathRecorder> m_clipPathRecorder;
ClipperState m_clipperState;
const LayoutObject& m_layoutObject;
GraphicsContext& m_context;
};
} // namespace blink
#endif // ClipPathClipper_h