[go: nahoru, domu]

blob: 3952c877c51a5784c6d1f0dd54419d3300ee5478 [file] [log] [blame]
// Copyright 2015 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 ClipPathDisplayItem_h
#define ClipPathDisplayItem_h
#include "platform/PlatformExport.h"
#include "platform/graphics/Path.h"
#include "platform/graphics/paint/DisplayItem.h"
#include "third_party/skia/include/core/SkPath.h"
namespace blink {
class PLATFORM_EXPORT BeginClipPathDisplayItem final
: public PairedBeginDisplayItem {
public:
BeginClipPathDisplayItem(const DisplayItemClient& client,
const Path& clip_path)
: PairedBeginDisplayItem(client, kBeginClipPath, sizeof(*this)),
clip_path_(clip_path.GetSkPath()) {}
void Replay(GraphicsContext&) const override;
void AppendToWebDisplayItemList(const IntRect&,
WebDisplayItemList*) const override;
int NumberOfSlowPaths() const override;
private:
#ifndef NDEBUG
void DumpPropertiesAsDebugString(WTF::StringBuilder&) const override;
#endif
bool Equals(const DisplayItem& other) const final {
return DisplayItem::Equals(other) &&
clip_path_ ==
static_cast<const BeginClipPathDisplayItem&>(other).clip_path_;
}
const SkPath clip_path_;
};
class PLATFORM_EXPORT EndClipPathDisplayItem final
: public PairedEndDisplayItem {
public:
EndClipPathDisplayItem(const DisplayItemClient& client)
: PairedEndDisplayItem(client, kEndClipPath, sizeof(*this)) {}
void Replay(GraphicsContext&) const override;
void AppendToWebDisplayItemList(const IntRect&,
WebDisplayItemList*) const override;
private:
#if DCHECK_IS_ON()
bool IsEndAndPairedWith(DisplayItem::Type other_type) const final {
return other_type == kBeginClipPath;
}
#endif
};
} // namespace blink
#endif // ClipPathDisplayItem_h