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

Side by Side Diff: include/private/SkRecords.h

Issue 2197243003: Replace old SkRecords RefBox with sk_sp. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: builds Created 4 years, 4 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 | « no previous file | src/core/SkMiniRecorder.cpp » ('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 SkRecords_DEFINED 8 #ifndef SkRecords_DEFINED
9 #define SkRecords_DEFINED 9 #define SkRecords_DEFINED
10 10
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 79
80 // Defines SkRecords::Type, an enum of all record types. 80 // Defines SkRecords::Type, an enum of all record types.
81 #define ENUM(T) T##_Type, 81 #define ENUM(T) T##_Type,
82 enum Type { SK_RECORD_TYPES(ENUM) }; 82 enum Type { SK_RECORD_TYPES(ENUM) };
83 #undef ENUM 83 #undef ENUM
84 84
85 #define ACT_AS_PTR(ptr) \ 85 #define ACT_AS_PTR(ptr) \
86 operator T*() const { return ptr; } \ 86 operator T*() const { return ptr; } \
87 T* operator->() const { return ptr; } 87 T* operator->() const { return ptr; }
88 88
89 template <typename T>
90 class RefBox : SkNoncopyable {
91 public:
92 RefBox() {}
93 RefBox(T* obj) : fObj(SkSafeRef(obj)) {}
94 RefBox(RefBox&& o) : fObj(o.fObj) {
95 o.fObj = nullptr;
96 }
97 ~RefBox() { SkSafeUnref(fObj); }
98
99 ACT_AS_PTR(fObj);
100
101 private:
102 T* fObj;
103 };
104
105 // An Optional doesn't own the pointer's memory, but may need to destroy non-POD data. 89 // An Optional doesn't own the pointer's memory, but may need to destroy non-POD data.
106 template <typename T> 90 template <typename T>
107 class Optional : SkNoncopyable { 91 class Optional : SkNoncopyable {
108 public: 92 public:
109 Optional() : fPtr(nullptr) {} 93 Optional() : fPtr(nullptr) {}
110 Optional(T* ptr) : fPtr(ptr) {} 94 Optional(T* ptr) : fPtr(ptr) {}
111 Optional(Optional&& o) : fPtr(o.fPtr) { 95 Optional(Optional&& o) : fPtr(o.fPtr) {
112 o.fPtr = nullptr; 96 o.fPtr = nullptr;
113 } 97 }
114 ~Optional() { if (fPtr) fPtr->~T(); } 98 ~Optional() { if (fPtr) fPtr->~T(); }
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 165
182 RECORD(NoOp, 0); 166 RECORD(NoOp, 0);
183 RECORD(Restore, 0, 167 RECORD(Restore, 0,
184 SkIRect devBounds; 168 SkIRect devBounds;
185 TypedMatrix matrix); 169 TypedMatrix matrix);
186 RECORD(Save, 0); 170 RECORD(Save, 0);
187 171
188 RECORD(SaveLayer, 0, 172 RECORD(SaveLayer, 0,
189 Optional<SkRect> bounds; 173 Optional<SkRect> bounds;
190 Optional<SkPaint> paint; 174 Optional<SkPaint> paint;
191 RefBox<const SkImageFilter> backdrop; 175 sk_sp<const SkImageFilter> backdrop;
192 SkCanvas::SaveLayerFlags saveLayerFlags); 176 SkCanvas::SaveLayerFlags saveLayerFlags);
193 177
194 RECORD(SetMatrix, 0, 178 RECORD(SetMatrix, 0,
195 TypedMatrix matrix); 179 TypedMatrix matrix);
196 RECORD(Concat, 0, 180 RECORD(Concat, 0,
197 TypedMatrix matrix); 181 TypedMatrix matrix);
198 182
199 RECORD(TranslateZ, 0, SkScalar z); 183 RECORD(TranslateZ, 0, SkScalar z);
200 184
201 struct RegionOpAndAA { 185 struct RegionOpAndAA {
(...skipping 25 matching lines...) Expand all
227 RECORD(DrawDRRect, kDraw_Tag, 211 RECORD(DrawDRRect, kDraw_Tag,
228 SkPaint paint; 212 SkPaint paint;
229 SkRRect outer; 213 SkRRect outer;
230 SkRRect inner); 214 SkRRect inner);
231 RECORD(DrawDrawable, kDraw_Tag, 215 RECORD(DrawDrawable, kDraw_Tag,
232 Optional<SkMatrix> matrix; 216 Optional<SkMatrix> matrix;
233 SkRect worstCaseBounds; 217 SkRect worstCaseBounds;
234 int32_t index); 218 int32_t index);
235 RECORD(DrawImage, kDraw_Tag|kHasImage_Tag, 219 RECORD(DrawImage, kDraw_Tag|kHasImage_Tag,
236 Optional<SkPaint> paint; 220 Optional<SkPaint> paint;
237 RefBox<const SkImage> image; 221 sk_sp<const SkImage> image;
238 SkScalar left; 222 SkScalar left;
239 SkScalar top); 223 SkScalar top);
240 RECORD(DrawImageRect, kDraw_Tag|kHasImage_Tag, 224 RECORD(DrawImageRect, kDraw_Tag|kHasImage_Tag,
241 Optional<SkPaint> paint; 225 Optional<SkPaint> paint;
242 RefBox<const SkImage> image; 226 sk_sp<const SkImage> image;
243 Optional<SkRect> src; 227 Optional<SkRect> src;
244 SkRect dst; 228 SkRect dst;
245 SkCanvas::SrcRectConstraint constraint); 229 SkCanvas::SrcRectConstraint constraint);
246 RECORD(DrawImageNine, kDraw_Tag|kHasImage_Tag, 230 RECORD(DrawImageNine, kDraw_Tag|kHasImage_Tag,
247 Optional<SkPaint> paint; 231 Optional<SkPaint> paint;
248 RefBox<const SkImage> image; 232 sk_sp<const SkImage> image;
249 SkIRect center; 233 SkIRect center;
250 SkRect dst); 234 SkRect dst);
251 RECORD(DrawOval, kDraw_Tag, 235 RECORD(DrawOval, kDraw_Tag,
252 SkPaint paint; 236 SkPaint paint;
253 SkRect oval); 237 SkRect oval);
254 RECORD(DrawPaint, kDraw_Tag, 238 RECORD(DrawPaint, kDraw_Tag,
255 SkPaint paint); 239 SkPaint paint);
256 RECORD(DrawPath, kDraw_Tag, 240 RECORD(DrawPath, kDraw_Tag,
257 SkPaint paint; 241 SkPaint paint;
258 PreCachedPath path); 242 PreCachedPath path);
259 RECORD(DrawPicture, kDraw_Tag, 243 RECORD(DrawPicture, kDraw_Tag,
260 Optional<SkPaint> paint; 244 Optional<SkPaint> paint;
261 RefBox<const SkPicture> picture; 245 sk_sp<const SkPicture> picture;
262 TypedMatrix matrix); 246 TypedMatrix matrix);
263 RECORD(DrawShadowedPicture, kDraw_Tag, 247 RECORD(DrawShadowedPicture, kDraw_Tag,
264 Optional<SkPaint> paint; 248 Optional<SkPaint> paint;
265 RefBox<const SkPicture> picture; 249 sk_sp<const SkPicture> picture;
266 TypedMatrix matrix); 250 TypedMatrix matrix);
267 RECORD(DrawPoints, kDraw_Tag, 251 RECORD(DrawPoints, kDraw_Tag,
268 SkPaint paint; 252 SkPaint paint;
269 SkCanvas::PointMode mode; 253 SkCanvas::PointMode mode;
270 unsigned count; 254 unsigned count;
271 SkPoint* pts); 255 SkPoint* pts);
272 RECORD(DrawPosText, kDraw_Tag|kHasText_Tag, 256 RECORD(DrawPosText, kDraw_Tag|kHasText_Tag,
273 SkPaint paint; 257 SkPaint paint;
274 PODArray<char> text; 258 PODArray<char> text;
275 size_t byteLength; 259 size_t byteLength;
(...skipping 11 matching lines...) Expand all
287 SkPaint paint; 271 SkPaint paint;
288 SkRect rect); 272 SkRect rect);
289 RECORD(DrawText, kDraw_Tag|kHasText_Tag, 273 RECORD(DrawText, kDraw_Tag|kHasText_Tag,
290 SkPaint paint; 274 SkPaint paint;
291 PODArray<char> text; 275 PODArray<char> text;
292 size_t byteLength; 276 size_t byteLength;
293 SkScalar x; 277 SkScalar x;
294 SkScalar y); 278 SkScalar y);
295 RECORD(DrawTextBlob, kDraw_Tag|kHasText_Tag, 279 RECORD(DrawTextBlob, kDraw_Tag|kHasText_Tag,
296 SkPaint paint; 280 SkPaint paint;
297 RefBox<const SkTextBlob> blob; 281 sk_sp<const SkTextBlob> blob;
298 SkScalar x; 282 SkScalar x;
299 SkScalar y); 283 SkScalar y);
300 RECORD(DrawTextOnPath, kDraw_Tag|kHasText_Tag, 284 RECORD(DrawTextOnPath, kDraw_Tag|kHasText_Tag,
301 SkPaint paint; 285 SkPaint paint;
302 PODArray<char> text; 286 PODArray<char> text;
303 size_t byteLength; 287 size_t byteLength;
304 PreCachedPath path; 288 PreCachedPath path;
305 TypedMatrix matrix); 289 TypedMatrix matrix);
306 RECORD(DrawTextRSXform, kDraw_Tag|kHasText_Tag, 290 RECORD(DrawTextRSXform, kDraw_Tag|kHasText_Tag,
307 SkPaint paint; 291 SkPaint paint;
308 PODArray<char> text; 292 PODArray<char> text;
309 size_t byteLength; 293 size_t byteLength;
310 PODArray<SkRSXform> xforms; 294 PODArray<SkRSXform> xforms;
311 Optional<SkRect> cull); 295 Optional<SkRect> cull);
312 RECORD(DrawPatch, kDraw_Tag, 296 RECORD(DrawPatch, kDraw_Tag,
313 SkPaint paint; 297 SkPaint paint;
314 PODArray<SkPoint> cubics; 298 PODArray<SkPoint> cubics;
315 PODArray<SkColor> colors; 299 PODArray<SkColor> colors;
316 PODArray<SkPoint> texCoords; 300 PODArray<SkPoint> texCoords;
317 RefBox<SkXfermode> xmode); 301 sk_sp<SkXfermode> xmode);
318 RECORD(DrawAtlas, kDraw_Tag|kHasImage_Tag, 302 RECORD(DrawAtlas, kDraw_Tag|kHasImage_Tag,
319 Optional<SkPaint> paint; 303 Optional<SkPaint> paint;
320 RefBox<const SkImage> atlas; 304 sk_sp<const SkImage> atlas;
321 PODArray<SkRSXform> xforms; 305 PODArray<SkRSXform> xforms;
322 PODArray<SkRect> texs; 306 PODArray<SkRect> texs;
323 PODArray<SkColor> colors; 307 PODArray<SkColor> colors;
324 int count; 308 int count;
325 SkXfermode::Mode mode; 309 SkXfermode::Mode mode;
326 Optional<SkRect> cull); 310 Optional<SkRect> cull);
327 RECORD(DrawVertices, kDraw_Tag, 311 RECORD(DrawVertices, kDraw_Tag,
328 SkPaint paint; 312 SkPaint paint;
329 SkCanvas::VertexMode vmode; 313 SkCanvas::VertexMode vmode;
330 int vertexCount; 314 int vertexCount;
331 PODArray<SkPoint> vertices; 315 PODArray<SkPoint> vertices;
332 PODArray<SkPoint> texs; 316 PODArray<SkPoint> texs;
333 PODArray<SkColor> colors; 317 PODArray<SkColor> colors;
334 RefBox<SkXfermode> xmode; 318 sk_sp<SkXfermode> xmode;
335 PODArray<uint16_t> indices; 319 PODArray<uint16_t> indices;
336 int indexCount); 320 int indexCount);
337 RECORD(DrawAnnotation, 0, 321 RECORD(DrawAnnotation, 0,
338 SkRect rect; 322 SkRect rect;
339 SkString key; 323 SkString key;
340 RefBox<SkData> value); 324 sk_sp<SkData> value);
341 #undef RECORD 325 #undef RECORD
342 326
343 } // namespace SkRecords 327 } // namespace SkRecords
344 328
345 #endif//SkRecords_DEFINED 329 #endif//SkRecords_DEFINED
OLDNEW
« no previous file with comments | « no previous file | src/core/SkMiniRecorder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698