| // 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 "sky/engine/core/painting/Canvas.h" |
| #include "sky/engine/core/painting/Drawable.h" |
| #include "sky/engine/core/painting/Picture.h" |
| #include "sky/engine/core/painting/PictureRecorder.h" |
| |
| namespace blink { |
| |
| PictureRecorder::PictureRecorder() |
| { |
| } |
| |
| PictureRecorder::~PictureRecorder() |
| { |
| } |
| |
| bool PictureRecorder::isRecording() { |
| return m_canvas && m_canvas->isRecording(); |
| } |
| |
| SkCanvas* PictureRecorder::beginRecording(Rect bounds) |
| { |
| return m_pictureRecorder.beginRecording(bounds.sk_rect, |
| &m_rtreeFactory, SkPictureRecorder::kComputeSaveLayerInfo_RecordFlag); |
| } |
| |
| PassRefPtr<Picture> PictureRecorder::endRecording() |
| { |
| if (!isRecording()) |
| return nullptr; |
| RefPtr<Picture> picture = Picture::create( |
| adoptRef(m_pictureRecorder.endRecording())); |
| m_canvas->clearSkCanvas(); |
| m_canvas = nullptr; |
| return picture.release(); |
| } |
| |
| PassRefPtr<Drawable> PictureRecorder::endRecordingAsDrawable() |
| { |
| if (!isRecording()) |
| return nullptr; |
| RefPtr<Drawable> drawable = Drawable::create( |
| adoptRef(m_pictureRecorder.endRecordingAsDrawable())); |
| m_canvas->clearSkCanvas(); |
| m_canvas = nullptr; |
| return drawable.release(); |
| } |
| |
| void PictureRecorder::set_canvas(PassRefPtr<Canvas> canvas) |
| { |
| m_canvas = canvas; |
| } |
| |
| } // namespace blink |