explicitly include blurimagefilter include

Try explicitly adding
to fix the bookmaker nightly bot.

R=jcgregorio@google.com,caryclark@google.com

Docs-Preview: https://skia.org/?cl=137421
Bug: skia:6898
Change-Id: Iff27845e6872b885b8494e9fc236f4f05c10c301
Reviewed-on: https://skia-review.googlesource.com/137421
Reviewed-by: Cary Clark <caryclark@skia.org>
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Cary Clark <caryclark@skia.org>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Auto-Submit: Cary Clark <caryclark@skia.org>
diff --git a/docs/SkCanvas_Reference.bmh b/docs/SkCanvas_Reference.bmh
index c026ffe..57125d7 100644
--- a/docs/SkCanvas_Reference.bmh
+++ b/docs/SkCanvas_Reference.bmh
@@ -1509,6 +1509,12 @@
 Canvas.
 ##
 #Height 128
+#Function
+###$
+#include "SkBlurImageFilter.h"
+$$$#
+##
+
 void draw(SkCanvas* canvas) {
     SkPaint paint, blur;
     blur.setImageFilter(SkBlurImageFilter::Make(3, 3, nullptr));
@@ -1558,6 +1564,12 @@
 Image_Filter blurs past edge of Layer so red rectangle is blurred on all sides.
 ##
 #Height 128
+#Function
+###$
+#include "SkBlurImageFilter.h"
+$$$#
+##
+
 void draw(SkCanvas* canvas) {
     SkPaint paint, blur;
     blur.setImageFilter(SkBlurImageFilter::Make(3, 3, nullptr));
diff --git a/docs/SkPaint_Reference.bmh b/docs/SkPaint_Reference.bmh
index 99873ee..21521af 100644
--- a/docs/SkPaint_Reference.bmh
+++ b/docs/SkPaint_Reference.bmh
@@ -3226,6 +3226,11 @@
 
 #Example
     #ToDo explain why the two draws are so different ##
+    #Function
+    ###$
+    #include "SkBlurImageFilter.h"
+    $$$#
+    ##
     void draw(SkCanvas* canvas) {
         SkPaint paint;
         paint.setStyle(SkPaint::kStroke_Style);
@@ -3252,6 +3257,11 @@
     #Return  Image_Filter if previously set, nullptr otherwise ##
 
     #Example
+        #Function
+        ###$
+        #include "SkBlurImageFilter.h"
+        $$$#
+        ##
         void draw(SkCanvas* canvas) {
            SkPaint paint;
            SkDebugf("nullptr %c= image filter\n", paint.getImageFilter() ? '!' : '=');
diff --git a/site/user/api/SkCanvas_Reference.md b/site/user/api/SkCanvas_Reference.md
index b2b0f93..5c391e0 100644
--- a/site/user/api/SkCanvas_Reference.md
+++ b/site/user/api/SkCanvas_Reference.md
@@ -2100,7 +2100,7 @@
 
 ### Example
 
-<div><fiddle-embed name="1a025d6018f64140af2dc36acad59008"><div>Rectangles are blurred by <a href='undocumented#Image_Filter'>Image Filter</a> when <a href='#SkCanvas_restore'>restore</a> draws <a href='#Layer'>Layer</a> to main
+<div><fiddle-embed name="42318b18d403e17e07a541652da91ee2"><div>Rectangles are blurred by <a href='undocumented#Image_Filter'>Image Filter</a> when <a href='#SkCanvas_restore'>restore</a> draws <a href='#Layer'>Layer</a> to main
 <a href='#Canvas'>Canvas</a>.
 </div></fiddle-embed></div>
 
@@ -2149,7 +2149,7 @@
 
 ### Example
 
-<div><fiddle-embed name="5b59231feae0c09cb1ab6a292229d7a4"><div>Rectangles are blurred by <a href='undocumented#Image_Filter'>Image Filter</a> when <a href='#SkCanvas_restore'>restore</a> draws <a href='#Layer'>Layer</a> to main <a href='#Canvas'>Canvas</a>.
+<div><fiddle-embed name="a17aec3aa4909527be039e26a7eda694"><div>Rectangles are blurred by <a href='undocumented#Image_Filter'>Image Filter</a> when <a href='#SkCanvas_restore'>restore</a> draws <a href='#Layer'>Layer</a> to main <a href='#Canvas'>Canvas</a>.
 The red rectangle is clipped; it does not fully fit on <a href='#Layer'>Layer</a>.
 <a href='undocumented#Image_Filter'>Image Filter</a> blurs past edge of <a href='#Layer'>Layer</a> so red rectangle is blurred on all sides.
 </div></fiddle-embed></div>
diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md
index a4c62db..3821dc3 100644
--- a/site/user/api/SkPaint_Reference.md
+++ b/site/user/api/SkPaint_Reference.md
@@ -4034,7 +4034,7 @@
 </pre>
 
 Returns <a href='undocumented#Typeface'>Typeface</a> if set, or nullptr.
-Increments <a href='undocumented#Typeface'>Typeface</a> <a href='undocumented#Reference_Count'>Reference Count</a> by one.
+Does not alter <a href='undocumented#Typeface'>Typeface</a> <a href='undocumented#Reference_Count'>Reference Count</a>.
 
 ### Return Value
 
@@ -4120,7 +4120,7 @@
 
 ### Example
 
-<div><fiddle-embed name="250e45c5935d54eac6aca775d1fe3475"></fiddle-embed></div>
+<div><fiddle-embed name="ece04ee3d3761e3425f37c8f06f054c1"></fiddle-embed></div>
 
 <a name='SkPaint_getImageFilter'></a>
 ## getImageFilter
@@ -4138,7 +4138,7 @@
 
 ### Example
 
-<div><fiddle-embed name="7b8118ff57fcb84e6bc82380d155b62e">
+<div><fiddle-embed name="c11f8eaa1dd149bc18db21e23ce26904">
 
 #### Example Output
 
diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm
index 3b280a3..e8b4e7e 100644
--- a/site/user/api/catalog.htm
+++ b/site/user/api/catalog.htm
@@ -70,6 +70,13 @@
     "name": "SkBitmap::colorSpace",
         "stdout": "gammaCloseToSRGB: false  gammaIsLinear: true  isSRGB: false\\n"
     },
+        "SkBitmap_colorType": {
+    "code": "void draw(SkCanvas* canvas) {\n    const char* colors[] = {\"Unknown\", \"Alpha_8\", \"RGB_565\", \"ARGB_4444\", \"RGBA_8888\", \"RGB_888x\",\n                            \"BGRA_8888\", \"RGBA_1010102\", \"RGB_101010x\", \"Gray_8\", \"RGBA_F16\"};\n    SkBitmap bitmap;\n    bitmap.setInfo(SkImageInfo::MakeA8(16, 32));\n    SkDebugf(\"color type: k\" \"%s\" \"_SkColorType\\n\", colors[bitmap.colorType()]);\n}",
+    "hash": "ceb77fab7326b57822a147b04aa0960e",
+    "file": "SkBitmap_Reference",
+    "name": "SkBitmap::colorType",
+        "stdout": "color type: kAlpha_8_SkColorType\\n"
+    },
         "SkBitmap_computeByteSize": {
     "code": "void draw(SkCanvas* canvas) {\n    SkBitmap bitmap;\n    for (int width : { 1, 1000, 1000000 } ) {\n        for (int height: { 1, 1000, 1000000 } ) {\n            SkImageInfo imageInfo = SkImageInfo::MakeN32(width, height, kPremul_SkAlphaType);\n            bitmap.setInfo(imageInfo, width * 5);\n            SkDebugf(\"width: %7d height: %7d computeByteSize: %13lld\\n\", width, height,\n                     bitmap.computeByteSize());\n        }\n    }\n}",
     "hash": "165c8f208829fc0908e8a50da60c0076",
@@ -189,6 +196,13 @@
     "name": "SkBitmap::height()",
         "stdout": "bitmap height: 32  info height: 32\\n"
     },
+        "SkBitmap_info": {
+    "code": "void draw(SkCanvas* canvas) {\n    // SkBitmap source;  // pre-populated with soccer ball by fiddle.skia.org\n    const SkImageInfo& info = source.info();\n    const char* alphas[] = {\"Unknown\", \"Opaque\", \"Premul\", \"Unpremul\"};\n    const char* colors[] = {\"Unknown\", \"Alpha_8\", \"RGB_565\", \"ARGB_4444\", \"RGBA_8888\", \"RGB_888x\",\n                            \"BGRA_8888\", \"RGBA_1010102\", \"RGB_101010x\", \"Gray_8\", \"RGBA_F16\"};\n    SkDebugf(\"width: %d height: %d color: %s alpha: %s\\n\", info.width(), info.height(),\n                colors[info.colorType()], alphas[info.alphaType()]);\n}\n",
+    "hash": "ec47c4dc23e2925ad565eaba55a91553",
+    "file": "SkBitmap_Reference",
+    "name": "SkBitmap::info()",
+        "stdout": "width: 56 height: 56 color: BGRA_8888 alpha: Opaque\\n"
+    },
         "SkBitmap_installPixels": {
     "code": "static void releaseProc(void* addr, void* ) {\n    SkDebugf(\"releaseProc called\\n\");\n    delete[] (uint32_t*) addr;\n}\n\nvoid draw(SkCanvas* canvas) {\n   SkBitmap bitmap;\n   void* pixels = new uint32_t[8 * 8];\n   SkImageInfo info = SkImageInfo::MakeN32(8, 8, kOpaque_SkAlphaType);\n   SkDebugf(\"before installPixels\\n\");\n   bool installed = bitmap.installPixels(info, pixels, 16, releaseProc, nullptr);\n   SkDebugf(\"install \" \"%s\" \"successful\\n\", installed ? \"\" : \"not \");\n}\n",
     "hash": "8c4f7bf73fffa1a812ee8e88e44e639c",
@@ -1541,8 +1555,8 @@
         "stdout": "SkPaint::kNormal_Hinting == paint.getHinting()\\n"
     },
         "SkPaint_getImageFilter": {
-    "code": "void draw(SkCanvas* canvas) {\n   SkPaint paint;\n   SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n   paint.setImageFilter(SkBlurImageFilter::Make(kOuter_SkBlurStyle, 3, nullptr, nullptr));\n   SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n}\n",
-    "hash": "7b8118ff57fcb84e6bc82380d155b62e",
+    "code": "#include \"SkBlurImageFilter.h\"\n\nvoid draw(SkCanvas* canvas) {\n   SkPaint paint;\n   SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n   paint.setImageFilter(SkBlurImageFilter::Make(kOuter_SkBlurStyle, 3, nullptr, nullptr));\n   SkDebugf(\"nullptr %c= image filter\\n\", paint.getImageFilter() ? '!' : '=');\n}\n",
+    "hash": "c11f8eaa1dd149bc18db21e23ce26904",
     "file": "SkPaint_Reference",
     "name": "SkPaint::getImageFilter",
         "stdout": "nullptr == image filter\\nnullptr != image filter\\n"
@@ -3178,6 +3192,13 @@
     "name": "SkSurface::MakeNull",
         "stdout": "SkSurface::MakeNull(0, 0) == nullptr\\nsurf-\\u003emakeImageSnapshot() == nullptr\\n"
     },
+        "SkSurface_MakeRaster": {
+    "code": "void draw(SkCanvas* ) {\n    SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3);\n    const size_t rowBytes = 64;\n    sk_sp<SkSurface> surface(SkSurface::MakeRaster(info, rowBytes, nullptr));\n    SkCanvas* canvas = surface->getCanvas();\n    canvas->clear(SK_ColorWHITE);\n    SkPixmap pixmap;\n    if (surface->peekPixels(&pixmap)) {\n        const uint32_t* colorPtr = pixmap.addr32();\n        SkPMColor pmWhite = colorPtr[0];\n        SkPaint paint;\n        canvas->drawPoint(1, 1, paint);\n        canvas->flush();  // ensure that point was drawn\n        for (int y = 0; y < info.height(); ++y) {\n            for (int x = 0; x < info.width(); ++x) {\n                SkDebugf(\"%c\", colorPtr[x] == pmWhite ? '-' : 'x');\n            }\n            colorPtr += rowBytes / sizeof(colorPtr[0]);\n            SkDebugf(\"\\n\");\n        }\n    }\n}\n",
+    "hash": "a803910ada4f8733f0b62456afead55f",
+    "file": "SkSurface_Reference",
+    "name": "SkSurface::MakeRaster",
+        "stdout": "---\\n-x-\\n---\\n"
+    },
         "SkSurface_MakeRasterDirect": {
     "code": "void draw(SkCanvas* ) {\n    SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3);\n    const size_t size = info.computeMinByteSize();\n    SkAutoTMalloc<SkPMColor> storage(size);\n    SkPMColor* pixels = storage.get();\n    sk_sp<SkSurface> surface(SkSurface::MakeRasterDirect(info, pixels, info.minRowBytes()));\n    SkCanvas* canvas = surface->getCanvas();\n    canvas->clear(SK_ColorWHITE);\n    SkPMColor pmWhite = pixels[0];\n    SkPaint paint;\n    canvas->drawPoint(1, 1, paint);\n    canvas->flush();  // ensure that point was drawn\n    for (int y = 0; y < info.height(); ++y) {\n        for (int x = 0; x < info.width(); ++x) {\n            SkDebugf(\"%c\", *pixels++ == pmWhite ? '-' : 'x');\n        }\n        SkDebugf(\"\\n\");\n    }\n}\n",
     "hash": "3f5aeb870104187643197354a7f1d27a",
@@ -3206,6 +3227,13 @@
     "name": "SkSurface::MakeRaster_2",
         "stdout": "---\\n-x-\\n---\\n"
     },
+        "SkSurface_generationID": {
+    "code": "void draw(SkCanvas* canvas) {\n    auto surface = SkSurface::MakeRasterN32Premul(1, 1);\n    for (int i = 0; i < 3; ++i) {\n        SkDebugf(\"surface generationID: %d\\n\", surface->generationID());\n        if (0 == i) {\n            surface->getCanvas()->drawColor(SK_ColorBLACK);\n        } else {\n            surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);\n        }\n    }\n}",
+    "hash": "be9574c4a14f891e1abb4ec2b1e51d6c",
+    "file": "SkSurface_Reference",
+    "name": "SkSurface::generationID",
+        "stdout": "surface generationID: 1\\nsurface generationID: 2\\nsurface generationID: 3\\n"
+    },
         "SkSurface_height": {
     "code": "void draw(SkCanvas* canvas) {\n    const int width = 37;\n    const int height = 1000;\n    auto surf = SkSurface::MakeNull(width, height);\n    auto nullCanvas = surf->getCanvas();\n    SkDebugf(\"surface height=%d  canvas height=%d\\n\", surf->height(),\n             nullCanvas->getBaseLayerSize().fHeight);\n}",
     "hash": "20571cc23e3146deaa09046b64cc0aef",
@@ -3213,6 +3241,13 @@
     "name": "SkSurface::height()",
         "stdout": "surface height=1000  canvas height=1000\\n"
     },
+        "SkSurface_notifyContentWillChange": {
+    "code": "void draw(SkCanvas* canvas) {\n    auto surface = SkSurface::MakeRasterN32Premul(1, 1);\n    for (int i = 0; i < 3; ++i) {\n        SkDebugf(\"surface generationID: %d\\n\", surface->generationID());\n        if (0 == i) {\n            surface->getCanvas()->drawColor(SK_ColorBLACK);\n        } else {\n            surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);\n        }\n    }\n}",
+    "hash": "be9574c4a14f891e1abb4ec2b1e51d6c",
+    "file": "SkSurface_Reference",
+    "name": "SkSurface::notifyContentWillChange",
+        "stdout": "surface generationID: 1\\nsurface generationID: 2\\nsurface generationID: 3\\n"
+    },
         "SkSurface_props": {
     "code": "void draw(SkCanvas* canvas) {\n    const char* names[] = { \"Unknown\", \"RGB_H\", \"BGR_H\", \"RGB_V\", \"BGR_V\" };\n    sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));\n    SkDebugf(\"surf.props(): k%s_SkPixelGeometry\\n\", names[surf->props().pixelGeometry()]);\n}",
     "hash": "13cf9e7b2894ae6e98c1fd719040bf01",
@@ -3566,10 +3601,10 @@
     "name": "Font_Metrics"
 },
     "Paint_Image_Filter_Methods": {
-    "code": "void draw(SkCanvas* canvas) {\n    SkPaint paint;\n    paint.setStyle(SkPaint::kStroke_Style);\n    paint.setStrokeWidth(2);\n    SkRegion region;\n    region.op( 10, 10, 50, 50, SkRegion::kUnion_Op);\n    region.op( 10, 50, 90, 90, SkRegion::kUnion_Op);\n    paint.setImageFilter(SkBlurImageFilter::Make(5.0f, 5.0f, nullptr));\n    canvas->drawRegion(region, paint);\n    paint.setImageFilter(nullptr);\n    paint.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, 5));\n    canvas->translate(100, 100);\n    canvas->drawRegion(region, paint);\n}\n",
+    "code": "#include \"SkBlurImageFilter.h\"\n\nvoid draw(SkCanvas* canvas) {\n    SkPaint paint;\n    paint.setStyle(SkPaint::kStroke_Style);\n    paint.setStrokeWidth(2);\n    SkRegion region;\n    region.op( 10, 10, 50, 50, SkRegion::kUnion_Op);\n    region.op( 10, 50, 90, 90, SkRegion::kUnion_Op);\n    paint.setImageFilter(SkBlurImageFilter::Make(5.0f, 5.0f, nullptr));\n    canvas->drawRegion(region, paint);\n    paint.setImageFilter(nullptr);\n    paint.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, 5));\n    canvas->translate(100, 100);\n    canvas->drawRegion(region, paint);\n}\n",
     "width": 256,
     "height": 256,
-    "hash": "250e45c5935d54eac6aca775d1fe3475",
+    "hash": "ece04ee3d3761e3425f37c8f06f054c1",
     "file": "SkPaint_Reference",
     "name": "Image_Filter_Methods"
 },
@@ -3845,14 +3880,6 @@
     "file": "SkBitmap_Reference",
     "name": "SkBitmap::bounds()"
 },
-    "SkBitmap_colorType": {
-    "code": "void draw(SkCanvas* canvas) {\n    const char* colors[] = {\"Unknown\", \"Alpha_8\", \"RGB_565\", \"ARGB_4444\", \"RGBA_8888\", \"RGB_888x\",\n                            \"BGRA_8888\", \"RGBA_1010102\", \"RGB_101010x\", \"Gray_8\", \"RGBA_F16\"};\n    SkBitmap bitmap;\n    bitmap.setInfo(SkImageInfo::MakeA8(16, 32));\n    SkDebugf(\"color type: k\" \"%s\" \"_SkColorType\\n\", colors[bitmap.colorType()]);\n}",
-    "width": 256,
-    "height": 256,
-    "hash": "ceb77fab7326b57822a147b04aa0960e",
-    "file": "SkBitmap_Reference",
-    "name": "SkBitmap::colorType"
-},
     "SkBitmap_erase": {
     "code": "void draw(SkCanvas* canvas) {\n    SkBitmap bitmap;\n    bitmap.allocPixels(SkImageInfo::MakeN32(2, 2, kPremul_SkAlphaType));\n    bitmap.erase(0x7fff7f3f, SkIRect::MakeWH(1, 1));\n    bitmap.erase(0x7f7f3fff, SkIRect::MakeXYWH(0, 1, 1, 1));\n    bitmap.erase(0x7f3fff7f, SkIRect::MakeXYWH(1, 0, 1, 1));\n    bitmap.erase(0x7f1fbf5f, SkIRect::MakeXYWH(1, 1, 1, 1));\n    canvas->scale(25, 25);\n    canvas->drawBitmap(bitmap, 0, 0);\n    canvas->drawBitmap(bitmap, .5f, .5f);\n}",
     "width": 256,
@@ -3917,14 +3944,6 @@
     "file": "SkBitmap_Reference",
     "name": "SkBitmap::getBounds_2"
 },
-    "SkBitmap_info": {
-    "code": "void draw(SkCanvas* canvas) {\n    // SkBitmap source;  // pre-populated with soccer ball by fiddle.skia.org\n    const SkImageInfo& info = source.info();\n    const char* alphas[] = {\"Unknown\", \"Opaque\", \"Premul\", \"Unpremul\"};\n    const char* colors[] = {\"Unknown\", \"Alpha_8\", \"RGB_565\", \"ARGB_4444\", \"RGBA_8888\", \"RGB_888x\",\n                            \"BGRA_8888\", \"RGBA_1010102\", \"RGB_101010x\", \"Gray_8\", \"RGBA_F16\"};\n    SkDebugf(\"width: %d height: %d color: %s alpha: %s\\n\", info.width(), info.height(),\n                colors[info.colorType()], alphas[info.alphaType()]);\n}\n",
-    "width": 256,
-    "height": 256,
-    "hash": "ec47c4dc23e2925ad565eaba55a91553",
-    "file": "SkBitmap_Reference",
-    "name": "SkBitmap::info()"
-},
     "SkBitmap_installPixels_2": {
     "code": "void draw(SkCanvas* canvas) {\n   SkRandom random;\n   SkBitmap bitmap;\n   const int width = 8;\n   const int height = 8;\n   uint32_t pixels[width * height];\n   for (unsigned x = 0; x < width * height; ++x) {\n       pixels[x] = random.nextU();\n   }\n   SkImageInfo info = SkImageInfo::MakeN32(width, height, kUnpremul_SkAlphaType);\n   if (bitmap.installPixels(info, pixels, info.minRowBytes())) {\n       canvas->scale(32, 32);\n       canvas->drawBitmap(bitmap, 0, 0);\n   }\n}\n",
     "width": 256,
@@ -4798,10 +4817,10 @@
     "name": "SkCanvas::save()"
 },
     "SkCanvas_saveLayer": {
-    "code": "void draw(SkCanvas* canvas) {\n    SkPaint paint, blur;\n    blur.setImageFilter(SkBlurImageFilter::Make(3, 3, nullptr));\n    canvas->saveLayer(nullptr, &blur);\n    SkRect rect = { 25, 25, 50, 50};\n    canvas->drawRect(rect, paint);\n    canvas->translate(50, 50);\n    paint.setColor(SK_ColorRED);\n    canvas->drawRect(rect, paint);\n    canvas->restore();\n}\n",
+    "code": "#include \"SkBlurImageFilter.h\"\n\nvoid draw(SkCanvas* canvas) {\n    SkPaint paint, blur;\n    blur.setImageFilter(SkBlurImageFilter::Make(3, 3, nullptr));\n    canvas->saveLayer(nullptr, &blur);\n    SkRect rect = { 25, 25, 50, 50};\n    canvas->drawRect(rect, paint);\n    canvas->translate(50, 50);\n    paint.setColor(SK_ColorRED);\n    canvas->drawRect(rect, paint);\n    canvas->restore();\n}\n",
     "width": 256,
     "height": 128,
-    "hash": "1a025d6018f64140af2dc36acad59008",
+    "hash": "42318b18d403e17e07a541652da91ee2",
     "file": "SkCanvas_Reference",
     "name": "SkCanvas::saveLayer"
 },
@@ -4822,10 +4841,10 @@
     "name": "SkCanvas::saveLayerPreserveLCDTextRequests"
 },
     "SkCanvas_saveLayer_2": {
-    "code": "void draw(SkCanvas* canvas) {\n    SkPaint paint, blur;\n    blur.setImageFilter(SkBlurImageFilter::Make(3, 3, nullptr));\n    canvas->saveLayer(SkRect::MakeWH(90, 90), &blur);\n    SkRect rect = { 25, 25, 50, 50};\n    canvas->drawRect(rect, paint);\n    canvas->translate(50, 50);\n    paint.setColor(SK_ColorRED);\n    canvas->drawRect(rect, paint);\n    canvas->restore();\n}\n",
+    "code": "#include \"SkBlurImageFilter.h\"\n\nvoid draw(SkCanvas* canvas) {\n    SkPaint paint, blur;\n    blur.setImageFilter(SkBlurImageFilter::Make(3, 3, nullptr));\n    canvas->saveLayer(SkRect::MakeWH(90, 90), &blur);\n    SkRect rect = { 25, 25, 50, 50};\n    canvas->drawRect(rect, paint);\n    canvas->translate(50, 50);\n    paint.setColor(SK_ColorRED);\n    canvas->drawRect(rect, paint);\n    canvas->restore();\n}\n",
     "width": 256,
     "height": 128,
-    "hash": "5b59231feae0c09cb1ab6a292229d7a4",
+    "hash": "a17aec3aa4909527be039e26a7eda694",
     "file": "SkCanvas_Reference",
     "name": "SkCanvas::saveLayer_2"
 },
@@ -7149,14 +7168,6 @@
     "file": "SkSurface_Reference",
     "name": "SkSurface::MakeFromBackendTextureAsRenderTarget"
 },
-    "SkSurface_MakeRaster": {
-    "code": "void draw(SkCanvas* ) {\n    SkImageInfo info = SkImageInfo::MakeN32Premul(3, 3);\n    const size_t rowBytes = 64;\n    sk_sp<SkSurface> surface(SkSurface::MakeRaster(info, rowBytes, nullptr));\n    SkCanvas* canvas = surface->getCanvas();\n    canvas->clear(SK_ColorWHITE);\n    SkPixmap pixmap;\n    if (surface->peekPixels(&pixmap)) {\n        const uint32_t* colorPtr = pixmap.addr32();\n        SkPMColor pmWhite = colorPtr[0];\n        SkPaint paint;\n        canvas->drawPoint(1, 1, paint);\n        canvas->flush();  // ensure that point was drawn\n        for (int y = 0; y < info.height(); ++y) {\n            for (int x = 0; x < info.width(); ++x) {\n                SkDebugf(\"%c\", colorPtr[x] == pmWhite ? '-' : 'x');\n            }\n            colorPtr += rowBytes / sizeof(colorPtr[0]);\n            SkDebugf(\"\\n\");\n        }\n    }\n}\n",
-    "width": 256,
-    "height": 256,
-    "hash": "a803910ada4f8733f0b62456afead55f",
-    "file": "SkSurface_Reference",
-    "name": "SkSurface::MakeRaster"
-},
     "SkSurface_MakeRenderTarget": {
     "code": "void draw(SkCanvas* canvas) {\n    SkPaint paint;\n    paint.setTextSize(32);\n    GrContext* context = canvas->getGrContext();\n    if (!context) {\n         canvas->drawString(\"GPU only!\", 20, 40, paint);\n         return;\n    }\n    SkImageInfo info = SkImageInfo::MakeN32(256, 64, kOpaque_SkAlphaType);\n    for (auto surfaceOrigin : { kTopLeft_GrSurfaceOrigin, kBottomLeft_GrSurfaceOrigin } ) {\n        auto gpuSurface(SkSurface::MakeRenderTarget(context, SkBudgeted::kNo, info, 0,\n               surfaceOrigin, nullptr));\n        auto surfaceCanvas = gpuSurface->getCanvas();\n        surfaceCanvas->clear(SK_ColorWHITE);\n        surfaceCanvas->drawString(\"GPU rocks!\", 20, 40, paint);\n        sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());\n        canvas->drawImage(image, 0, 0);\n       canvas->translate(0, 128);\n    }\n}",
     "width": 256,
@@ -7205,14 +7216,6 @@
     "file": "SkSurface_Reference",
     "name": "SkSurface::draw_2"
 },
-    "SkSurface_generationID": {
-    "code": "void draw(SkCanvas* canvas) {\n    auto surface = SkSurface::MakeRasterN32Premul(1, 1);\n    for (int i = 0; i < 3; ++i) {\n        SkDebugf(\"surface generationID: %d\\n\", surface->generationID());\n        if (0 == i) {\n            surface->getCanvas()->drawColor(SK_ColorBLACK);\n        } else {\n            surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);\n        }\n    }\n}",
-    "width": 256,
-    "height": 256,
-    "hash": "be9574c4a14f891e1abb4ec2b1e51d6c",
-    "file": "SkSurface_Reference",
-    "name": "SkSurface::generationID"
-},
     "SkSurface_getCanvas": {
     "code": "void draw(SkCanvas* canvas) {\n    sk_sp<SkSurface> surface(SkSurface::MakeRasterN32Premul(64, 64));\n    SkCanvas* surfaceCanvas = surface->getCanvas();\n    surfaceCanvas->clear(SK_ColorBLUE);\n    SkPaint paint;\n    paint.setTextSize(40);\n    surfaceCanvas->drawString(\"\\xF0\\x9F\\x98\\x81\", 12, 45, paint);\n    surface->draw(canvas, 0, 0, nullptr);\n}",
     "width": 256,
@@ -7237,14 +7240,6 @@
     "file": "SkSurface_Reference",
     "name": "SkSurface::makeSurface"
 },
-    "SkSurface_notifyContentWillChange": {
-    "code": "void draw(SkCanvas* canvas) {\n    auto surface = SkSurface::MakeRasterN32Premul(1, 1);\n    for (int i = 0; i < 3; ++i) {\n        SkDebugf(\"surface generationID: %d\\n\", surface->generationID());\n        if (0 == i) {\n            surface->getCanvas()->drawColor(SK_ColorBLACK);\n        } else {\n            surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);\n        }\n    }\n}",
-    "width": 256,
-    "height": 256,
-    "hash": "be9574c4a14f891e1abb4ec2b1e51d6c",
-    "file": "SkSurface_Reference",
-    "name": "SkSurface::notifyContentWillChange"
-},
     "SkSurface_peekPixels": {
     "code": "void draw(SkCanvas* canvas) {\n    sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));\n    auto surfCanvas = surf->getCanvas();\n    surfCanvas->clear(SK_ColorRED);\n    SkPaint paint;\n    paint.setTextSize(40);\n    surfCanvas->drawString(\"&\", 16, 48, paint);\n    SkPixmap pixmap;\n    if (surf->peekPixels(&pixmap)) {\n        SkBitmap surfBits;\n        surfBits.installPixels(pixmap);\n        canvas->drawBitmap(surfBits, 0, 0);\n    }\n}",
     "width": 256,
diff --git a/tools/bookmaker/bookmaker.cpp b/tools/bookmaker/bookmaker.cpp
index 794e200..947c077 100644
--- a/tools/bookmaker/bookmaker.cpp
+++ b/tools/bookmaker/bookmaker.cpp
@@ -1323,6 +1323,7 @@
                 if (!this->skipSpace()) {
                     return this->reportError<bool>("unexpected end");
                 }
+                lineStart = '\n' == this->peek();
                 bool expectEnd = true;
                 vector<string> typeNameBuilder = this->typeName(markType, &expectEnd);
                 if (fCloned && MarkType::kMethod != markType && MarkType::kExample != markType
@@ -1448,9 +1449,11 @@
             }
         }
         char nextChar = this->next();
-        lineStart = nextChar == '\n';
         if (' ' < nextChar) {
             lastChar = fChar;
+            lineStart = false;
+        } else if (nextChar == '\n') {
+            lineStart = true;
         }
     }
     if (fParent) {