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

Side by Side Diff: src/effects/SkLayerRasterizer.cpp

Issue 1821533002: guard rasterizer and drawlooper setters (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update android sdk 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
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkLayerRasterizer.h" 10 #include "SkLayerRasterizer.h"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 189
190 void SkLayerRasterizer::Builder::addLayer(const SkPaint& paint, SkScalar dx, 190 void SkLayerRasterizer::Builder::addLayer(const SkPaint& paint, SkScalar dx,
191 SkScalar dy) { 191 SkScalar dy) {
192 SkASSERT(fLayers); 192 SkASSERT(fLayers);
193 SkLayerRasterizer_Rec* rec = (SkLayerRasterizer_Rec*)fLayers->push_back(); 193 SkLayerRasterizer_Rec* rec = (SkLayerRasterizer_Rec*)fLayers->push_back();
194 194
195 new (&rec->fPaint) SkPaint(paint); 195 new (&rec->fPaint) SkPaint(paint);
196 rec->fOffset.set(dx, dy); 196 rec->fOffset.set(dx, dy);
197 } 197 }
198 198
199 SkLayerRasterizer* SkLayerRasterizer::Builder::detachRasterizer() { 199 sk_sp<SkLayerRasterizer> SkLayerRasterizer::Builder::detach() {
200 SkLayerRasterizer* rasterizer; 200 SkLayerRasterizer* rasterizer;
201 if (0 == fLayers->count()) { 201 if (0 == fLayers->count()) {
202 rasterizer = nullptr; 202 rasterizer = nullptr;
203 delete fLayers; 203 delete fLayers;
204 } else { 204 } else {
205 rasterizer = new SkLayerRasterizer(fLayers); 205 rasterizer = new SkLayerRasterizer(fLayers);
206 } 206 }
207 fLayers = nullptr; 207 fLayers = nullptr;
208 return rasterizer; 208 return sk_sp<SkLayerRasterizer>(rasterizer);
209 } 209 }
210 210
211 SkLayerRasterizer* SkLayerRasterizer::Builder::snapshotRasterizer() const { 211 sk_sp<SkLayerRasterizer> SkLayerRasterizer::Builder::snapshot() const {
212 if (0 == fLayers->count()) { 212 if (0 == fLayers->count()) {
213 return nullptr; 213 return nullptr;
214 } 214 }
215 SkDeque* layers = new SkDeque(sizeof(SkLayerRasterizer_Rec), fLayers->count( )); 215 SkDeque* layers = new SkDeque(sizeof(SkLayerRasterizer_Rec), fLayers->count( ));
216 SkDeque::F2BIter iter(*fLayers); 216 SkDeque::F2BIter iter(*fLayers);
217 const SkLayerRasterizer_Rec* recOrig; 217 const SkLayerRasterizer_Rec* recOrig;
218 SkDEBUGCODE(int count = 0;) 218 SkDEBUGCODE(int count = 0;)
219 while ((recOrig = static_cast<SkLayerRasterizer_Rec*>(iter.next())) != nullp tr) { 219 while ((recOrig = static_cast<SkLayerRasterizer_Rec*>(iter.next())) != nullp tr) {
220 SkDEBUGCODE(count++); 220 SkDEBUGCODE(count++);
221 SkLayerRasterizer_Rec* recCopy = static_cast<SkLayerRasterizer_Rec*>(lay ers->push_back()); 221 SkLayerRasterizer_Rec* recCopy = static_cast<SkLayerRasterizer_Rec*>(lay ers->push_back());
222 new (&recCopy->fPaint) SkPaint(recOrig->fPaint); 222 new (&recCopy->fPaint) SkPaint(recOrig->fPaint);
223 recCopy->fOffset = recOrig->fOffset; 223 recCopy->fOffset = recOrig->fOffset;
224 } 224 }
225 SkASSERT(fLayers->count() == count); 225 SkASSERT(fLayers->count() == count);
226 SkASSERT(layers->count() == count); 226 SkASSERT(layers->count() == count);
227 SkLayerRasterizer* rasterizer = new SkLayerRasterizer(layers); 227 return sk_sp<SkLayerRasterizer>(new SkLayerRasterizer(layers));
228 return rasterizer;
229 } 228 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698