blob: b9fa01bf1f4b983fe76ff418ba115caef535b592 [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 CC_RESOURCES_CLIP_PATH_DISPLAY_ITEM_H_
#define CC_RESOURCES_CLIP_PATH_DISPLAY_ITEM_H_
#include "base/memory/scoped_ptr.h"
#include "cc/base/cc_export.h"
#include "cc/resources/display_item.h"
#include "third_party/skia/include/core/SkPath.h"
#include "third_party/skia/include/core/SkRegion.h"
class SkCanvas;
class SkDrawPictureCallback;
namespace cc {
class CC_EXPORT ClipPathDisplayItem : public DisplayItem {
public:
~ClipPathDisplayItem() override;
static scoped_ptr<ClipPathDisplayItem> Create(const SkPath& path,
SkRegion::Op clip_op,
bool antialias) {
return make_scoped_ptr(new ClipPathDisplayItem(path, clip_op, antialias));
}
void Raster(SkCanvas* canvas, SkDrawPictureCallback* callback) const override;
bool IsSuitableForGpuRasterization() const override;
int ApproximateOpCount() const override;
size_t PictureMemoryUsage() const override;
void AsValueInto(base::debug::TracedValue* array) const override;
protected:
ClipPathDisplayItem(const SkPath& path, SkRegion::Op clip_op, bool antialias);
private:
SkPath clip_path_;
SkRegion::Op clip_op_;
bool antialias_;
};
class CC_EXPORT EndClipPathDisplayItem : public DisplayItem {
public:
~EndClipPathDisplayItem() override;
static scoped_ptr<EndClipPathDisplayItem> Create() {
return make_scoped_ptr(new EndClipPathDisplayItem());
}
void Raster(SkCanvas* canvas, SkDrawPictureCallback* callback) const override;
bool IsSuitableForGpuRasterization() const override;
int ApproximateOpCount() const override;
size_t PictureMemoryUsage() const override;
void AsValueInto(base::debug::TracedValue* array) const override;
protected:
EndClipPathDisplayItem();
};
} // namespace cc
#endif // CC_RESOURCES_CLIP_PATH_DISPLAY_ITEM_H_