| OLD | NEW |
| 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 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 void SkLayerRasterizer::Builder::addLayer(const SkPaint& paint, SkScalar dx, | 207 void SkLayerRasterizer::Builder::addLayer(const SkPaint& paint, SkScalar dx, |
| 208 SkScalar dy) { | 208 SkScalar dy) { |
| 209 SkASSERT(fLayers); | 209 SkASSERT(fLayers); |
| 210 SkLayerRasterizer_Rec* rec = (SkLayerRasterizer_Rec*)fLayers->push_back(); | 210 SkLayerRasterizer_Rec* rec = (SkLayerRasterizer_Rec*)fLayers->push_back(); |
| 211 | 211 |
| 212 SkNEW_PLACEMENT_ARGS(&rec->fPaint, SkPaint, (paint)); | 212 SkNEW_PLACEMENT_ARGS(&rec->fPaint, SkPaint, (paint)); |
| 213 rec->fOffset.set(dx, dy); | 213 rec->fOffset.set(dx, dy); |
| 214 } | 214 } |
| 215 | 215 |
| 216 SkLayerRasterizer* SkLayerRasterizer::Builder::detachRasterizer() { | 216 SkLayerRasterizer* SkLayerRasterizer::Builder::detachRasterizer() { |
| 217 SkLayerRasterizer* rasterizer = SkNEW_ARGS(SkLayerRasterizer, (fLayers)); | 217 SkLayerRasterizer* rasterizer; |
| 218 if (0 == fLayers->count()) { |
| 219 rasterizer = NULL; |
| 220 SkDELETE(fLayers); |
| 221 } else { |
| 222 rasterizer = SkNEW_ARGS(SkLayerRasterizer, (fLayers)); |
| 223 } |
| 218 fLayers = NULL; | 224 fLayers = NULL; |
| 219 return rasterizer; | 225 return rasterizer; |
| 220 } | 226 } |
| 221 | 227 |
| 222 SkLayerRasterizer* SkLayerRasterizer::Builder::snapshotRasterizer() const { | 228 SkLayerRasterizer* SkLayerRasterizer::Builder::snapshotRasterizer() const { |
| 229 if (0 == fLayers->count()) { |
| 230 return NULL; |
| 231 } |
| 223 SkDeque* layers = SkNEW_ARGS(SkDeque, (sizeof(SkLayerRasterizer_Rec), fLayer
s->count())); | 232 SkDeque* layers = SkNEW_ARGS(SkDeque, (sizeof(SkLayerRasterizer_Rec), fLayer
s->count())); |
| 224 SkDeque::F2BIter iter(*fLayers); | 233 SkDeque::F2BIter iter(*fLayers); |
| 225 const SkLayerRasterizer_Rec* recOrig; | 234 const SkLayerRasterizer_Rec* recOrig; |
| 226 SkDEBUGCODE(int count = 0;) | 235 SkDEBUGCODE(int count = 0;) |
| 227 while ((recOrig = static_cast<SkLayerRasterizer_Rec*>(iter.next())) != NULL)
{ | 236 while ((recOrig = static_cast<SkLayerRasterizer_Rec*>(iter.next())) != NULL)
{ |
| 228 SkDEBUGCODE(count++); | 237 SkDEBUGCODE(count++); |
| 229 SkLayerRasterizer_Rec* recCopy = static_cast<SkLayerRasterizer_Rec*>(lay
ers->push_back()); | 238 SkLayerRasterizer_Rec* recCopy = static_cast<SkLayerRasterizer_Rec*>(lay
ers->push_back()); |
| 230 SkNEW_PLACEMENT_ARGS(&recCopy->fPaint, SkPaint, (recOrig->fPaint)); | 239 SkNEW_PLACEMENT_ARGS(&recCopy->fPaint, SkPaint, (recOrig->fPaint)); |
| 231 recCopy->fOffset = recOrig->fOffset; | 240 recCopy->fOffset = recOrig->fOffset; |
| 232 } | 241 } |
| 233 SkASSERT(fLayers->count() == count); | 242 SkASSERT(fLayers->count() == count); |
| 234 SkASSERT(layers->count() == count); | 243 SkASSERT(layers->count() == count); |
| 235 SkLayerRasterizer* rasterizer = SkNEW_ARGS(SkLayerRasterizer, (layers)); | 244 SkLayerRasterizer* rasterizer = SkNEW_ARGS(SkLayerRasterizer, (layers)); |
| 236 return rasterizer; | 245 return rasterizer; |
| 237 } | 246 } |
| OLD | NEW |