Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Side by Side Diff: include/core/SkPictureRecorder.h

Issue 1811703002: return pictures as sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rely on RVO in picturerecorder Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/core/SkPicture.h ('k') | include/private/SkMiniRecorder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkPictureRecorder_DEFINED 8 #ifndef SkPictureRecorder_DEFINED
9 #define SkPictureRecorder_DEFINED 9 #define SkPictureRecorder_DEFINED
10 10
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 /** 65 /**
66 * Signal that the caller is done recording. This invalidates the canvas re turned by 66 * Signal that the caller is done recording. This invalidates the canvas re turned by
67 * beginRecording/getRecordingCanvas. Ownership of the object is passed to the caller, who 67 * beginRecording/getRecordingCanvas. Ownership of the object is passed to the caller, who
68 * must call unref() when they are done using it. 68 * must call unref() when they are done using it.
69 * 69 *
70 * The returned picture is immutable. If during recording drawables were ad ded to the canvas, 70 * The returned picture is immutable. If during recording drawables were ad ded to the canvas,
71 * these will have been "drawn" into a recording canvas, so that this resul ting picture will 71 * these will have been "drawn" into a recording canvas, so that this resul ting picture will
72 * reflect their current state, but will not contain a live reference to th e drawables 72 * reflect their current state, but will not contain a live reference to th e drawables
73 * themselves. 73 * themselves.
74 */ 74 */
75 SkPicture* SK_WARN_UNUSED_RESULT endRecordingAsPicture(); 75 sk_sp<SkPicture> finishRecordingAsPicture();
76 76
77 /** 77 /**
78 * Signal that the caller is done recording, and update the cull rect to us e for bounding 78 * Signal that the caller is done recording, and update the cull rect to us e for bounding
79 * box hierarchy (BBH) generation. The behavior is the same as calling 79 * box hierarchy (BBH) generation. The behavior is the same as calling
80 * endRecordingAsPicture(), except that this method updates the cull rect i nitially passed 80 * endRecordingAsPicture(), except that this method updates the cull rect i nitially passed
81 * into beginRecording. 81 * into beginRecording.
82 * @param cullRect the new culling rectangle to use as the overall bound fo r BBH generation 82 * @param cullRect the new culling rectangle to use as the overall bound fo r BBH generation
83 * and subsequent culling operations. 83 * and subsequent culling operations.
84 * @return the picture containing the recorded content. 84 * @return the picture containing the recorded content.
85 */ 85 */
86 SkPicture* SK_WARN_UNUSED_RESULT endRecordingAsPicture(const SkRect& cullRec t); 86 sk_sp<SkPicture> finishRecordingAsPictureWithCull(const SkRect& cullRect);
87 87
88 /** 88 /**
89 * Signal that the caller is done recording. This invalidates the canvas re turned by 89 * Signal that the caller is done recording. This invalidates the canvas re turned by
90 * beginRecording/getRecordingCanvas. Ownership of the object is passed to the caller, who 90 * beginRecording/getRecordingCanvas. Ownership of the object is passed to the caller, who
91 * must call unref() when they are done using it. 91 * must call unref() when they are done using it.
92 * 92 *
93 * Unlike endRecordingAsPicture(), which returns an immutable picture, the returned drawable 93 * Unlike endRecordingAsPicture(), which returns an immutable picture, the returned drawable
94 * may contain live references to other drawables (if they were added to th e recording canvas) 94 * may contain live references to other drawables (if they were added to th e recording canvas)
95 * and therefore this drawable will reflect the current state of those nest ed drawables anytime 95 * and therefore this drawable will reflect the current state of those nest ed drawables anytime
96 * it is drawn or a new picture is snapped from it (by calling drawable->ne wPictureSnapshot()). 96 * it is drawn or a new picture is snapped from it (by calling drawable->ne wPictureSnapshot()).
97 */ 97 */
98 SkDrawable* SK_WARN_UNUSED_RESULT endRecordingAsDrawable(); 98 sk_sp<SkDrawable> finishRecordingAsDrawable();
99 99
100 // Legacy API -- use endRecordingAsPicture instead. 100 #ifdef SK_SUPPORT_LEGACY_PICTURE_PTR
101 SkPicture* SK_WARN_UNUSED_RESULT endRecordingAsPicture() {
102 return this->finishRecordingAsPicture().release();
103 }
104 SkPicture* SK_WARN_UNUSED_RESULT endRecordingAsPicture(const SkRect& cullRec t) {
105 return this->finishRecordingAsPictureWithCull(cullRect).release();
106 }
107 SkDrawable* SK_WARN_UNUSED_RESULT endRecordingAsDrawable() {
108 return this->finishRecordingAsDrawable().release();
109 }
101 SkPicture* SK_WARN_UNUSED_RESULT endRecording() { return this->endRecordingA sPicture(); } 110 SkPicture* SK_WARN_UNUSED_RESULT endRecording() { return this->endRecordingA sPicture(); }
111 #endif
102 112
103 private: 113 private:
104 void reset(); 114 void reset();
105 115
106 /** Replay the current (partially recorded) operation stream into 116 /** Replay the current (partially recorded) operation stream into
107 canvas. This call doesn't close the current recording. 117 canvas. This call doesn't close the current recording.
108 */ 118 */
109 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK 119 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
110 friend class android::Picture; 120 friend class android::Picture;
111 #endif 121 #endif
112 friend class SkPictureRecorderReplayTester; // for unit testing 122 friend class SkPictureRecorderReplayTester; // for unit testing
113 void partialReplay(SkCanvas* canvas) const; 123 void partialReplay(SkCanvas* canvas) const;
114 124
115 bool fActivelyRecording; 125 bool fActivelyRecording;
116 uint32_t fFlags; 126 uint32_t fFlags;
117 SkRect fCullRect; 127 SkRect fCullRect;
118 SkAutoTUnref<SkBBoxHierarchy> fBBH; 128 SkAutoTUnref<SkBBoxHierarchy> fBBH;
119 SkAutoTUnref<SkRecorder> fRecorder; 129 SkAutoTUnref<SkRecorder> fRecorder;
120 SkAutoTUnref<SkRecord> fRecord; 130 SkAutoTUnref<SkRecord> fRecord;
121 SkMiniRecorder fMiniRecorder; 131 SkMiniRecorder fMiniRecorder;
122 132
123 typedef SkNoncopyable INHERITED; 133 typedef SkNoncopyable INHERITED;
124 }; 134 };
125 135
126 #endif 136 #endif
OLDNEW
« no previous file with comments | « include/core/SkPicture.h ('k') | include/private/SkMiniRecorder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698