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

Side by Side Diff: src/core/SkPictureRecorder.cpp

Issue 719133002: Rename GrAccelData to SkLayerInfo and move it to src/core (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix up unit test Created 6 years, 1 month 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 | « src/core/SkLayerInfo.cpp ('k') | src/core/SkRecordDraw.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 #include "SkLayerInfo.h"
8 #include "SkPictureRecorder.h" 9 #include "SkPictureRecorder.h"
9 #include "SkRecord.h" 10 #include "SkRecord.h"
10 #include "SkRecordDraw.h" 11 #include "SkRecordDraw.h"
11 #include "SkRecorder.h" 12 #include "SkRecorder.h"
12 #include "SkRecordOpts.h" 13 #include "SkRecordOpts.h"
13 #include "SkTypes.h" 14 #include "SkTypes.h"
14 15
15 // Must place SK_SUPPORT_GPU after other includes so it is defined in the
16 // Android framework build.
17 #if SK_SUPPORT_GPU
18 #include "GrPictureUtils.h"
19 #endif
20
21 SkPictureRecorder::SkPictureRecorder() {} 16 SkPictureRecorder::SkPictureRecorder() {}
22 17
23 SkPictureRecorder::~SkPictureRecorder() {} 18 SkPictureRecorder::~SkPictureRecorder() {}
24 19
25 SkCanvas* SkPictureRecorder::beginRecording(SkScalar width, SkScalar height, 20 SkCanvas* SkPictureRecorder::beginRecording(SkScalar width, SkScalar height,
26 SkBBHFactory* bbhFactory /* = NULL * /, 21 SkBBHFactory* bbhFactory /* = NULL * /,
27 uint32_t recordFlags /* = 0 */) { 22 uint32_t recordFlags /* = 0 */) {
28 fFlags = recordFlags; 23 fFlags = recordFlags;
29 fCullWidth = width; 24 fCullWidth = width;
30 fCullHeight = height; 25 fCullHeight = height;
31 26
32 if (bbhFactory) { 27 if (bbhFactory) {
33 fBBH.reset((*bbhFactory)(width, height)); 28 fBBH.reset((*bbhFactory)(width, height));
34 SkASSERT(fBBH.get()); 29 SkASSERT(fBBH.get());
35 } 30 }
36 31
37 fRecord.reset(SkNEW(SkRecord)); 32 fRecord.reset(SkNEW(SkRecord));
38 fRecorder.reset(SkNEW_ARGS(SkRecorder, (fRecord.get(), width, height))); 33 fRecorder.reset(SkNEW_ARGS(SkRecorder, (fRecord.get(), width, height)));
39 return this->getRecordingCanvas(); 34 return this->getRecordingCanvas();
40 } 35 }
41 36
42 SkCanvas* SkPictureRecorder::getRecordingCanvas() { 37 SkCanvas* SkPictureRecorder::getRecordingCanvas() {
43 return fRecorder.get(); 38 return fRecorder.get();
44 } 39 }
45 40
46 SkPicture* SkPictureRecorder::endRecording() { 41 SkPicture* SkPictureRecorder::endRecording() {
47 // TODO: delay as much of this work until just before first playback? 42 // TODO: delay as much of this work until just before first playback?
48 SkRecordOptimize(fRecord); 43 SkRecordOptimize(fRecord);
49 44
50 #if SK_SUPPORT_GPU 45 SkAutoTUnref<SkLayerInfo> saveLayerData;
51 SkAutoTUnref<GrAccelData> saveLayerData;
52 46
53 if (fBBH && (fFlags & kComputeSaveLayerInfo_RecordFlag)) { 47 if (fBBH && (fFlags & kComputeSaveLayerInfo_RecordFlag)) {
54 SkPicture::AccelData::Key key = GrAccelData::ComputeAccelDataKey(); 48 SkPicture::AccelData::Key key = SkLayerInfo::ComputeKey();
55 49
56 saveLayerData.reset(SkNEW_ARGS(GrAccelData, (key))); 50 saveLayerData.reset(SkNEW_ARGS(SkLayerInfo, (key)));
57 } 51 }
58 #endif
59 52
60 if (fBBH.get()) { 53 if (fBBH.get()) {
61 SkRect cullRect = SkRect::MakeWH(fCullWidth, fCullHeight); 54 SkRect cullRect = SkRect::MakeWH(fCullWidth, fCullHeight);
62 55
63 #if SK_SUPPORT_GPU
64 if (saveLayerData) { 56 if (saveLayerData) {
65 SkRecordComputeLayers(cullRect, *fRecord, fBBH.get(), saveLayerData) ; 57 SkRecordComputeLayers(cullRect, *fRecord, fBBH.get(), saveLayerData) ;
66 } else { 58 } else {
67 #endif
68 SkRecordFillBounds(cullRect, *fRecord, fBBH.get()); 59 SkRecordFillBounds(cullRect, *fRecord, fBBH.get());
69 #if SK_SUPPORT_GPU
70 } 60 }
71 #endif
72 } 61 }
73 62
74 SkPicture* pict = SkNEW_ARGS(SkPicture, (fCullWidth, fCullHeight, fRecord.de tach(), fBBH.get())); 63 SkPicture* pict = SkNEW_ARGS(SkPicture, (fCullWidth, fCullHeight, fRecord.de tach(), fBBH.get()));
75 64
76 #if SK_SUPPORT_GPU
77 if (saveLayerData) { 65 if (saveLayerData) {
78 pict->EXPERIMENTAL_addAccelData(saveLayerData); 66 pict->EXPERIMENTAL_addAccelData(saveLayerData);
79 } 67 }
80 #endif
81 68
82 return pict; 69 return pict;
83 } 70 }
84 71
85 void SkPictureRecorder::partialReplay(SkCanvas* canvas) const { 72 void SkPictureRecorder::partialReplay(SkCanvas* canvas) const {
86 if (NULL == canvas) { 73 if (NULL == canvas) {
87 return; 74 return;
88 } 75 }
89 SkRecordDraw(*fRecord, canvas, NULL/*bbh*/, NULL/*callback*/); 76 SkRecordDraw(*fRecord, canvas, NULL/*bbh*/, NULL/*callback*/);
90 } 77 }
OLDNEW
« no previous file with comments | « src/core/SkLayerInfo.cpp ('k') | src/core/SkRecordDraw.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698