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/shadows.cpp b/gm/shadows.cpp
index d0d23a8..44fa8e2 100644
--- a/gm/shadows.cpp
+++ b/gm/shadows.cpp
@@ -47,42 +47,42 @@
     virtual void onDraw(SkCanvas* canvas) {
     SkBlurDrawLooper* shadowLoopers[5];
     shadowLoopers[0] =
-        new SkBlurDrawLooper (SK_ColorBLUE,
-                              SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
-                              SkIntToScalar(5), SkIntToScalar(10),
-                              SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                              SkBlurDrawLooper::kOverrideColor_BlurFlag |
-                              SkBlurDrawLooper::kHighQuality_BlurFlag);
+        SkBlurDrawLooper::Create(SK_ColorBLUE,
+                                 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
+                                 SkIntToScalar(5), SkIntToScalar(10),
+                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                 SkBlurDrawLooper::kOverrideColor_BlurFlag |
+                                 SkBlurDrawLooper::kHighQuality_BlurFlag);
     SkAutoUnref aurL0(shadowLoopers[0]);
     shadowLoopers[1] =
-        new SkBlurDrawLooper (SK_ColorBLUE,
-                              SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
-                              SkIntToScalar(5), SkIntToScalar(10),
-                              SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                              SkBlurDrawLooper::kOverrideColor_BlurFlag);
+        SkBlurDrawLooper::Create(SK_ColorBLUE,
+                                 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(10)),
+                                 SkIntToScalar(5), SkIntToScalar(10),
+                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                 SkBlurDrawLooper::kOverrideColor_BlurFlag);
     SkAutoUnref aurL1(shadowLoopers[1]);
     shadowLoopers[2] =
-        new SkBlurDrawLooper (SK_ColorBLACK,
-                              SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
-                              SkIntToScalar(5),
-                              SkIntToScalar(10),
-                              SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                              SkBlurDrawLooper::kHighQuality_BlurFlag);
+        SkBlurDrawLooper::Create(SK_ColorBLACK,
+                                 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
+                                 SkIntToScalar(5),
+                                 SkIntToScalar(10),
+                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                 SkBlurDrawLooper::kHighQuality_BlurFlag);
     SkAutoUnref aurL2(shadowLoopers[2]);
     shadowLoopers[3] =
-        new SkBlurDrawLooper (0x7FFF0000,
-                              SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
-                              SkIntToScalar(-5), SkIntToScalar(-10),
-                              SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                              SkBlurDrawLooper::kOverrideColor_BlurFlag |
-                              SkBlurDrawLooper::kHighQuality_BlurFlag);
+        SkBlurDrawLooper::Create(0x7FFF0000,
+                                 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(5)),
+                                 SkIntToScalar(-5), SkIntToScalar(-10),
+                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                 SkBlurDrawLooper::kOverrideColor_BlurFlag |
+                                 SkBlurDrawLooper::kHighQuality_BlurFlag);
     SkAutoUnref aurL3(shadowLoopers[3]);
     shadowLoopers[4] =
-        new SkBlurDrawLooper (SK_ColorBLACK, SkIntToScalar(0),
-                              SkIntToScalar(5), SkIntToScalar(5),
-                              SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
-                              SkBlurDrawLooper::kOverrideColor_BlurFlag |
-                              SkBlurDrawLooper::kHighQuality_BlurFlag);
+        SkBlurDrawLooper::Create(SK_ColorBLACK, SkIntToScalar(0),
+                                 SkIntToScalar(5), SkIntToScalar(5),
+                                 SkBlurDrawLooper::kIgnoreTransform_BlurFlag |
+                                 SkBlurDrawLooper::kOverrideColor_BlurFlag |
+                                 SkBlurDrawLooper::kHighQuality_BlurFlag);
     SkAutoUnref aurL4(shadowLoopers[4]);
 
     static const struct {