Chromium Code Reviews| Index: include/record/SkRecording.h |
| diff --git a/include/record/SkRecording.h b/include/record/SkRecording.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7024e17469ece45a0b8b14f222c3f5edb1c51d31 |
| --- /dev/null |
| +++ b/include/record/SkRecording.h |
| @@ -0,0 +1,67 @@ |
| +#ifndef SkRecording_DEFINED |
|
robertphillips
2014/04/11 13:28:08
Header?
|
| +#define SkRecording_DEFINED |
| + |
| +#include "SkCanvas.h" // SkCanvas |
| +#include "SkTypes.h" // SkNoncopyable |
| + |
| +// These are intentionally left opaque. |
| +class SkRecord; |
| +class SkRecorder; |
| + |
| +namespace EXPERIMENTAL { |
| + |
| +/** Easy mode interface to SkRecord-based SkCanvas recording. |
| + * |
| + * SkRecording* recording = SkRecording::Create(1920, 1080); |
| + * |
| + * SkCanvas* canvas = recording->canvas(); |
| + * canvas->drawThis(); |
| + * canvas->clipThat(); |
| + * ... |
| + * |
| + * scoped_ptr<const SkPlayback> playback(SkRecording::Delete(recording)); |
| + * playback->draw(&someCanvas); |
| + * playback->draw(&someOtherCanvas); |
| + * |
| + * SkPlayback is thread safe; SkRecording is not. |
| + */ |
| + |
| +class SkPlayback : SkNoncopyable { |
| +public: |
| + // Remember, if you've got an SkPlayback*, you probably own it. Don't forget to delete it! |
| + ~SkPlayback(); |
| + |
| + // Draw recorded commands into a canvas. |
| + void draw(SkCanvas*) const; |
| + |
| +private: |
| + explicit SkPlayback(const SkRecord*); |
| + |
| + const SkRecord* fRecord; |
| + |
| + friend class SkRecording; |
| +}; |
| + |
| +class SkRecording : SkNoncopyable { |
| +public: |
| + // Result must be returned via SkRecording::Delete. |
| + static SkRecording* Create(int width, int height); |
| + |
| + // Caller takes ownership of SkPlayback. |
| + static const SkPlayback* Delete(SkRecording*); |
| + |
| + // Draws issued to this canvas will be replayed by SkPlayback::draw(). |
| + // This pointer is owned by the SkRecording; the caller must not take ownership. |
| + SkCanvas* canvas(); |
| + |
| +private: |
| + SkRecording(int width, int height); |
| + ~SkRecording(); |
| + |
| + SkRecorder* fRecorder; |
| + const SkRecord* fRecord; |
| +}; |
| + |
| +} // namespace EXPERIMENTAL |
| + |
| +#endif//SkRecording_DEFINED |