| Index: ui/compositor/paint_recorder.cc
|
| diff --git a/ui/compositor/paint_recorder.cc b/ui/compositor/paint_recorder.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..182cc7269b7484ab2ae66faa3a03acef9d9e8386
|
| --- /dev/null
|
| +++ b/ui/compositor/paint_recorder.cc
|
| @@ -0,0 +1,41 @@
|
| +// 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.
|
| +
|
| +#include "ui/compositor/paint_recorder.h"
|
| +
|
| +#include "cc/resources/display_item_list.h"
|
| +#include "cc/resources/drawing_display_item.h"
|
| +#include "ui/gfx/canvas.h"
|
| +#include "ui/gfx/geometry/rect.h"
|
| +#include "ui/gfx/skia_util.h"
|
| +
|
| +namespace ui {
|
| +
|
| +PaintRecorder::PaintRecorder(const gfx::Rect& recording_bounds,
|
| + float device_scale_factor)
|
| + : device_scale_factor_(device_scale_factor) {
|
| + SkRTreeFactory* no_factory = nullptr;
|
| + skcanvas_ = skia::SharePtr(recorder_.beginRecording(
|
| + gfx::RectToSkRect(recording_bounds), no_factory,
|
| + SkPictureRecorder::kComputeSaveLayerInfo_RecordFlag));
|
| + skcanvas_->clipRect(gfx::RectToSkRect(recording_bounds));
|
| + canvas_ = make_scoped_ptr(gfx::Canvas::CreateCanvasWithoutScaling(
|
| + skcanvas(), device_scale_factor_));
|
| +}
|
| +
|
| +PaintRecorder::~PaintRecorder() {
|
| +}
|
| +
|
| +skia::RefPtr<SkPicture> PaintRecorder::TakePicture() {
|
| + DCHECK(skcanvas_);
|
| + return skia::AdoptRef(recorder_.endRecording());
|
| + skcanvas_.clear(); // Prevent this method from being called again.
|
| +}
|
| +
|
| +void PaintRecorder::TakeDisplayItem(cc::DisplayItemList* list) {
|
| + DCHECK(skcanvas_);
|
| + list->AppendItem(cc::DrawingDisplayItem::Create(TakePicture()));
|
| +}
|
| +
|
| +} // namespace ui
|
|
|