Builder class for SkLayerRasterizer.

Provide builder class to make SkLayerRasterizer immutable. We have to keep the
addLayer() methods for now because they are used in Chrome. They will be removed
once this changed has been rolled into Chrome.
An added benefit of this is that this class can only be allocated on the heap.

BUG=skia:2187
R=reed@google.com, scroggo@google.com, mtklein@google.com

Author: dominikg@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@13590 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/ClockFaceView.cpp b/samplecode/ClockFaceView.cpp
index ed0bce9..a887cc6 100644
--- a/samplecode/ClockFaceView.cpp
+++ b/samplecode/ClockFaceView.cpp
@@ -133,15 +133,15 @@
     return new Dot2DPathEffect(rad, lattice, pts);
 }
 
-static void r7(SkLayerRasterizer* rast, SkPaint& p, SkScalar interp) {
+static void r7(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p, SkScalar interp) {
     p.setPathEffect(makepe(SkScalarToFloat(interp), NULL))->unref();
-    rast->addLayer(p);
+    rastBuilder->addLayer(p);
 #if 0
     p.setPathEffect(new InverseFillPE())->unref();
     p.setXfermodeMode(SkXfermode::kSrcIn_Mode);
     p.setXfermodeMode(SkXfermode::kClear_Mode);
     p.setAlpha((1 - interp) * 255);
-    rast->addLayer(p);
+    rastBuilder->addLayer(p);
 #endif
 }
 
@@ -152,11 +152,11 @@
 static void apply_shader(SkPaint* paint, float scale)
 {
     SkPaint p;
-    SkLayerRasterizer*  rast = new SkLayerRasterizer;
+    SkLayerRasterizer::Builder rastBuilder;
 
     p.setAntiAlias(true);
-    r7(rast, p, scale);
-    paint->setRasterizer(rast)->unref();
+    r7(&rastBuilder, p, scale);
+    paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
 
     paint->setColor(SK_ColorBLUE);
 }