1/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "../../include/record/SkRecording.h"
9
10#include "SkRecord.h"
11#include "SkRecordOpts.h"
12#include "SkRecordDraw.h"
13#include "SkRecorder.h"
14
15namespace EXPERIMENTAL {
16
17SkPlayback::SkPlayback(const SkRecord* record) : fRecord(record) {}
18
19SkPlayback::~SkPlayback() {}
20
21void SkPlayback::draw(SkCanvas* canvas) const {
22    SkASSERT(fRecord.get() != NULL);
23    SkRecordDraw(*fRecord, canvas);
24}
25
26SkRecording::SkRecording(int width, int height)
27    : fRecord(SkNEW(SkRecord))
28    , fRecorder(SkNEW_ARGS(SkRecorder, (fRecord.get(), width, height)))
29    {}
30
31SkPlayback* SkRecording::releasePlayback() {
32    SkASSERT(fRecorder->unique());
33    fRecorder->forgetRecord();
34    SkRecordOptimize(fRecord.get());
35    return SkNEW_ARGS(SkPlayback, (fRecord.detach()));
36}
37
38SkRecording::~SkRecording() {}
39
40SkCanvas* SkRecording::canvas() {
41    return fRecord.get() ? fRecorder.get() : NULL;
42}
43
44}  // namespace EXPERIMENTAL
45