Make sure SkDrawLooper objects can only be allocated on the heap.

Make constructors of SkLayerDrawLooper and SkBlurDrawLooper non-public.
Remove addLayer* methods from SkLayerDrawLooper. SkLayerDrawLooper::Builder is
used to create new objects.
Provide factory method for creating SkBlurDrawLooper.

BUG=2141
R=scroggo@google.com, reed@google.com, djsollen@google.com

Author: dominikg@chromium.org

Review URL: https://codereview.chromium.org/232913003

git-svn-id: http://skia.googlecode.com/svn/trunk@14200 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/drawlooper.cpp b/gm/drawlooper.cpp
index 678d2ad..d3a4475 100644
--- a/gm/drawlooper.cpp
+++ b/gm/drawlooper.cpp
@@ -72,7 +72,7 @@
             { 0x88000000, SkPaint::kFill_Style, 0, SkIntToScalar(10), SkIntToScalar(3) }
         };
 
-        fLooper = new SkLayerDrawLooper;
+        SkLayerDrawLooper::Builder looperBuilder;
 
         SkLayerDrawLooper::LayerInfo info;
         info.fPaintBits = SkLayerDrawLooper::kStyle_Bit | SkLayerDrawLooper::kMaskFilter_Bit;
@@ -80,7 +80,7 @@
 
         for (size_t i = 0; i < SK_ARRAY_COUNT(gParams); i++) {
             info.fOffset.set(gParams[i].fOffset, gParams[i].fOffset);
-            SkPaint* paint = fLooper->addLayer(info);
+            SkPaint* paint = looperBuilder.addLayer(info);
             paint->setColor(gParams[i].fColor);
             paint->setStyle(gParams[i].fStyle);
             paint->setStrokeWidth(gParams[i].fWidth);
@@ -90,6 +90,7 @@
                 paint->setMaskFilter(mf)->unref();
             }
         }
+        fLooper = looperBuilder.detachLooper();
     }
 
     typedef GM INHERITED;