diff options
Diffstat (limited to 'chromium/third_party/skia/src/core/SkRecording.cpp')
-rw-r--r-- | chromium/third_party/skia/src/core/SkRecording.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/chromium/third_party/skia/src/core/SkRecording.cpp b/chromium/third_party/skia/src/core/SkRecording.cpp new file mode 100644 index 00000000000..94fabce9121 --- /dev/null +++ b/chromium/third_party/skia/src/core/SkRecording.cpp @@ -0,0 +1,44 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "../../include/record/SkRecording.h" + +#include "SkRecord.h" +#include "SkRecordOpts.h" +#include "SkRecordDraw.h" +#include "SkRecorder.h" + +namespace EXPERIMENTAL { + +SkPlayback::SkPlayback(const SkRecord* record) : fRecord(record) {} + +SkPlayback::~SkPlayback() {} + +void SkPlayback::draw(SkCanvas* canvas) const { + SkASSERT(fRecord.get() != NULL); + SkRecordDraw(*fRecord, canvas); +} + +SkRecording::SkRecording(int width, int height) + : fRecord(SkNEW(SkRecord)) + , fRecorder(SkNEW_ARGS(SkRecorder, (fRecord.get(), width, height))) + {} + +SkPlayback* SkRecording::releasePlayback() { + SkASSERT(fRecorder->unique()); + fRecorder->forgetRecord(); + SkRecordOptimize(fRecord.get()); + return SkNEW_ARGS(SkPlayback, (fRecord.detach())); +} + +SkRecording::~SkRecording() {} + +SkCanvas* SkRecording::canvas() { + return fRecord.get() ? fRecorder.get() : NULL; +} + +} // namespace EXPERIMENTAL |