| Index: src/effects/SkLayerDrawLooper.cpp
 | 
| diff --git a/src/effects/SkLayerDrawLooper.cpp b/src/effects/SkLayerDrawLooper.cpp
 | 
| index 449361edc03c60771bfd570efc5b79bbab2bc1e6..4bd4c40c81a30752791913c9fdeb4bfabce5098d 100644
 | 
| --- a/src/effects/SkLayerDrawLooper.cpp
 | 
| +++ b/src/effects/SkLayerDrawLooper.cpp
 | 
| @@ -354,4 +354,71 @@ void SkLayerDrawLooper::toString(SkString* str) const {
 | 
|          rec = rec->fNext;
 | 
|      }
 | 
|  }
 | 
| +
 | 
| +SkLayerDrawLooperBuilder::SkLayerDrawLooperBuilder()
 | 
| +        : fRecs(NULL),
 | 
| +          fTopRec(NULL),
 | 
| +          fCount(0) {
 | 
| +}
 | 
| +
 | 
| +SkLayerDrawLooperBuilder::~SkLayerDrawLooperBuilder() {
 | 
| +    SkLayerDrawLooper::Rec* rec = fRecs;
 | 
| +    while (rec) {
 | 
| +        SkLayerDrawLooper::Rec* next = rec->fNext;
 | 
| +        SkDELETE(rec);
 | 
| +        rec = next;
 | 
| +    }
 | 
| +}
 | 
| +
 | 
| +SkPaint* SkLayerDrawLooperBuilder::addLayer(
 | 
| +        const SkLayerDrawLooper::LayerInfo& info) {
 | 
| +    fCount += 1;
 | 
| +
 | 
| +    SkLayerDrawLooper::Rec* rec = SkNEW(SkLayerDrawLooper::Rec);
 | 
| +    rec->fNext = fRecs;
 | 
| +    rec->fInfo = info;
 | 
| +    fRecs = rec;
 | 
| +    if (NULL == fTopRec) {
 | 
| +        fTopRec = rec;
 | 
| +    }
 | 
| +
 | 
| +    return &rec->fPaint;
 | 
| +}
 | 
| +
 | 
| +void SkLayerDrawLooperBuilder::addLayer(SkScalar dx, SkScalar dy) {
 | 
| +    SkLayerDrawLooper::LayerInfo info;
 | 
| +
 | 
| +    info.fOffset.set(dx, dy);
 | 
| +    (void)this->addLayer(info);
 | 
| +}
 | 
| +
 | 
| +SkPaint* SkLayerDrawLooperBuilder::addLayerOnTop(
 | 
| +        const SkLayerDrawLooper::LayerInfo& info) {
 | 
| +    fCount += 1;
 | 
| +
 | 
| +    SkLayerDrawLooper::Rec* rec = SkNEW(SkLayerDrawLooper::Rec);
 | 
| +    rec->fNext = NULL;
 | 
| +    rec->fInfo = info;
 | 
| +    if (NULL == fRecs) {
 | 
| +        fRecs = rec;
 | 
| +    } else {
 | 
| +        SkASSERT(NULL != fTopRec);
 | 
| +        fTopRec->fNext = rec;
 | 
| +    }
 | 
| +    fTopRec = rec;
 | 
| +
 | 
| +    return &rec->fPaint;
 | 
| +}
 | 
| +
 | 
| +SkDrawLooper* SkLayerDrawLooperBuilder::createLooper() {
 | 
| +    SkLayerDrawLooper* looper = SkNEW(SkLayerDrawLooper);
 | 
| +    looper->fCount = fCount;
 | 
| +    looper->fRecs = fRecs;
 | 
| +
 | 
| +    fCount = 0;
 | 
| +    fRecs = NULL;
 | 
| +    fTopRec = NULL;
 | 
| +
 | 
| +    return looper;
 | 
| +}
 | 
|  #endif
 | 
| 
 |