Style Change: NULL->nullptr
DOCS_PREVIEW= https://skia.org/?cl=1316233002

Review URL: https://codereview.chromium.org/1316233002
diff --git a/samplecode/ClockFaceView.cpp b/samplecode/ClockFaceView.cpp
index 9a1f8f9..8362c35 100644
--- a/samplecode/ClockFaceView.cpp
+++ b/samplecode/ClockFaceView.cpp
@@ -104,7 +104,7 @@
 SkFlattenable* Dot2DPathEffect::CreateProc(SkReadBuffer& buffer) {
     SkMatrix matrix;
     buffer.readMatrix(&matrix);
-    return new Dot2DPathEffect(buffer.readScalar(), matrix, NULL);
+    return new Dot2DPathEffect(buffer.readScalar(), matrix, nullptr);
 }
 
 class InverseFillPE : public SkPathEffect {
@@ -140,7 +140,7 @@
 }
 
 static void r7(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p, SkScalar interp) {
-    p.setPathEffect(makepe(SkScalarToFloat(interp), NULL))->unref();
+    p.setPathEffect(makepe(SkScalarToFloat(interp), nullptr))->unref();
     rastBuilder->addLayer(p);
 #if 0
     p.setPathEffect(new InverseFillPE())->unref();
@@ -205,7 +205,7 @@
         SkStrokeRec rec(SkStrokeRec::kFill_InitStyle);
         SkPath path, dstPath;
         orig.getTextPath("9", 1, 0, 0, &path);
-        pe->filterPath(&dstPath, path, &rec, NULL);
+        pe->filterPath(&dstPath, path, &rec, nullptr);
 
         SkPaint p;
         p.setAntiAlias(true);
@@ -245,7 +245,7 @@
                 fInterp = 0;
                 fDx = -fDx;
             }
-            this->inval(NULL);
+            this->inval(nullptr);
         }
     }
 
diff --git a/samplecode/OverView.cpp b/samplecode/OverView.cpp
index 9e229ff..d763345 100644
--- a/samplecode/OverView.cpp
+++ b/samplecode/OverView.cpp
@@ -60,7 +60,7 @@
         SkUnichar uni;
         if (SampleCode::CharQ(*evt, &uni)) {
             fMatchStr.appendUnichar(uni);
-            this->inval(NULL);
+            this->inval(nullptr);
             return true;
         }
         return this->INHERITED::onQuery(evt);
@@ -86,7 +86,7 @@
                 this->next(&loc);
             }
         }
-        return NULL;
+        return nullptr;
     }
 
 private:
diff --git a/samplecode/Sample2PtRadial.cpp b/samplecode/Sample2PtRadial.cpp
index 764c2b1..07efd0a 100644
--- a/samplecode/Sample2PtRadial.cpp
+++ b/samplecode/Sample2PtRadial.cpp
@@ -34,7 +34,7 @@
         SkPoint c1 = { 100, 100 };
         SkScalar r1 = 100;
         SkShader* s = SkGradientShader::CreateTwoPointConical(c0, r0, c1, r1, colors,
-                                                             NULL, 2,
+                                                             nullptr, 2,
                                                              SkShader::kClamp_TileMode);
 
         SkPaint paint;
diff --git a/samplecode/SampleAARectModes.cpp b/samplecode/SampleAARectModes.cpp
index f9972ae..ae28925 100644
--- a/samplecode/SampleAARectModes.cpp
+++ b/samplecode/SampleAARectModes.cpp
@@ -112,7 +112,7 @@
                 SkXfermode* mode = SkXfermode::Create(gModes[i].fMode);
 
                 canvas->drawRect(bounds, fBGPaint);
-                canvas->saveLayer(&bounds, NULL);
+                canvas->saveLayer(&bounds, nullptr);
                 SkScalar dy = drawCell(canvas, mode,
                                        gAlphaValue[alpha & 1],
                                        gAlphaValue[alpha & 2]);
diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp
index 667bcc3..628504d 100644
--- a/samplecode/SampleAll.cpp
+++ b/samplecode/SampleAll.cpp
@@ -84,7 +84,7 @@
                                              SkBlurMaskFilter::kNone_BlurFlag))->unref();
     rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
 
-    p.setMaskFilter(NULL);
+    p.setMaskFilter(nullptr);
     p.setStyle(SkPaint::kStroke_Style);
     p.setStrokeWidth(SK_Scalar1);
     rastBuilder->addLayer(p);
@@ -135,7 +135,7 @@
     p.setXfermodeMode(SkXfermode::kClear_Mode);
     rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
 
-    p.setXfermode(NULL);
+    p.setXfermode(nullptr);
     rastBuilder->addLayer(p);
 }
 
@@ -199,8 +199,8 @@
     p.setXfermodeMode(SkXfermode::kClear_Mode);
     rastBuilder->addLayer(p);
 
-    p.setPathEffect(NULL);
-    p.setXfermode(NULL);
+    p.setPathEffect(nullptr);
+    p.setXfermode(nullptr);
     p.setStyle(SkPaint::kStroke_Style);
     p.setStrokeWidth(SK_Scalar1);
     rastBuilder->addLayer(p);
@@ -216,8 +216,8 @@
     p.setXfermodeMode(SkXfermode::kClear_Mode);
     rastBuilder->addLayer(p);
 
-    p.setPathEffect(NULL);
-    p.setXfermode(NULL);
+    p.setPathEffect(nullptr);
+    p.setXfermode(nullptr);
     p.setStyle(SkPaint::kStroke_Style);
     p.setStrokeWidth(SK_Scalar1);
     rastBuilder->addLayer(p);
@@ -303,7 +303,7 @@
         {
             SkPictureRecorder recorder;
             {
-                SkCanvas* record = recorder.beginRecording(320, 480, NULL, 0);
+                SkCanvas* record = recorder.beginRecording(320, 480, nullptr, 0);
                 this->drawPicture(record, 120);
             }
             SkAutoTUnref<SkPicture> picture(recorder.endRecording());
@@ -359,7 +359,7 @@
         // shaders
         SkPoint linearPoints[] = { { 0, 0, }, { SkIntToScalar(40), SkIntToScalar(40) } };
         SkColor linearColors[] = { SK_ColorRED, SK_ColorBLUE };
-        SkScalar* linearPos = NULL;
+        SkScalar* linearPos = nullptr;
         int linearCount = 2;
         SkShader::TileMode linearMode = SkShader::kMirror_TileMode;
         SkShader* linear = SkGradientShader::CreateLinear(linearPoints,
@@ -409,8 +409,8 @@
         paint.setXfermode(xfermode)->unref();
         paint.setColorFilter(lightingFilter)->unref();
         canvas->drawLine(start.fX, start.fY, stop.fX, stop.fY, paint); // should not be green
-        paint.setXfermode(NULL);
-        paint.setColorFilter(NULL);
+        paint.setXfermode(nullptr);
+        paint.setColorFilter(nullptr);
 
         // rectangle
         paint.setStyle(SkPaint::kFill_Style);
@@ -419,7 +419,7 @@
         paint.setShader(linear)->unref();
         paint.setPathEffect(pathEffectTest())->unref();
         canvas->drawRect(rect, paint);
-        paint.setPathEffect(NULL);
+        paint.setPathEffect(nullptr);
 
         // circle w/ emboss & transparent (exercises 3dshader)
         canvas->translate(SkIntToScalar(50), 0);
@@ -436,10 +436,10 @@
         paint.setStyle(SkPaint::kStroke_Style);
         paint.setStrokeWidth(SkIntToScalar(5));
         paint.setShader(radial)->unref();
-        paint.setMaskFilter(NULL);
+        paint.setMaskFilter(nullptr);
         canvas->drawPath(path, paint);
 
-        paint.setShader(NULL);
+        paint.setShader(nullptr);
         // bitmap, sprite
         canvas->translate(SkIntToScalar(50), 0);
         paint.setStyle(SkPaint::kFill_Style);
@@ -452,7 +452,7 @@
         canvas->translate(-SkIntToScalar(30), SkIntToScalar(30));
         paint.setShader(shaderTest())->unref(); // test compose shader
         canvas->drawRect(rect2, paint);
-        paint.setShader(NULL);
+        paint.setShader(nullptr);
 
         canvas->restore();
         // text
@@ -482,7 +482,7 @@
 
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) {
         fClickPt.set(x, y);
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
@@ -508,11 +508,11 @@
     SkShader* shaderTest() {
         SkPoint pts[] = { { 0, 0, }, { SkIntToScalar(100), 0 } };
         SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };
-        SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, NULL,
+        SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, nullptr,
             2, SkShader::kClamp_TileMode);
         pts[1].set(0, SkIntToScalar(100));
         SkColor colors2[] = {SK_ColorBLACK,  SkColorSetARGB(0x80, 0, 0, 0)};
-        SkShader* shaderB = SkGradientShader::CreateLinear(pts, colors2, NULL,
+        SkShader* shaderB = SkGradientShader::CreateLinear(pts, colors2, nullptr,
             2, SkShader::kClamp_TileMode);
         SkXfermode* mode = SkXfermode::Create(SkXfermode::kDstIn_Mode);
         SkShader* result = new SkComposeShader(shaderA, shaderB, mode);
@@ -550,7 +550,7 @@
         for (size_t i = 0; i < SK_ARRAY_COUNT(gRastProcs); i++) {
             apply_shader(&paint, (int)i);
 
-          //  paint.setMaskFilter(NULL);
+          //  paint.setMaskFilter(nullptr);
           //  paint.setColor(SK_ColorBLACK);
 
 #if 01
diff --git a/samplecode/SampleAnimator.cpp b/samplecode/SampleAnimator.cpp
index a7cc885..8b7af68 100644
--- a/samplecode/SampleAnimator.cpp
+++ b/samplecode/SampleAnimator.cpp
@@ -40,7 +40,7 @@
     typedef SkView INHERITED;
 };
 
-SkAnimatorView::SkAnimatorView() : fAnimator(NULL) {}
+SkAnimatorView::SkAnimatorView() : fAnimator(nullptr) {}
 
 SkAnimatorView::~SkAnimatorView() {
     delete fAnimator;
@@ -52,7 +52,7 @@
 
 bool SkAnimatorView::decodeFile(const char path[]) {
     SkAutoTDelete<SkStream> is(SkStream::NewFromFile(path));
-    return is.get() != NULL && this->decodeStream(is);
+    return is.get() != nullptr && this->decodeStream(is);
 }
 
 bool SkAnimatorView::decodeMemory(const void* buffer, size_t size) {
@@ -62,7 +62,7 @@
 
 static const SkDOMNode* find_nodeID(const SkDOM& dom,
                         const SkDOMNode* node, const char name[]) {
-    if (NULL == node) {
+    if (nullptr == node) {
         node = dom.getRootNode();
     }
     do {
@@ -77,8 +77,8 @@
                 return found;
             }
         }
-    } while ((node = dom.getNextSibling(node)) != NULL);
-    return NULL;
+    } while ((node = dom.getNextSibling(node)) != nullptr);
+    return nullptr;
 }
 
 bool SkAnimatorView::decodeStream(SkStream* stream) {
@@ -88,7 +88,7 @@
 #if 0
     if (!fAnimator->decodeStream(stream)) {
         delete fAnimator;
-        fAnimator = NULL;
+        fAnimator = nullptr;
         return false;
     }
 #else
@@ -97,18 +97,18 @@
     stream->read(text, len);
     SkDOM dom;
     const SkDOM::Node* root = dom.build(text, len);
-    if (NULL == root) {
+    if (nullptr == root) {
         return false;
     }
     if (!fAnimator->decodeDOM(dom, root)) {
         delete fAnimator;
-        fAnimator = NULL;
+        fAnimator = nullptr;
         return false;
     }
     for (int i = 0; i <= 10; i++) {
         SkString name("glyph");
         name.appendS32(i);
-        const SkDOM::Node* node = find_nodeID(dom, NULL, name.c_str());
+        const SkDOM::Node* node = find_nodeID(dom, nullptr, name.c_str());
         SkASSERT(node);
         SkRect r;
         dom.findScalar(node, "left", &r.fLeft);
@@ -141,7 +141,7 @@
         fAnimator->draw(canvas, 0);
         canvas->restore();
 
-        this->inval(NULL);
+        this->inval(nullptr);
 #endif
     }
 }
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index d2f10b3..44daeb6 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -111,7 +111,7 @@
 
 static const char* skip_until(const char* str, const char* skip) {
     if (!str) {
-        return NULL;
+        return nullptr;
     }
     return strstr(str, skip);
 }
@@ -119,7 +119,7 @@
 static const char* skip_past(const char* str, const char* skip) {
     const char* found = skip_until(str, skip);
     if (!found) {
-        return NULL;
+        return nullptr;
     }
     return found + strlen(skip);
 }
@@ -162,9 +162,9 @@
 
     DefaultDeviceManager() {
 #if SK_SUPPORT_GPU
-        fCurContext = NULL;
-        fCurIntf = NULL;
-        fCurRenderTarget = NULL;
+        fCurContext = nullptr;
+        fCurIntf = nullptr;
+        fCurRenderTarget = nullptr;
         fMSAASampleCount = 0;
 #endif
         fBackend = kNone_BackEndType;
@@ -209,7 +209,7 @@
         }
         fMSAASampleCount = msaaSampleCount;
 
-        SkASSERT(NULL == fCurIntf);
+        SkASSERT(nullptr == fCurIntf);
         SkAutoTUnref<const GrGLInterface> glInterface;
         switch (win->getDeviceType()) {
             case kRaster_DeviceType:    // fallthrough
@@ -232,15 +232,15 @@
         // when the driver doesn't support NVPR.
         fCurIntf = GrGLInterfaceRemoveNVPR(glInterface.get());
 
-        SkASSERT(NULL == fCurContext);
+        SkASSERT(nullptr == fCurContext);
         fCurContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fCurIntf);
 
-        if (NULL == fCurContext || NULL == fCurIntf) {
+        if (nullptr == fCurContext || nullptr == fCurIntf) {
             // We need some context and interface to see results
             SkSafeUnref(fCurContext);
             SkSafeUnref(fCurIntf);
-            fCurContext = NULL;
-            fCurIntf = NULL;
+            fCurContext = nullptr;
+            fCurIntf = nullptr;
             SkDebugf("Failed to setup 3D");
 
             win->detach();
@@ -256,14 +256,14 @@
             // in case we have outstanding refs to this guy (lua?)
             fCurContext->abandonContext();
             fCurContext->unref();
-            fCurContext = NULL;
+            fCurContext = nullptr;
         }
 
         SkSafeUnref(fCurIntf);
-        fCurIntf = NULL;
+        fCurIntf = nullptr;
 
         SkSafeUnref(fCurRenderTarget);
-        fCurRenderTarget = NULL;
+        fCurRenderTarget = nullptr;
 #endif
         win->detach();
         fBackend = kNone_BackEndType;
@@ -276,7 +276,7 @@
             return SkSurface::NewRenderTargetDirect(fCurRenderTarget, &props);
         }
 #endif
-        return NULL;
+        return nullptr;
     }
 
     void publishCanvas(SampleWindow::DeviceType dType,
@@ -318,7 +318,7 @@
 #if SK_SUPPORT_GPU
         return fCurContext;
 #else
-        return NULL;
+        return nullptr;
 #endif
     }
 
@@ -326,7 +326,7 @@
 #if SK_SUPPORT_GPU
         return fCurRenderTarget;
 #else
-        return NULL;
+        return nullptr;
 #endif
     }
 
@@ -371,7 +371,7 @@
 }
 
 SkView* SkGMSampleViewFactory::operator() () const {
-    skiagm::GM* gm = fFunc(NULL);
+    skiagm::GM* gm = fFunc(nullptr);
     gm->setMode(skiagm::GM::kSample_Mode);
     return new GMSampleView(gm);
 }
@@ -442,7 +442,7 @@
     const char* label;
 };
 static HintingState gHintingStates[] = {
-    {SkPaint::kNo_Hinting, "Mixed", NULL },
+    {SkPaint::kNo_Hinting, "Mixed", nullptr },
     {SkPaint::kNo_Hinting, "None", "H0 " },
     {SkPaint::kSlight_Hinting, "Slight", "Hs " },
     {SkPaint::kNormal_Hinting, "Normal", "Hn " },
@@ -455,7 +455,7 @@
     const char*     fLabel;
 };
 static FilterQualityState gFilterQualityStates[] = {
-    { kNone_SkFilterQuality,   "Mixed",    NULL    },
+    { kNone_SkFilterQuality,   "Mixed",    nullptr    },
     { kNone_SkFilterQuality,   "None",     "F0 "   },
     { kLow_SkFilterQuality,    "Low",      "F1 "   },
     { kMedium_SkFilterQuality, "Medium",   "F2 "   },
@@ -643,14 +643,14 @@
     // Arbitrarily decided
     if (fFatBitsScale == kMaxFatBitsScale) return false;
     fFatBitsScale++;
-    this->inval(NULL);
+    this->inval(nullptr);
     return true;
 }
 
 bool SampleWindow::zoomOut() {
     if (fFatBitsScale == 1) return false;
     fFatBitsScale--;
-    this->inval(NULL);
+    this->inval(nullptr);
     return true;
 }
 
@@ -658,7 +658,7 @@
     fMouseX = x;
     fMouseY = y;
     if (fShowZoomer) {
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 }
 
@@ -704,7 +704,7 @@
 
 SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* devManager)
     : INHERITED(hwnd)
-    , fDevManager(NULL) {
+    , fDevManager(nullptr) {
 
     SkCommandLineFlags::Parse(argc, argv);
 
@@ -745,7 +745,7 @@
     if (FLAGS_sort) {
         // Sort samples, so foo.skp and foo.pdf are consecutive and we can quickly spot where
         // skp -> pdf -> png fails.
-        SkTQSort(fSamples.begin(), fSamples.end() ? fSamples.end() - 1 : NULL, compareSampleTitle);
+        SkTQSort(fSamples.begin(), fSamples.end() ? fSamples.end() - 1 : nullptr, compareSampleTitle);
     }
 
     if (!FLAGS_slide.isEmpty()) {
@@ -809,7 +809,7 @@
 
     fMouseX = fMouseY = 0;
     fFatBitsScale = 8;
-    fTypeface = SkTypeface::CreateFromTypeface(NULL, SkTypeface::kBold);
+    fTypeface = SkTypeface::CreateFromTypeface(nullptr, SkTypeface::kBold);
     fShowZoomer = false;
 
     fZoomLevel = 0;
@@ -830,7 +830,7 @@
 #if SK_ANGLE
                                 "ANGLE",
 #endif
-                                NULL);
+                                nullptr);
     fAppMenu->assignKeyEquivalentToItem(itemID, 'd');
     itemID = fAppMenu->appendTriState("AA", "AA", sinkID, fAAState);
     fAppMenu->assignKeyEquivalentToItem(itemID, 'b');
@@ -842,7 +842,7 @@
                                   gFilterQualityStates[2].fName,
                                   gFilterQualityStates[3].fName,
                                   gFilterQualityStates[4].fName,
-                                  NULL);
+                                  nullptr);
     fAppMenu->assignKeyEquivalentToItem(itemID, 'n');
     itemID = fAppMenu->appendTriState("Subpixel", "Subpixel", sinkID, fSubpixelState);
     fAppMenu->assignKeyEquivalentToItem(itemID, 's');
@@ -852,7 +852,7 @@
                                   gHintingStates[2].name,
                                   gHintingStates[3].name,
                                   gHintingStates[4].name,
-                                  NULL);
+                                  nullptr);
     fAppMenu->assignKeyEquivalentToItem(itemID, 'h');
 
     fUsePipeMenuItemID = fAppMenu->appendTriState("Pipe", "Pipe" , sinkID,
@@ -866,7 +866,7 @@
                                  gTilingInfo[kRel_4x4_Tiling].label,
                                  gTilingInfo[kRel_1x16_Tiling].label,
                                  gTilingInfo[kRel_16x1_Tiling].label,
-                                 NULL);
+                                 nullptr);
     fAppMenu->assignKeyEquivalentToItem(itemID, 't');
 
     itemID = fAppMenu->appendSwitch("Slide Show", "Slide Show" , sinkID, false);
@@ -894,7 +894,7 @@
 
     this->loadView((*fSamples[fCurrIndex])());
 
-    if (NULL == devManager) {
+    if (nullptr == devManager) {
         fDevManager = new DefaultDeviceManager();
     } else {
         devManager->ref();
@@ -999,7 +999,7 @@
                 tileCanvas->translate(-x, -y);
                 tileCanvas->clear(0);
                 this->INHERITED::draw(tileCanvas);
-                surface->draw(canvas, x, y, NULL);
+                surface->draw(canvas, x, y, nullptr);
             }
         }
 
@@ -1028,7 +1028,7 @@
     }
 
     if (this->sendAnimatePulse()) {
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
     // do this last
@@ -1172,7 +1172,7 @@
             show_lcd_grid(canvas, bitmap, src, dest, show_lcd_circle);
             break;
         default:
-            canvas->drawBitmapRect(bitmap, src, dest, NULL);
+            canvas->drawBitmapRect(bitmap, src, dest, nullptr);
             break;
     }
 
@@ -1201,7 +1201,7 @@
     // Identify the pixel and its color on screen
     paint.setTypeface(fTypeface);
     paint.setAntiAlias(true);
-    SkScalar lineHeight = paint.getFontMetrics(NULL);
+    SkScalar lineHeight = paint.getFontMetrics(nullptr);
     SkString string;
     string.appendf("(%i, %i)", fMouseX, fMouseY);
     SkScalar left = dest.fLeft + SkIntToScalar(3);
@@ -1242,7 +1242,7 @@
 {
 #if SK_SUPPORT_PDF
     fSaveToPdf = true;
-    this->inval(NULL);
+    this->inval(nullptr);
 #endif  // SK_SUPPORT_PDF
 }
 
@@ -1259,7 +1259,7 @@
         fPDFDocument.reset(SkDocument::CreatePDF(name.c_str()));
         canvas = fPDFDocument->beginPage(this->width(), this->height());
     } else if (kPicture_DeviceType == fDeviceType) {
-        canvas = fRecorder.beginRecording(9999, 9999, NULL, 0);
+        canvas = fRecorder.beginRecording(9999, 9999, nullptr, 0);
     } else {
         canvas = this->INHERITED::beforeChildren(canvas);
     }
@@ -1284,15 +1284,15 @@
 }
 #include "SkMultiPictureDraw.h"
 void SampleWindow::afterChildren(SkCanvas* orig) {
-    fFlagsFilterCanvas.reset(NULL);
+    fFlagsFilterCanvas.reset(nullptr);
 
     if (fSaveToPdf) {
         fSaveToPdf = false;
         fPDFDocument->endPage();
-        fPDFDocument.reset(NULL);
+        fPDFDocument.reset(nullptr);
         // We took over the draw calls in order to create the PDF, so we need
         // to redraw.
-        this->inval(NULL);
+        this->inval(nullptr);
         return;
     }
 
@@ -1340,7 +1340,7 @@
                             c->translate(SkIntToScalar(-x * n.width()),
                                          SkIntToScalar(-y * n.height()));
                             c->concat(orig->getTotalMatrix());
-                            md.add(c, picture, NULL, NULL);
+                            md.add(c, picture, nullptr, nullptr);
                             index++;
                         }
                     }
@@ -1359,7 +1359,7 @@
             SkAutoDataUnref data(ostream.copyToData());
             SkMemoryStream istream(data->data(), data->size());
             SkAutoTUnref<SkPicture> pict(SkPicture::CreateFromStream(&istream));
-            if (pict.get() != NULL) {
+            if (pict.get() != nullptr) {
                 orig->drawPicture(pict.get());
             }
         } else {
@@ -1413,7 +1413,7 @@
         (void)SampleView::SetRepeatDraw(child, 1);
     }
     if (fPerspAnim || fRotate) {
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 }
 
@@ -1464,7 +1464,7 @@
     this->setLocalMatrix(m);
 
     this->updateTitle();
-    this->inval(NULL);
+    this->inval(nullptr);
 }
 bool SampleWindow::previousSample() {
     fCurrIndex = (fCurrIndex - 1 + fSamples.count()) % fSamples.count();
@@ -1528,7 +1528,7 @@
         return true;
     }
     if (isInvalEvent(evt)) {
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
     int selected = -1;
@@ -1543,10 +1543,10 @@
 #endif
         (void)SampleView::SetUsePipe(curr_view(this), fPipeState);
         this->updateTitle();
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
-    if (SkOSMenu::FindSwitchState(evt, "Slide Show", NULL)) {
+    if (SkOSMenu::FindSwitchState(evt, "Slide Show", nullptr)) {
         this->toggleSlideshow();
         return true;
     }
@@ -1559,7 +1559,7 @@
         SkOSMenu::FindSwitchState(evt, "Zoomer", &fShowZoomer) ||
         SkOSMenu::FindSwitchState(evt, "Magnify", &fMagnify))
     {
-        this->inval(NULL);
+        this->inval(nullptr);
         this->updateTitle();
         return true;
     }
@@ -1567,16 +1567,16 @@
         if (SampleView::IsSampleView(curr_view(this))) {
             ((SampleView*)curr_view(this))->onTileSizeChanged(this->tileSize());
         }
-        this->inval(NULL);
+        this->inval(nullptr);
         this->updateTitle();
         return true;
     }
-    if (SkOSMenu::FindSwitchState(evt, "Flip X", NULL)) {
+    if (SkOSMenu::FindSwitchState(evt, "Flip X", nullptr)) {
         fFlipAxis ^= kFlipAxis_X;
         this->updateMatrix();
         return true;
     }
-    if (SkOSMenu::FindSwitchState(evt, "Flip Y", NULL)) {
+    if (SkOSMenu::FindSwitchState(evt, "Flip Y", nullptr)) {
         fFlipAxis ^= kFlipAxis_Y;
         this->updateMatrix();
         return true;
@@ -1607,7 +1607,7 @@
         return curr_view(this)->doQuery(&evt);
     }
     if (query->isType("ignore-window-bitmap")) {
-        query->setFast32(this->getGrContext() != NULL);
+        query->setFast32(this->getGrContext() != nullptr);
         return true;
     }
     return this->INHERITED::onQuery(query);
@@ -1652,7 +1652,7 @@
             fScrollTestX += dx;
             fScrollTestY += dy;
         }
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
@@ -1660,13 +1660,13 @@
         case 27:    // ESC
             gAnimTimer.stop();
             if (this->sendAnimatePulse()) {
-                this->inval(NULL);
+                this->inval(nullptr);
             }
             break;
         case ' ':
             gAnimTimer.togglePauseResume();
             if (this->sendAnimatePulse()) {
-                this->inval(NULL);
+                this->inval(nullptr);
             }
             break;
         case 'B':
@@ -1674,7 +1674,7 @@
             // Cannot call updateTitle() synchronously, because the toggleBBox event is still in
             // the queue.
             post_event_to_sink(new SkEvent(gUpdateWindowTitleEvtName), this);
-            this->inval(NULL);
+            this->inval(nullptr);
             break;
         case 'D':
             toggleDistanceFieldFonts();
@@ -1685,17 +1685,17 @@
             break;
         case 'F':
             FLAGS_portableFonts ^= true;
-            this->inval(NULL);
+            this->inval(nullptr);
             break;
         case 'g':
             fRequestGrabImage = true;
-            this->inval(NULL);
+            this->inval(nullptr);
             break;
         case 'G':
             gShowGMBounds = !gShowGMBounds;
             post_event_to_sink(GMSampleView::NewShowSizeEvt(gShowGMBounds),
                             curr_view(this));
-            this->inval(NULL);
+            this->inval(nullptr);
             break;
         case 'i':
             this->zoomIn();
@@ -1705,17 +1705,17 @@
             break;
         case 'r':
             fRotate = !fRotate;
-            this->inval(NULL);
+            this->inval(nullptr);
             this->updateTitle();
             return true;
         case 'k':
             fPerspAnim = !fPerspAnim;
-            this->inval(NULL);
+            this->inval(nullptr);
             this->updateTitle();
             return true;
         case 'K':
             fSaveToSKP = true;
-            this->inval(NULL);
+            this->inval(nullptr);
             return true;
 #if SK_SUPPORT_GPU
         case 'p':
@@ -1723,7 +1723,7 @@
                 GrContext* grContext = this->getGrContext();
                 if (grContext) {
                     size_t cacheBytes;
-                    grContext->getResourceCacheUsage(NULL, &cacheBytes);
+                    grContext->getResourceCacheUsage(nullptr, &cacheBytes);
                     grContext->freeGpuResources();
                     SkDebugf("Purged %d bytes from the GPU resource cache.\n", cacheBytes);
                 }
@@ -1753,7 +1753,7 @@
     fDevManager->setUpBackend(this, fMSAASampleCount);
 
     this->updateTitle();
-    this->inval(NULL);
+    this->inval(nullptr);
 }
 
 void SampleWindow::toggleSlideshow() {
@@ -1765,13 +1765,13 @@
 void SampleWindow::toggleRendering() {
     this->setDeviceType(cycle_devicetype(fDeviceType));
     this->updateTitle();
-    this->inval(NULL);
+    this->inval(nullptr);
 }
 
 void SampleWindow::toggleFPS() {
     fMeasureFPS = !fMeasureFPS;
     this->updateTitle();
-    this->inval(NULL);
+    this->inval(nullptr);
 }
 
 void SampleWindow::toggleDistanceFieldFonts() {
@@ -1780,7 +1780,7 @@
     this->setSurfaceProps(SkSurfaceProps(flags, props.pixelGeometry()));
 
     this->updateTitle();
-    this->inval(NULL);
+    this->inval(nullptr);
 }
 
 #include "SkDumpCanvas.h"
@@ -1847,7 +1847,7 @@
     }
     else if (fMagnify) {
         //it's only necessary to update the drawing if there's a click
-        this->inval(NULL);
+        this->inval(nullptr);
         return false; //prevent dragging while magnify is enabled
     } else {
         // capture control+option, and trigger debugger
@@ -1951,7 +1951,7 @@
     } else if (SkOSMenu::kOffState == state) {
         return falseStr;
     }
-    return NULL;
+    return nullptr;
 }
 
 bool SampleWindow::getRawTitle(SkString* title) {
@@ -1989,8 +1989,8 @@
     title.prepend(trystate_str(fAAState, "AA ", "aa "));
     title.prepend(gFilterQualityStates[fFilterQualityIndex].fLabel);
     title.prepend(trystate_str(fSubpixelState, "S ", "s "));
-    title.prepend(fFlipAxis & kFlipAxis_X ? "X " : NULL);
-    title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : NULL);
+    title.prepend(fFlipAxis & kFlipAxis_X ? "X " : nullptr);
+    title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : nullptr);
     title.prepend(gHintingStates[fHintingState].label);
 
     if (fZoomLevel) {
@@ -2141,7 +2141,7 @@
 };
 
 SimplePC::SimplePC(SkCanvas* target) : fReader(target) {
-    fBlock = NULL;
+    fBlock = nullptr;
     fBlockSize = fBytesWritten = 0;
     fStatus = SkGPipeReader::kDone_Status;
     fTotalWritten = 0;
@@ -2157,7 +2157,7 @@
 #ifdef  PIPE_FILE
         //File is open in append mode
         FILE* f = fopen(FILE_PATH, "ab");
-        SkASSERT(f != NULL);
+        SkASSERT(f != nullptr);
         fwrite((const char*)fBlock + fBytesWritten, 1, bytes, f);
         fclose(f);
 #endif
@@ -2341,7 +2341,7 @@
     if (false) { // avoid bit rot, suppress warning
         test();
     }
-    return new SampleWindow(hwnd, argc, argv, NULL);
+    return new SampleWindow(hwnd, argc, argv, nullptr);
 }
 
 // FIXME: this should be in a header
diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h
index 1f8c333..d872495 100644
--- a/samplecode/SampleApp.h
+++ b/samplecode/SampleApp.h
@@ -87,10 +87,10 @@
         // at least once before first draw (after init)
         virtual void windowSizeChanged(SampleWindow* win) = 0;
 
-        // return the GrContext backing gpu devices (NULL if not built with GPU support)
+        // return the GrContext backing gpu devices (nullptr if not built with GPU support)
         virtual GrContext* getGrContext() = 0;
 
-        // return the GrRenderTarget backing gpu devices (NULL if not built with GPU support)
+        // return the GrRenderTarget backing gpu devices (nullptr if not built with GPU support)
         virtual GrRenderTarget* getGrRenderTarget() = 0;
     private:
         typedef SkRefCnt INHERITED;
@@ -100,11 +100,11 @@
     virtual ~SampleWindow();
 
     SkSurface* createSurface() override {
-        SkSurface* surface = NULL;
+        SkSurface* surface = nullptr;
         if (fDevManager) {
             surface = fDevManager->createSurface(fDeviceType, this);
         }
-        if (NULL == surface) {
+        if (nullptr == surface) {
             surface = this->INHERITED::createSurface();
         }
         return surface;
diff --git a/samplecode/SampleArc.cpp b/samplecode/SampleArc.cpp
index 90fbb78..834ba90 100644
--- a/samplecode/SampleArc.cpp
+++ b/samplecode/SampleArc.cpp
@@ -204,7 +204,7 @@
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
      //   fSweep += SK_Scalar1;
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleAtlas.cpp b/samplecode/SampleAtlas.cpp
index e11bf7e..a7d5cbe 100644
--- a/samplecode/SampleAtlas.cpp
+++ b/samplecode/SampleAtlas.cpp
@@ -186,7 +186,7 @@
         paint.setFilterQuality(kLow_SkFilterQuality);
 
         const SkRect cull = this->getBounds();
-        const SkColor* colorsPtr = fUseColors ? colors : NULL;
+        const SkColor* colorsPtr = fUseColors ? colors : nullptr;
         fProc(canvas, fAtlas, xform, fTex, colorsPtr, N, &cull, &paint);
     }
     
@@ -223,7 +223,7 @@
         SkUnichar uni;
         if (SampleCode::CharQ(*evt, &uni)) {
             switch (uni) {
-                case 'C': fDrawable->toggleUseColors(); this->inval(NULL); return true;
+                case 'C': fDrawable->toggleUseColors(); this->inval(nullptr); return true;
                 default: break;
             }
         }
@@ -232,7 +232,7 @@
 
     void onDrawContent(SkCanvas* canvas) override {
         canvas->drawDrawable(fDrawable);
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 #if 0
diff --git a/samplecode/SampleBigGradient.cpp b/samplecode/SampleBigGradient.cpp
index c2e6225..0fa7969 100644
--- a/samplecode/SampleBigGradient.cpp
+++ b/samplecode/SampleBigGradient.cpp
@@ -13,7 +13,7 @@
 static SkShader* make_grad(SkScalar w, SkScalar h) {
     SkColor colors[] = { 0xFF000000, 0xFF333333 };
     SkPoint pts[] = { { 0, 0 }, { w, h } };
-    return SkGradientShader::CreateLinear(pts, colors, NULL, 2,
+    return SkGradientShader::CreateLinear(pts, colors, nullptr, 2,
                                           SkShader::kClamp_TileMode);
 }
 
diff --git a/samplecode/SampleBitmapRect.cpp b/samplecode/SampleBitmapRect.cpp
index b39db4c..d7eed02 100644
--- a/samplecode/SampleBitmapRect.cpp
+++ b/samplecode/SampleBitmapRect.cpp
@@ -37,7 +37,7 @@
     paint.setAntiAlias(true);
     const SkPoint pts[] = { { 0, 0 }, { SCALAR_SIZE, SCALAR_SIZE } };
     const SkColor colors[] = { SK_ColorWHITE, SK_ColorBLUE };
-    paint.setShader(SkGradientShader::CreateLinear(pts, colors, NULL, 2,
+    paint.setShader(SkGradientShader::CreateLinear(pts, colors, nullptr, 2,
                                                    SkShader::kClamp_TileMode))->unref();
     canvas.drawCircle(SCALAR_SIZE/2, SCALAR_SIZE/2, SCALAR_SIZE/2, paint);
 }
diff --git a/samplecode/SampleBlur.cpp b/samplecode/SampleBlur.cpp
index 7607dfc..bd5ff47 100644
--- a/samplecode/SampleBlur.cpp
+++ b/samplecode/SampleBlur.cpp
@@ -25,7 +25,7 @@
 
     bm.allocPixels(SkImageInfo::Make(256, 256, kIndex_8_SkColorType,
                                      kPremul_SkAlphaType),
-                   NULL, ctable);
+                   nullptr, ctable);
     ctable->unref();
 
     bm.lockPixels();
@@ -104,7 +104,7 @@
                                       flags);
                     paint.setMaskFilter(mf)->unref();
                 } else {
-                    paint.setMaskFilter(NULL);
+                    paint.setMaskFilter(nullptr);
                 }
                 canvas->drawCircle(200 + gRecs[i].fCx*100.f,
                                    200 + gRecs[i].fCy*100.f, 50, paint);
@@ -120,7 +120,7 @@
                 paint.setColor(SK_ColorBLACK);
                 canvas->drawText("Hamburgefons Style", 18, x, y, paint);
                 canvas->drawText("Hamburgefons Style", 18, x, y + SkIntToScalar(50), paint);
-                paint.setMaskFilter(NULL);
+                paint.setMaskFilter(nullptr);
                 paint.setColor(SK_ColorWHITE);
                 x -= SkIntToScalar(2);
                 y -= SkIntToScalar(2);
diff --git a/samplecode/SampleChart.cpp b/samplecode/SampleChart.cpp
index 8d158f1..0c8949c 100644
--- a/samplecode/SampleChart.cpp
+++ b/samplecode/SampleChart.cpp
@@ -24,7 +24,7 @@
 
 // Generates a path to stroke along the top of each plot and a fill path for the area below each
 // plot. The fill path is bounded below by the bottomData plot points or a horizontal line at
-// yBase if bottomData == NULL.
+// yBase if bottomData == nullptr.
 // The plots are animated by rotating the data points by leftShift.
 static void gen_paths(const SkTDArray<SkScalar>& topData,
                       const SkTDArray<SkScalar>* bottomData,
@@ -35,7 +35,7 @@
     plot->rewind();
     fill->rewind();
     plot->incReserve(topData.count());
-    if (NULL == bottomData) {
+    if (nullptr == bottomData) {
         fill->incReserve(topData.count() + 2);
     } else {
         fill->incReserve(2 * topData.count());
@@ -142,7 +142,7 @@
         fillPaint.setAntiAlias(true);
         fillPaint.setStyle(SkPaint::kFill_Style);
 
-        SkTDArray<SkScalar>* prevData = NULL;
+        SkTDArray<SkScalar>* prevData = nullptr;
         for (int i = 0; i < kNumGraphs; ++i) {
             gen_paths(fData[i],
                       prevData,
@@ -164,7 +164,7 @@
         }
 
         fShift += kShiftPerFrame;
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleClamp.cpp b/samplecode/SampleClamp.cpp
index 2368ab2..e319a56 100644
--- a/samplecode/SampleClamp.cpp
+++ b/samplecode/SampleClamp.cpp
@@ -16,7 +16,7 @@
 static SkShader* make_linear() {
     SkPoint pts[] = { 0, 0, SK_Scalar1/500, SK_Scalar1/500 };
     SkColor colors[] = { SK_ColorRED, SK_ColorBLUE };
-    return SkGradientShader::CreateLinear(pts, colors, NULL, 2,
+    return SkGradientShader::CreateLinear(pts, colors, nullptr, 2,
                                           SkShader::kClamp_TileMode);
 }
 
diff --git a/samplecode/SampleClipDrawMatch.cpp b/samplecode/SampleClipDrawMatch.cpp
index c79c872..502f349 100644
--- a/samplecode/SampleClipDrawMatch.cpp
+++ b/samplecode/SampleClipDrawMatch.cpp
@@ -141,17 +141,17 @@
         SkUnichar uni;
         if (SampleCode::CharQ(*evt, &uni)) {
             switch (uni) {
-                case '1': fGeom = kRect_Geometry; this->inval(NULL); return true;
-                case '2': fGeom = kRRect_Geometry; this->inval(NULL); return true;
-                case '3': fGeom = kCircle_Geometry; this->inval(NULL); return true;
-                case '4': fGeom = kConvexPath_Geometry; this->inval(NULL); return true;
-                case '5': fGeom = kConcavePath_Geometry; this->inval(NULL); return true;
-                case '6': fGeom = kRectAndRect_Geometry; this->inval(NULL); return true;
-                case '7': fGeom = kRectAndRRect_Geometry; this->inval(NULL); return true;
-                case '8': fGeom = kRectAndConvex_Geometry; this->inval(NULL); return true;
-                case '9': fGeom = kRectAndConcave_Geometry; this->inval(NULL); return true;
-                case 'f': fSign = -fSign; this->inval(NULL); return true;
-                case 't': fClipFirst = !fClipFirst; this->inval(NULL); return true;
+                case '1': fGeom = kRect_Geometry; this->inval(nullptr); return true;
+                case '2': fGeom = kRRect_Geometry; this->inval(nullptr); return true;
+                case '3': fGeom = kCircle_Geometry; this->inval(nullptr); return true;
+                case '4': fGeom = kConvexPath_Geometry; this->inval(nullptr); return true;
+                case '5': fGeom = kConcavePath_Geometry; this->inval(nullptr); return true;
+                case '6': fGeom = kRectAndRect_Geometry; this->inval(nullptr); return true;
+                case '7': fGeom = kRectAndRRect_Geometry; this->inval(nullptr); return true;
+                case '8': fGeom = kRectAndConvex_Geometry; this->inval(nullptr); return true;
+                case '9': fGeom = kRectAndConcave_Geometry; this->inval(nullptr); return true;
+                case 'f': fSign = -fSign; this->inval(nullptr); return true;
+                case 't': fClipFirst = !fClipFirst; this->inval(nullptr); return true;
                 default: break;
             }
         }
@@ -240,7 +240,7 @@
         this->drawGeometry(canvas, offset, false);
         canvas->restoreToCount(saveCount);
 
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleClock.cpp b/samplecode/SampleClock.cpp
index 9b1e3e0..ae7462d 100644
--- a/samplecode/SampleClock.cpp
+++ b/samplecode/SampleClock.cpp
@@ -216,7 +216,7 @@
 
         canvas->restore();
 
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleConcavePaths.cpp b/samplecode/SampleConcavePaths.cpp
index 2fc0107..fb5447e 100644
--- a/samplecode/SampleConcavePaths.cpp
+++ b/samplecode/SampleConcavePaths.cpp
@@ -139,7 +139,7 @@
 
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
                                               unsigned modi) {
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleCull.cpp b/samplecode/SampleCull.cpp
index afc4184..011b22f 100644
--- a/samplecode/SampleCull.cpp
+++ b/samplecode/SampleCull.cpp
@@ -161,7 +161,7 @@
         paint.setStrokeWidth(SkIntToScalar(2));
 //        paint.setPathEffect(new SkCornerPathEffect(SkIntToScalar(30)))->unref();
         canvas->drawPath(fPath, paint);
-//        paint.setPathEffect(NULL);
+//        paint.setPathEffect(nullptr);
 #endif
 
         SkPath  tmp;
@@ -179,7 +179,7 @@
         paint.setStrokeJoin(SkPaint::kRound_Join);
         canvas->drawPath(tmp, paint);
 
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleDash.cpp b/samplecode/SampleDash.cpp
index e4fa79d..a01c079 100644
--- a/samplecode/SampleDash.cpp
+++ b/samplecode/SampleDash.cpp
@@ -73,7 +73,7 @@
             SkDashPathEffect dash(interval, len, 0);
             paint.setPathEffect(&dash);
             canvas->drawLine(x0, y0, x1, y0, paint);
-            paint.setPathEffect(NULL);
+            paint.setPathEffect(nullptr);
 
             y0 += paint.getStrokeWidth() * 3;
         }
diff --git a/samplecode/SampleDither.cpp b/samplecode/SampleDither.cpp
index c0ce299..8c14fb5 100644
--- a/samplecode/SampleDither.cpp
+++ b/samplecode/SampleDither.cpp
@@ -35,7 +35,7 @@
     //    SkColor colors[] = { SK_ColorRED, SK_ColorBLUE, SK_ColorGREEN, SK_ColorCYAN };
     SkColor colors[] = { 0x4c737373, 0x4c737373, 0xffffd300 };
     SkShader* s = SkGradientShader::CreateSweep(r.centerX(), r.centerY(),
-                                                colors, NULL, SK_ARRAY_COUNT(colors));
+                                                colors, nullptr, SK_ARRAY_COUNT(colors));
     p.setShader(s)->unref();
 
     SkAutoCanvasRestore acr(c, true);
@@ -165,7 +165,7 @@
         draw_sweep(canvas, fBM.width()>>2, fBM.height()>>2, fAngle);
 
         fAngle += SK_Scalar1/2;
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleDitherBitmap.cpp b/samplecode/SampleDitherBitmap.cpp
index 9af5ce5..df72dd4 100644
--- a/samplecode/SampleDitherBitmap.cpp
+++ b/samplecode/SampleDitherBitmap.cpp
@@ -17,7 +17,7 @@
     canvas->drawRect(r, p);
 
     SkPaint frame(p);
-    frame.setShader(NULL);
+    frame.setShader(nullptr);
     frame.setStyle(SkPaint::kStroke_Style);
     canvas->drawRect(r, frame);
 }
@@ -26,7 +26,7 @@
     SkRect r = { 0, 0, SkIntToScalar(256), SkIntToScalar(32) };
     SkPoint pts[] = { { r.fLeft, r.fTop }, { r.fRight, r.fTop } };
     SkColor colors[] = { 0xFF000000, 0xFFFF0000 };
-    SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2,
+    SkShader* s = SkGradientShader::CreateLinear(pts, colors, nullptr, 2,
                                                  SkShader::kClamp_TileMode);
 
     SkPaint p;
@@ -62,7 +62,7 @@
 
     SkBitmap bm;
     bm.allocPixels(SkImageInfo::Make(256, 32, kIndex_8_SkColorType, kPremul_SkAlphaType),
-                   NULL, ctable);
+                   nullptr, ctable);
     ctable->unref();
 
     bm.lockPixels();
diff --git a/samplecode/SampleDraw.cpp b/samplecode/SampleDraw.cpp
index 616650f..5e239c6 100644
--- a/samplecode/SampleDraw.cpp
+++ b/samplecode/SampleDraw.cpp
@@ -22,7 +22,7 @@
 
     c.clipRect(rect);
 
-    c.saveLayer(NULL, NULL);
+    c.saveLayer(nullptr, nullptr);
     rect = SkRect::MakeXYWH(50, 10, 40, 80);
     c.clipRect(rect, SkRegion::kUnion_Op);
 
@@ -262,7 +262,7 @@
     SkTDArray<Draw*> fList;
 
 public:
-    DrawView() : fDraw(NULL) {
+    DrawView() : fDraw(nullptr) {
         fFactory = new RectFactory;
     }
 
@@ -289,7 +289,7 @@
                 return *iter;
             }
         }
-        return NULL;
+        return nullptr;
     }
 
 protected:
@@ -344,7 +344,7 @@
                 } else {
                     fDraw->unref();
                 }
-                fDraw = NULL;
+                fDraw = nullptr;
             }
             return true;
         }
@@ -365,7 +365,7 @@
                 }
             }
         }
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
diff --git a/samplecode/SampleEffects.cpp b/samplecode/SampleEffects.cpp
index 01a63ad..b58d557 100644
--- a/samplecode/SampleEffects.cpp
+++ b/samplecode/SampleEffects.cpp
@@ -40,7 +40,7 @@
 static void paint_proc3(SkPaint* paint) {
     SkColor colors[] = { SK_ColorRED, COLOR, SK_ColorBLUE };
     SkPoint pts[] = { { 3, 0 }, { 7, 5 } };
-    paint->setShader(SkGradientShader::CreateLinear(pts, colors, NULL, SK_ARRAY_COUNT(colors),
+    paint->setShader(SkGradientShader::CreateLinear(pts, colors, nullptr, SK_ARRAY_COUNT(colors),
                                         SkShader::kMirror_TileMode))->unref();
 }
 
diff --git a/samplecode/SampleEncode.cpp b/samplecode/SampleEncode.cpp
index 185208b..9ca7d8a 100644
--- a/samplecode/SampleEncode.cpp
+++ b/samplecode/SampleEncode.cpp
@@ -65,7 +65,7 @@
                 }
             }
             SkColorTable* ctable = new SkColorTable(colors, 256);
-            bm->allocPixels(info, NULL, ctable);
+            bm->allocPixels(info, nullptr, ctable);
             ctable->unref();
             for (int y = 0; y < height; y++) {
                 for (int x = 0; x < width; x++) {
@@ -122,13 +122,13 @@
             for (size_t j = 0; j < SK_ARRAY_COUNT(gTypes); j++) {
                 SkAutoTDelete<SkImageEncoder> codec(
                     SkImageEncoder::Create(gTypes[j]));
-                if (NULL == codec.get()) {
+                if (nullptr == codec.get()) {
                     SkDebugf("[%s:%d] failed to encode %s%s\n",
                              __FILE__, __LINE__,gConfigLabels[i], gExt[j]);
                     continue;
                 }
                 SkAutoDataUnref data(codec->encodeData(fBitmaps[i], 100));
-                if (NULL == data.get()) {
+                if (nullptr == data.get()) {
                     SkDebugf("[%s:%d] failed to encode %s%s\n",
                              __FILE__, __LINE__,gConfigLabels[i], gExt[j]);
                     continue;
@@ -186,7 +186,7 @@
                 yy += SkIntToScalar(fBitmaps[i].height() + 10);
 
                 SkBitmap bm;
-                SkData* encoded = NULL;
+                SkData* encoded = nullptr;
                 if (SkImageEncoder::kJPEG_Type == gTypes[j]) {
                     encoded = fEncodedJPEGs[i].get();
                 } else if (SkImageEncoder::kPNG_Type == gTypes[j]) {
@@ -219,7 +219,7 @@
 
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
                                               unsigned modi) {
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleFatBits.cpp b/samplecode/SampleFatBits.cpp
index a756591..0a47259 100644
--- a/samplecode/SampleFatBits.cpp
+++ b/samplecode/SampleFatBits.cpp
@@ -163,7 +163,7 @@
         SkCanvas* canvas = fMaxSurface->getCanvas();
         canvas->save();
         canvas->concat(fMatrix);
-        fMinSurface->draw(canvas, 0, 0, NULL);
+        fMinSurface->draw(canvas, 0, 0, nullptr);
         canvas->restore();
 
         SkPaint paint;
@@ -184,7 +184,7 @@
 
     paint.setShader(fShader);
     canvas->drawRect(fBounds, paint);
-    paint.setShader(NULL);
+    paint.setShader(nullptr);
 }
 
 void FatBits::drawFG(SkCanvas* canvas) {
@@ -288,7 +288,7 @@
     fMatrix.mapPoints(pts, 2);
     this->drawLineSkeleton(max, pts);
 
-    fMaxSurface->draw(canvas, 0, 0, NULL);
+    fMaxSurface->draw(canvas, 0, 0, nullptr);
 }
 
 void FatBits::drawRect(SkCanvas* canvas, SkPoint pts[2]) {
@@ -318,7 +318,7 @@
     r.set(pts, 2);
     this->drawRectSkeleton(max, r);
 
-    fMaxSurface->draw(canvas, 0, 0, NULL);
+    fMaxSurface->draw(canvas, 0, 0, nullptr);
 }
 
 void FatBits::drawTriangleSkeleton(SkCanvas* max, const SkPoint pts[]) {
@@ -360,7 +360,7 @@
     fMatrix.mapPoints(pts, 3);
     this->drawTriangleSkeleton(max, pts);
 
-    fMaxSurface->draw(canvas, 0, 0, NULL);
+    fMaxSurface->draw(canvas, 0, 0, nullptr);
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -395,7 +395,7 @@
 
     void setStyle(FatBits::Style s) {
         fFB.setStyle(s);
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 protected:
@@ -409,19 +409,19 @@
             switch (uni) {
                 case 'c':
                     fFB.setUseClip(!fFB.getUseClip());
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     return true;
                 case 'r':
                     fIsRect = !fIsRect;
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     return true;
                 case 'o':
                     fFB.toggleRectAsOval();
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     return true;
                 case 'x':
                     fFB.setGrid(!fFB.getGrid());
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     return true;
                 case 's':
                     if (FatBits::kStroke_Style == fFB.getStyle()) {
@@ -432,19 +432,19 @@
                     return true;
                 case 'a':
                     fFB.setAA(!fFB.getAA());
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     return true;
                 case 'w':
                     fFB.setShowSkeleton(!fFB.getShowSkeleton());
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     return true;
                 case 'g':
                     fFB.setUseGPU(!fFB.getUseGPU());
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     return true;
                 case 't':
                     fFB.setTriangle(!fFB.getTriangle());
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     return true;
             }
         }
@@ -504,7 +504,7 @@
             fPts[1].offset(dx, dy);
             fPts[2].offset(dx, dy);
         }
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
diff --git a/samplecode/SampleFilter.cpp b/samplecode/SampleFilter.cpp
index 3713a72..acf358a 100644
--- a/samplecode/SampleFilter.cpp
+++ b/samplecode/SampleFilter.cpp
@@ -30,7 +30,7 @@
     SkColorTable* ctable = new SkColorTable(colors, 4);
     bm->allocPixels(SkImageInfo::Make(2, 2, kIndex_8_SkColorType,
                                       kOpaque_SkAlphaType),
-                    NULL, ctable);
+                    nullptr, ctable);
     ctable->unref();
 
     *bm->getAddr8(0, 0) = 0;
diff --git a/samplecode/SampleFilter2.cpp b/samplecode/SampleFilter2.cpp
index 3541e15..3663f11 100644
--- a/samplecode/SampleFilter2.cpp
+++ b/samplecode/SampleFilter2.cpp
@@ -36,11 +36,11 @@
 
         for (int i = 0; i < fBitmapCount/2; i++) {
             SkImageDecoder::DecodeFile(gNames[i], &fBitmaps[i], kN32_SkColorType,
-                                       SkImageDecoder::kDecodePixels_Mode, NULL);
+                                       SkImageDecoder::kDecodePixels_Mode, nullptr);
         }
         for (int i = fBitmapCount/2; i < fBitmapCount; i++) {
             SkImageDecoder::DecodeFile(gNames[i-fBitmapCount/2], &fBitmaps[i], kRGB_565_SkColorType,
-                                       SkImageDecoder::kDecodePixels_Mode, NULL);
+                                       SkImageDecoder::kDecodePixels_Mode, nullptr);
         }
         fCurrIndex = 0;
 
diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp
index bae7c21..ca4b8e2 100644
--- a/samplecode/SampleFilterFuzz.cpp
+++ b/samplecode/SampleFilterFuzz.cpp
@@ -39,7 +39,7 @@
 //#define SK_ADD_RANDOM_BIT_FLIPS
 //#define SK_FUZZER_IS_VERBOSE
 
-static const uint32_t kSeed = (uint32_t)(time(NULL));
+static const uint32_t kSeed = (uint32_t)(time(nullptr));
 static SkRandom gRand(kSeed);
 static bool return_large = false;
 static bool return_undef = false;
@@ -245,7 +245,7 @@
 
     canvas->save();
     canvas->scale(0.5f, 0.5f);
-    canvas->drawBitmap(make_bitmap(), 0, 0, NULL);
+    canvas->drawBitmap(make_bitmap(), 0, 0, nullptr);
     canvas->restore();
 
     paint.setAntiAlias(true);
@@ -260,7 +260,7 @@
 static SkImageFilter* make_image_filter(bool canBeNull = true) {
     SkImageFilter* filter = 0;
 
-    // Add a 1 in 3 chance to get a NULL input
+    // Add a 1 in 3 chance to get a nullptr input
     if (canBeNull && (R(3) == 1)) { return filter; }
 
     enum { ALPHA_THRESHOLD, MERGE, COLOR, LUT3D, BLUR, MAGNIFIER,
@@ -380,7 +380,7 @@
     case DROP_SHADOW:
         filter = SkDropShadowImageFilter::Create(make_scalar(), make_scalar(), make_scalar(true),
                     make_scalar(true), make_color(), make_shadow_mode(), make_image_filter(),
-                    NULL);
+                    nullptr);
         break;
     case MORPHOLOGY:
         if (R(2) == 1) {
diff --git a/samplecode/SampleFilterQuality.cpp b/samplecode/SampleFilterQuality.cpp
index 12a04a6..8bc2b07 100644
--- a/samplecode/SampleFilterQuality.cpp
+++ b/samplecode/SampleFilterQuality.cpp
@@ -59,7 +59,7 @@
     canvas->scale(S, S);
     canvas->translate(-SkScalarHalf(orig->width()) * (S - D) / S,
                       -SkScalarHalf(orig->height()) * (S - D) / S);
-    canvas->drawImage(orig, 0, 0, NULL);
+    canvas->drawImage(orig, 0, 0, nullptr);
     
     if (S > 3) {
         SkPaint paint;
@@ -165,11 +165,11 @@
         SkUnichar uni;
         if (SampleCode::CharQ(*evt, &uni)) {
             switch (uni) {
-                case '1': fAngle.inc(-ANGLE_DELTA); this->inval(NULL); return true;
-                case '2': fAngle.inc( ANGLE_DELTA); this->inval(NULL); return true;
-                case '3': fScale.inc(-SCALE_DELTA); this->inval(NULL); return true;
-                case '4': fScale.inc( SCALE_DELTA); this->inval(NULL); return true;
-                case '5': fShowFatBits = !fShowFatBits; this->inval(NULL); return true;
+                case '1': fAngle.inc(-ANGLE_DELTA); this->inval(nullptr); return true;
+                case '2': fAngle.inc( ANGLE_DELTA); this->inval(nullptr); return true;
+                case '3': fScale.inc(-SCALE_DELTA); this->inval(nullptr); return true;
+                case '4': fScale.inc( SCALE_DELTA); this->inval(nullptr); return true;
+                case '5': fShowFatBits = !fShowFatBits; this->inval(nullptr); return true;
                 default: break;
             }
         }
@@ -283,7 +283,7 @@
     }
 
     virtual bool handleKey(SkKey key) {
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
diff --git a/samplecode/SampleFontCache.cpp b/samplecode/SampleFontCache.cpp
index 77f66b0..5391d24 100644
--- a/samplecode/SampleFontCache.cpp
+++ b/samplecode/SampleFontCache.cpp
@@ -63,7 +63,7 @@
     while (!gDone) {
         call_measure();
     }
-    return NULL;
+    return nullptr;
 }
 
 static void* draw_proc(void* context) {
@@ -73,7 +73,7 @@
     while (!gDone) {
         call_draw(&canvas);
     }
-    return NULL;
+    return nullptr;
 }
 
 class FontCacheView : public SampleView {
@@ -89,13 +89,13 @@
         for (int i = 0; i < N; i++) {
             int status;
 
-            status = pthread_create(&fMThreads[i], NULL,  measure_proc, NULL);
+            status = pthread_create(&fMThreads[i], nullptr,  measure_proc, nullptr);
             SkASSERT(0 == status);
 
             fBitmaps[i].allocPixels(SkImageInfo::Make(320, 240,
                                                       kRGB_565_SkColorType,
                                                       kOpaque_SkAlphaType));
-            status = pthread_create(&fDThreads[i], NULL,  draw_proc, &fBitmaps[i]);
+            status = pthread_create(&fDThreads[i], nullptr,  draw_proc, &fBitmaps[i]);
             SkASSERT(0 == status);
         }
         this->setBGColor(0xFFDDDDDD);
@@ -129,7 +129,7 @@
             canvas->drawBitmap(fBitmaps[i], x, y);
             x += SkIntToScalar(fBitmaps[i].width());
         }
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleFontScalerTest.cpp b/samplecode/SampleFontScalerTest.cpp
index bbfd5a5..0105a47 100644
--- a/samplecode/SampleFontScalerTest.cpp
+++ b/samplecode/SampleFontScalerTest.cpp
@@ -25,8 +25,8 @@
     const char* fName;
     SkTypeface::Style   fStyle;
 } gFaces[] = {
-    { NULL, SkTypeface::kNormal },
-    { NULL, SkTypeface::kBold },
+    { nullptr, SkTypeface::kNormal },
+    { nullptr, SkTypeface::kBold },
     { "serif", SkTypeface::kNormal },
     { "serif", SkTypeface::kBold },
     { "serif", SkTypeface::kItalic },
@@ -121,7 +121,7 @@
                 for (int ps = 6; ps <= 22; ps++) {
                     paint.setTextSize(SkIntToScalar(ps));
                     canvas->drawText(text, textLen, x, y, paint);
-                    y += paint.getFontMetrics(NULL);
+                    y += paint.getFontMetrics(nullptr);
                     index += 1;
                 }
             }
diff --git a/samplecode/SampleFuzz.cpp b/samplecode/SampleFuzz.cpp
index e690df1..d1a696f 100644
--- a/samplecode/SampleFuzz.cpp
+++ b/samplecode/SampleFuzz.cpp
@@ -383,7 +383,7 @@
 
     virtual void onDrawContent(SkCanvas* canvas) {
         do_fuzz(canvas);
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleGradients.cpp b/samplecode/SampleGradients.cpp
index 12d24d2..2d6f7d4 100644
--- a/samplecode/SampleGradients.cpp
+++ b/samplecode/SampleGradients.cpp
@@ -13,7 +13,7 @@
 static SkShader* setgrad(const SkRect& r, SkColor c0, SkColor c1) {
     SkColor colors[] = { c0, c1 };
     SkPoint pts[] = { { r.fLeft, r.fTop }, { r.fRight, r.fTop } };
-    return SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode);
+    return SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
 }
 
 static void test_alphagradients(SkCanvas* canvas) {
@@ -56,10 +56,10 @@
 };
 
 static const GradData gGradData[] = {
-    { 2, gColors, NULL },
+    { 2, gColors, nullptr },
     { 2, gColors, gPos0 },
     { 2, gColors, gPos1 },
-    { 5, gColors, NULL },
+    { 5, gColors, nullptr },
     { 5, gColors, gPos2 }
 };
 
@@ -164,7 +164,7 @@
         if (false) { // avoid bit rot, suppress warning
             test_alphagradients(canvas);
         }
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleHT.cpp b/samplecode/SampleHT.cpp
index 7b45250..099adcc 100644
--- a/samplecode/SampleHT.cpp
+++ b/samplecode/SampleHT.cpp
@@ -54,7 +54,7 @@
         fR = SkRect::MakeXYWH(rand.nextRangeF(0, 640), rand.nextRangeF(0, 480),
                               rand.nextRangeF(20, 200), rand.nextRangeF(20, 200));
         fColor = rand_opaque_color(rand.nextU());
-        fInterp = NULL;
+        fInterp = nullptr;
         fTime = 0;
     }
     
@@ -102,7 +102,7 @@
             switch (res) {
                 case SkInterpolator::kFreezeEnd_Result:
                     delete fInterp;
-                    fInterp = NULL;
+                    fInterp = nullptr;
                     break;
                 default:
                     break;
@@ -172,8 +172,8 @@
                 break;
             }
         }
-        this->inval(NULL);
-        return NULL;
+        this->inval(nullptr);
+        return nullptr;
     }
 
 private:
diff --git a/samplecode/SampleHairModes.cpp b/samplecode/SampleHairModes.cpp
index 8788577..ae41aa9 100644
--- a/samplecode/SampleHairModes.cpp
+++ b/samplecode/SampleHairModes.cpp
@@ -110,7 +110,7 @@
                 SkXfermode* mode = SkXfermode::Create(gModes[i].fMode);
 
                 canvas->drawRect(bounds, fBGPaint);
-                canvas->saveLayer(&bounds, NULL);
+                canvas->saveLayer(&bounds, nullptr);
                 SkScalar dy = drawCell(canvas, mode,
                                        gAlphaValue[alpha & 1],
                                        gAlphaValue[alpha & 2]);
diff --git a/samplecode/SampleHairline.cpp b/samplecode/SampleHairline.cpp
index bb2e2f1..a8985c8 100644
--- a/samplecode/SampleHairline.cpp
+++ b/samplecode/SampleHairline.cpp
@@ -197,8 +197,8 @@
 
     void show_bitmaps(SkCanvas* canvas, const SkBitmap& b0, const SkBitmap& b1,
                       const SkIRect& inset) {
-        canvas->drawBitmap(b0, 0, 0, NULL);
-        canvas->drawBitmap(b1, SkIntToScalar(b0.width()), 0, NULL);
+        canvas->drawBitmap(b0, 0, 0, nullptr);
+        canvas->drawBitmap(b1, SkIntToScalar(b0.width()), 0, nullptr);
     }
 
     void onDrawContent(SkCanvas* canvas) override {
@@ -219,7 +219,7 @@
 
         bm2.eraseColor(SK_ColorTRANSPARENT);
         gProcs[fProcIndex].fProc(&c2, paint, bm);
-        canvas->drawBitmap(bm2, SkIntToScalar(10), SkIntToScalar(10), NULL);
+        canvas->drawBitmap(bm2, SkIntToScalar(10), SkIntToScalar(10), nullptr);
     }
 
     bool onAnimate(const SkAnimTimer&) override {
@@ -233,7 +233,7 @@
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
         fDoAA = !fDoAA;
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleIdentityScale.cpp b/samplecode/SampleIdentityScale.cpp
index 7a329de..5a4e39d 100644
--- a/samplecode/SampleIdentityScale.cpp
+++ b/samplecode/SampleIdentityScale.cpp
@@ -25,7 +25,7 @@
 public:
     IdentityScaleView(const char imageFilename[]) {
       SkString resourcePath = GetResourcePath(imageFilename);
-      SkImageDecoder* codec = NULL;
+      SkImageDecoder* codec = nullptr;
       SkFILEStream stream(resourcePath.c_str());
       if (stream.isValid()) {
           codec = SkImageDecoder::Factory(&stream);
@@ -80,7 +80,7 @@
         canvas->drawBitmap( fBM, 100, 100, &paint );
         canvas->restore();
         canvas->drawText( text, strlen(text), 100, 400, paint );
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleLayerMask.cpp b/samplecode/SampleLayerMask.cpp
index f5b8822..5fce85c 100644
--- a/samplecode/SampleLayerMask.cpp
+++ b/samplecode/SampleLayerMask.cpp
@@ -58,7 +58,7 @@
     virtual void onDrawContent(SkCanvas* canvas) {
         SkRect  r;
         r.set(SkIntToScalar(20), SkIntToScalar(20), SkIntToScalar(120), SkIntToScalar(120));
-        canvas->saveLayer(&r, NULL);
+        canvas->saveLayer(&r, nullptr);
         canvas->drawColor(SK_ColorRED);
         drawMask(canvas, r);
         canvas->restore();
diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp
index 0c34638..52bf5b3 100644
--- a/samplecode/SampleLayers.cpp
+++ b/samplecode/SampleLayers.cpp
@@ -30,7 +30,7 @@
 static void make_paint(SkPaint* paint, const SkMatrix& localMatrix) {
     SkColor colors[] = { 0, SK_ColorWHITE };
     SkPoint pts[] = { { 0, 0 }, { 0, SK_Scalar1*20 } };
-    SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode,
+    SkShader* s = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode,
                                                  0, &localMatrix);
 
     paint->setShader(s)->unref();
@@ -70,11 +70,11 @@
     canvas->clipRect(r);
 
     r.fBottom = SkIntToScalar(20);
-    canvas->saveLayer(&r, NULL);
+    canvas->saveLayer(&r, nullptr);
 
     r.fTop = SkIntToScalar(80);
     r.fBottom = SkIntToScalar(100);
-    canvas->saveLayer(&r, NULL);
+    canvas->saveLayer(&r, nullptr);
 
     // now draw the "content"
 
@@ -215,7 +215,7 @@
     }
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
-        this->inval(NULL);
+        this->inval(nullptr);
 
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
@@ -225,7 +225,7 @@
     }
 
     virtual bool handleKey(SkKey) {
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
diff --git a/samplecode/SampleLighting.cpp b/samplecode/SampleLighting.cpp
index 4838cf8..566ed7f 100755
--- a/samplecode/SampleLighting.cpp
+++ b/samplecode/SampleLighting.cpp
@@ -88,11 +88,11 @@
         canvas->drawRect(r, paint);
 
         // so we're constantly updating
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleLines.cpp b/samplecode/SampleLines.cpp
index 0166bc0..4570635 100644
--- a/samplecode/SampleLines.cpp
+++ b/samplecode/SampleLines.cpp
@@ -65,7 +65,7 @@
     void onDrawContent(SkCanvas* canvas) override {
         SkBitmap bm;
         SkImageDecoder::DecodeFile("/kill.gif", &bm);
-        canvas->drawBitmap(bm, 0, 0, NULL);
+        canvas->drawBitmap(bm, 0, 0, nullptr);
 
         this->drawRings(canvas);
         return;
@@ -98,8 +98,8 @@
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
         fAlpha = SkScalarRoundToInt(y);
-        this->inval(NULL);
-        return NULL;
+        this->inval(nullptr);
+        return nullptr;
     }
 private:
 
diff --git a/samplecode/SampleLua.cpp b/samplecode/SampleLua.cpp
index 5fc9ab0..96b15b9 100644
--- a/samplecode/SampleLua.cpp
+++ b/samplecode/SampleLua.cpp
@@ -39,7 +39,7 @@
 
 class LuaView : public SampleView {
 public:
-    LuaView() : fLua(NULL) {}
+    LuaView() : fLua(nullptr) {}
 
     virtual ~LuaView() { delete fLua; }
 
@@ -56,7 +56,7 @@
     }
 
     lua_State* ensureLua() {
-        if (NULL == fLua) {
+        if (nullptr == fLua) {
             fLua = new SkLua;
 
             SkString str = GetResourcePath(LUA_FILENAME);
@@ -90,7 +90,7 @@
                     SkDebugf("lua err: %s\n", lua_tostring(L, -1));
                 } else {
                     if (lua_isboolean(L, -1) && lua_toboolean(L, -1)) {
-                        this->inval(NULL);
+                        this->inval(nullptr);
                         return true;
                     }
                 }
@@ -117,7 +117,7 @@
                 SkDebugf("lua err: %s\n", lua_tostring(L, -1));
             } else {
                 if (lua_isboolean(L, -1) && lua_toboolean(L, -1)) {
-                    this->inval(NULL);
+                    this->inval(nullptr);
                 }
             }
         }
@@ -135,7 +135,7 @@
                 SkDebugf("lua err: %s\n", lua_tostring(L, -1));
             } else {
                 if (lua_isboolean(L, -1) && lua_toboolean(L, -1)) {
-                    this->inval(NULL);
+                    this->inval(nullptr);
                     Click* c = new Click(this);
                     c->setType(gLuaClickHandlerName);
                     return c;
@@ -150,7 +150,7 @@
             return this->INHERITED::onClick(click);
         }
 
-        const char* state = NULL;
+        const char* state = nullptr;
         switch (click->fState) {
             case Click::kMoved_State:
                 state = "moved";
@@ -162,7 +162,7 @@
                 break;
         }
         if (state) {
-            this->inval(NULL);
+            this->inval(nullptr);
             lua_State* L = fLua->get();
             lua_getglobal(L, gClickName);
             fLua->pushScalar(click->fCurr.x());
diff --git a/samplecode/SampleManyRects.cpp b/samplecode/SampleManyRects.cpp
index 9c9e985..0290af2 100644
--- a/samplecode/SampleManyRects.cpp
+++ b/samplecode/SampleManyRects.cpp
@@ -65,7 +65,7 @@
             canvas->drawRect(rect, paint);
             canvas->restore();
         }
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleMeasure.cpp b/samplecode/SampleMeasure.cpp
index 86f9b52..20335f2 100644
--- a/samplecode/SampleMeasure.cpp
+++ b/samplecode/SampleMeasure.cpp
@@ -35,7 +35,7 @@
 };
 
 static void doMeasure(SkCanvas* canvas, const SkPaint& paint, const char text[]) {
-    SkScalar    dy = paint.getFontMetrics(NULL);
+    SkScalar    dy = paint.getFontMetrics(nullptr);
 
     size_t      len = strlen(text);
     SkAutoTMalloc<SkScalar> autoWidths(len);
diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index 9ada9ef..dc3e9df 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -42,7 +42,7 @@
     SkPoint pts[] = { { 0, 0, },
                       { SkIntToScalar(size.fX), SkIntToScalar(size.fY) } };
     SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorRED };
-    return SkGradientShader::CreateLinear(pts, colors, NULL,
+    return SkGradientShader::CreateLinear(pts, colors, nullptr,
                     SK_ARRAY_COUNT(colors), SkShader::kMirror_TileMode);
 }
 
@@ -74,7 +74,7 @@
     samples[0] = cubic[0];
     for (int i = 1; i < segs; i++) {
         t += dt;
-        SkEvalCubicAt(cubic, t, &samples[i], NULL, NULL);
+        SkEvalCubicAt(cubic, t, &samples[i], nullptr, nullptr);
     }
 }
 
@@ -199,9 +199,9 @@
         }
         t += dt;
         canvas->drawVertices(SkCanvas::kTriangleStrip_VertexMode, stripCount,
-                             strip, doTextures ? tex : NULL,
-                             doColors ? colors : NULL, NULL,
-                             NULL, 0, paint);
+                             strip, doTextures ? tex : nullptr,
+                             doColors ? colors : nullptr, nullptr,
+                             nullptr, 0, paint);
     }
 }
 
@@ -294,7 +294,7 @@
         patch.setPatch(fPts);
         drawpatches(canvas, paint, nu, nv, &patch);
 
-        paint.setShader(NULL);
+        paint.setShader(nullptr);
         paint.setAntiAlias(true);
         paint.setStrokeWidth(SkIntToScalar(5));
         canvas->drawPoints(SkCanvas::kPoints_PointMode, SK_ARRAY_COUNT(fPts), fPts, paint);
@@ -347,7 +347,7 @@
 
     bool onClick(Click* click) override {
         fPts[((PtClick*)click)->fIndex].set(click->fCurr.fX - DX, click->fCurr.fY - DY);
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
diff --git a/samplecode/SamplePath.cpp b/samplecode/SamplePath.cpp
index c09ff20..c977ca0 100644
--- a/samplecode/SamplePath.cpp
+++ b/samplecode/SamplePath.cpp
@@ -57,9 +57,9 @@
     {
 #ifdef SK_BUILD_FOR_WIN
         // windows doesn't have strtof
-        float x = (float)strtod("9.94099e+07", NULL);
+        float x = (float)strtod("9.94099e+07", nullptr);
 #else
-        float x = strtof("9.94099e+07", NULL);
+        float x = strtof("9.94099e+07", nullptr);
 #endif
         int ix = (int)x;
         int fx = (int)(x * 65536);
@@ -211,7 +211,7 @@
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
         fShowHairline = !fShowHairline;
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
@@ -269,7 +269,7 @@
 
     void toggle(bool& value) {
         value = !value;
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 protected:
@@ -323,7 +323,7 @@
         if (click->fMeta.findS32("index", &index)) {
             SkASSERT((unsigned)index < N);
             fPts[index] = click->fCurr;
-            this->inval(NULL);
+            this->inval(nullptr);
             return true;
         }
         return false;
diff --git a/samplecode/SamplePathClip.cpp b/samplecode/SamplePathClip.cpp
index 494debf..27f1f30 100644
--- a/samplecode/SamplePathClip.cpp
+++ b/samplecode/SamplePathClip.cpp
@@ -76,7 +76,7 @@
 
     bool onClick(Click* click) override {
         fCenter.set(click->fCurr.fX, click->fCurr.fY);
-        this->inval(NULL);
+        this->inval(nullptr);
         return false;
     }
 
diff --git a/samplecode/SamplePathFuzz.cpp b/samplecode/SamplePathFuzz.cpp
index 70a052f..317833d 100644
--- a/samplecode/SamplePathFuzz.cpp
+++ b/samplecode/SamplePathFuzz.cpp
@@ -685,7 +685,7 @@
             path_fuzz_stroker(&offscreen, fIndex += 100);
             canvas->drawBitmap(offscreen, 0, 0);
         }
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SamplePdfFileViewer.cpp b/samplecode/SamplePdfFileViewer.cpp
index 747f729..950d42b 100644
--- a/samplecode/SamplePdfFileViewer.cpp
+++ b/samplecode/SamplePdfFileViewer.cpp
@@ -38,8 +38,8 @@
 
     static SkPicture* LoadPdf(const char path[]) {
         SkAutoTDelete<SkPdfRenderer> renderer(SkPdfRenderer::CreateFromFile(path));
-        if (NULL == renderer.get()) {
-            return NULL;
+        if (nullptr == renderer.get()) {
+            return nullptr;
         }
 
         SkPicture* pic = new SkPicture;
@@ -51,8 +51,8 @@
     }
 
 public:
-    PdfFileViewer(const char name[] = NULL) : fFilename(name) {
-        fPicture = NULL;
+    PdfFileViewer(const char name[] = nullptr) : fFilename(name) {
+        fPicture = nullptr;
     }
 
     virtual ~PdfFileViewer() {
diff --git a/samplecode/SamplePictFile.cpp b/samplecode/SamplePictFile.cpp
index dd315f8..4ba4f39 100644
--- a/samplecode/SamplePictFile.cpp
+++ b/samplecode/SamplePictFile.cpp
@@ -46,12 +46,12 @@
 
 class PictFileView : public SampleView {
 public:
-    PictFileView(const char name[] = NULL)
+    PictFileView(const char name[] = nullptr)
         : fFilename(name)
         , fBBox(kNo_BBoxType)
         , fTileSize(SkSize::Make(0, 0)) {
         for (int i = 0; i < kBBoxTypeCount; ++i) {
-            fPictures[i] = NULL;
+            fPictures[i] = nullptr;
         }
         fCount = 0;
     }
@@ -126,7 +126,7 @@
                 canvas->setDrawFilter(&filter);
             }
             canvas->drawPicture(*picture);
-            canvas->setDrawFilter(NULL);
+            canvas->setDrawFilter(nullptr);
         }
 
 #ifdef SK_GLYPHCACHE_TRACK_HASH_STATS
@@ -159,8 +159,8 @@
             SkPictureRecorder recorder;
             SkCanvas* can = recorder.beginRecording(SkIntToScalar(bm.width()),
                                                     SkIntToScalar(bm.height()),
-                                                    NULL, 0);
-            can->drawBitmap(bm, 0, 0, NULL);
+                                                    nullptr, 0);
+            can->drawBitmap(bm, 0, 0, nullptr);
             pic.reset(recorder.endRecording());
         } else {
             SkFILEStream stream(path);
@@ -174,7 +174,7 @@
                 SkPictureRecorder recorder;
                 pic->playback(recorder.beginRecording(pic->cullRect().width(),
                                                       pic->cullRect().height(),
-                                                      NULL, 0));
+                                                      nullptr, 0));
                 SkAutoTUnref<SkPicture> p2(recorder.endRecording());
 
                 SkString path2(path);
@@ -184,8 +184,8 @@
             }
         }
 
-        if (NULL == pic) {
-            return NULL;
+        if (nullptr == pic) {
+            return nullptr;
         }
 
         SkAutoTDelete<SkBBHFactory> factory;
diff --git a/samplecode/SamplePicture.cpp b/samplecode/SamplePicture.cpp
index 638af05..eb2cd73 100644
--- a/samplecode/SamplePicture.cpp
+++ b/samplecode/SamplePicture.cpp
@@ -39,7 +39,7 @@
     SkBitmap bm;
     SkString pngFilename = GetResourcePath("mandrill_512.png");
     SkAutoDataUnref data(SkData::NewFromFileName(pngFilename.c_str()));
-    if (data.get() != NULL) {
+    if (data.get() != nullptr) {
         SkInstallDiscardablePixelRef(data, &bm);
     }
     return bm;
@@ -63,14 +63,14 @@
 
         SkPictureRecorder recorder;
 
-        recorder.beginRecording(100, 100, NULL, 0);
+        recorder.beginRecording(100, 100, nullptr, 0);
         fSubPicture = recorder.endRecording();
 
-        SkCanvas* canvas = recorder.beginRecording(100, 100, NULL, 0);
+        SkCanvas* canvas = recorder.beginRecording(100, 100, nullptr, 0);
         SkPaint paint;
         paint.setAntiAlias(true);
 
-        canvas->drawBitmap(fBitmap, 0, 0, NULL);
+        canvas->drawBitmap(fBitmap, 0, 0, nullptr);
 
         drawCircle(canvas, 50, SK_ColorBLACK);
         canvas->drawPicture(fSubPicture);
@@ -108,7 +108,7 @@
 
         canvas->save();
         canvas->scale(0.5f, 0.5f);
-        canvas->drawBitmap(fBitmap, 0, 0, NULL);
+        canvas->drawBitmap(fBitmap, 0, 0, nullptr);
         canvas->restore();
 
         paint.setAntiAlias(true);
@@ -127,7 +127,7 @@
         this->drawSomething(canvas);
 
         SkPictureRecorder recorder;
-        this->drawSomething(recorder.beginRecording(100, 100, NULL, 0));
+        this->drawSomething(recorder.beginRecording(100, 100, nullptr, 0));
         SkAutoTUnref<SkPicture> pict(recorder.endRecording());
 
         canvas->save();
@@ -161,7 +161,7 @@
 
     bool onEvent(const SkEvent& evt) override {
         if (evt.isType(INVAL_ALL_TYPE)) {
-            this->inval(NULL);
+            this->inval(nullptr);
             return true;
         }
         return this->INHERITED::onEvent(evt);
diff --git a/samplecode/SampleQuadStroker.cpp b/samplecode/SampleQuadStroker.cpp
index 91a6a0f..3b02980 100644
--- a/samplecode/SampleQuadStroker.cpp
+++ b/samplecode/SampleQuadStroker.cpp
@@ -196,7 +196,7 @@
                 default:
                     fText.appendUnichar(uni);
             }
-            this->inval(NULL);
+            this->inval(nullptr);
             return true;
         }
         return this->INHERITED::onQuery(evt);
@@ -226,7 +226,7 @@
         SkCanvas* canvas = fMaxSurface->getCanvas();
         canvas->save();
         canvas->concat(fMatrix);
-        fMinSurface->draw(canvas, 0, 0, NULL);
+        fMinSurface->draw(canvas, 0, 0, nullptr);
         canvas->restore();
 
         SkPaint paint;
@@ -320,7 +320,7 @@
         if (drawText) {
             fMinSurface->getCanvas()->drawPath(path, paint);
             this->copyMinToMax();
-            fMaxSurface->draw(canvas, 0, 0, NULL);
+            fMaxSurface->draw(canvas, 0, 0, nullptr);
         }
         paint.setAntiAlias(true);
         paint.setStyle(SkPaint::kStroke_Style);
@@ -541,7 +541,7 @@
         draw_button(canvas, fRRectButton);
         draw_button(canvas, fCircleButton);
         draw_button(canvas, fTextButton);
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
     class MyClick : public Click {
@@ -608,7 +608,7 @@
         if (index < (int) SK_ARRAY_COUNT(fPts)) {
             fPts[index].offset(SkIntToScalar(click->fICurr.fX - click->fIPrev.fX),
                                SkIntToScalar(click->fICurr.fY - click->fIPrev.fY));
-            this->inval(NULL);
+            this->inval(nullptr);
         } else if (index == (int) SK_ARRAY_COUNT(fPts) + 1) {
             fWeight = MapScreenYtoValue(click->fICurr.fY, fWeightControl, 0, 5);
         }
diff --git a/samplecode/SampleRectanizer.cpp b/samplecode/SampleRectanizer.cpp
index 7bb712c..55e70a2 100644
--- a/samplecode/SampleRectanizer.cpp
+++ b/samplecode/SampleRectanizer.cpp
@@ -127,7 +127,7 @@
         str.printf("Press \'h\' to toggle rects");
         canvas->drawText(str.c_str(), str.size(), 50, kHeight + 150, blackBigFont);
 
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleRegion.cpp b/samplecode/SampleRegion.cpp
index 8047844..eb3e134 100644
--- a/samplecode/SampleRegion.cpp
+++ b/samplecode/SampleRegion.cpp
@@ -43,12 +43,12 @@
     // use the rect
     c.clear(SK_ColorTRANSPARENT);
     c.drawRect(r, paint);
-    canvas->drawBitmap(bitmap, 0, 0, NULL);
+    canvas->drawBitmap(bitmap, 0, 0, nullptr);
 
     // use the path
     c.clear(SK_ColorTRANSPARENT);
     c.drawPath(path, paint);
-    canvas->drawBitmap(bitmap, SkIntToScalar(2*width), 0, NULL);
+    canvas->drawBitmap(bitmap, SkIntToScalar(2*width), 0, nullptr);
 }
 
 static void drawFadingText(SkCanvas* canvas,
@@ -65,7 +65,7 @@
     // antialiasing
     bounds.inset(-SkIntToScalar(2), -SkIntToScalar(2));
 
-    canvas->saveLayer(&bounds, NULL);
+    canvas->saveLayer(&bounds, nullptr);
     canvas->drawText(text, len, x, y, paint);
 
     const SkPoint pts[] = {
@@ -112,7 +112,7 @@
     canvas->drawText(str, len, x, y, paint);
 
     y += 20;
-    paint.setShader(NULL);
+    paint.setShader(nullptr);
     drawFadingText(canvas, str, len, x, y, paint);
 }
 
@@ -269,7 +269,7 @@
 
             {
                 char    buffer[1000];
-                SkDEBUGCODE(size_t  size = ) tmp.writeToMemory(NULL);
+                SkDEBUGCODE(size_t  size = ) tmp.writeToMemory(nullptr);
                 SkASSERT(size <= sizeof(buffer));
                 SkDEBUGCODE(size_t  size2 = ) tmp.writeToMemory(buffer);
                 SkASSERT(size == size2);
@@ -392,13 +392,13 @@
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
                                               unsigned modi) override {
         return fRect.contains(SkScalarRoundToInt(x),
-                              SkScalarRoundToInt(y)) ? new Click(this) : NULL;
+                              SkScalarRoundToInt(y)) ? new Click(this) : nullptr;
     }
 
     bool onClick(Click* click) override {
         fRect.offset(click->fICurr.fX - click->fIPrev.fX,
                      click->fICurr.fY - click->fIPrev.fY);
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
diff --git a/samplecode/SampleRepeatTile.cpp b/samplecode/SampleRepeatTile.cpp
index 61bc8cd..9287439 100644
--- a/samplecode/SampleRepeatTile.cpp
+++ b/samplecode/SampleRepeatTile.cpp
@@ -67,7 +67,7 @@
     }
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
-        this->inval(NULL);
+        this->inval(nullptr);
 
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
@@ -77,7 +77,7 @@
     }
 
     virtual bool handleKey(SkKey) {
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
diff --git a/samplecode/SampleShaderText.cpp b/samplecode/SampleShaderText.cpp
index cf7cf96..f13fd4e 100644
--- a/samplecode/SampleShaderText.cpp
+++ b/samplecode/SampleShaderText.cpp
@@ -50,8 +50,8 @@
 };
 
 static const GradData gGradData[] = {
-    { 2, gColors, NULL },
-    { 5, gColors, NULL },
+    { 2, gColors, nullptr },
+    { 5, gColors, nullptr },
 };
 
 static SkShader* MakeLinear(const SkPoint pts[2], const GradData& data, SkShader::TileMode tm) {
@@ -182,7 +182,7 @@
             ++i;
             canvas->translate(SkIntToScalar((i / testsPerCol) * colWidth),
                               SkIntToScalar((i % testsPerCol) * rowHeight));
-            canvas->drawTextOnPath(text, textLen, path, NULL, paint);
+            canvas->drawTextOnPath(text, textLen, path, nullptr, paint);
             canvas->restore();
         }
         canvas->restore();
diff --git a/samplecode/SampleShaders.cpp b/samplecode/SampleShaders.cpp
index a9a8cf9..dd444ec 100644
--- a/samplecode/SampleShaders.cpp
+++ b/samplecode/SampleShaders.cpp
@@ -31,7 +31,7 @@
     pts[1].set(0, SkIntToScalar(bm.height()));
     colors[0] = SK_ColorBLACK;
     colors[1] = SkColorSetARGB(0, 0, 0, 0);
-    SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode);
+    SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
 
     SkShader* shaderB = SkShader::CreateBitmapShader(bm,
                         SkShader::kClamp_TileMode, SkShader::kClamp_TileMode);
@@ -61,13 +61,13 @@
         pts[1].set(SkIntToScalar(100), 0);
         colors[0] = SK_ColorRED;
         colors[1] = SK_ColorBLUE;
-        SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode);
+        SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
 
         pts[0].set(0, 0);
         pts[1].set(0, SkIntToScalar(100));
         colors[0] = SK_ColorBLACK;
         colors[1] = SkColorSetARGB(0x80, 0, 0, 0);
-        SkShader* shaderB = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode);
+        SkShader* shaderB = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode);
 
         SkXfermode* mode = SkXfermode::Create(SkXfermode::kDstIn_Mode);
 
@@ -111,14 +111,14 @@
         h = 80;
         r.set(0, 0, SkIntToScalar(w), SkIntToScalar(h));
 
-        paint.setShader(NULL);
+        paint.setShader(nullptr);
         canvas->drawRect(r, paint);
         paint.setShader(make_bitmapfade(fBitmap))->unref();
         canvas->drawRect(r, paint);
     }
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index 83e91bb..8b85336 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -93,7 +93,7 @@
 
 static void fill_pe(SkPaint* paint) {
     paint->setStyle(SkPaint::kFill_Style);
-    paint->setPathEffect(NULL);
+    paint->setPathEffect(nullptr);
 }
 
 static void discrete_pe(SkPaint* paint) {
@@ -171,10 +171,10 @@
 };
 
 static const GradData gGradData[] = {
-{ 2, gColors, NULL },
+{ 2, gColors, nullptr },
 { 2, gColors, gPos0 },
 { 2, gColors, gPos1 },
-{ 5, gColors, NULL },
+{ 5, gColors, nullptr },
 { 5, gColors, gPos2 }
 };
 
@@ -290,7 +290,7 @@
     paint.setStyle(SkPaint::kFill_Style);
 
     paint.setTextSize(50);
-    canvas->drawTextOnPath(text, len, path, NULL, paint);
+    canvas->drawTextOnPath(text, len, path, nullptr, paint);
 
     paint.setColor(SK_ColorRED);
     matrix.setScale(-SK_Scalar1, SK_Scalar1);
@@ -327,7 +327,7 @@
     SkPoint pts[] = { { 0, 0 },
                       { SkIntToScalar(size.fX), SkIntToScalar(size.fY) } };
     SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorRED };
-    return SkGradientShader::CreateLinear(pts, colors, NULL,
+    return SkGradientShader::CreateLinear(pts, colors, nullptr,
                                           SK_ARRAY_COUNT(colors), SkShader::kMirror_TileMode);
 }
 
@@ -338,7 +338,7 @@
     SkPoint*                fVerts;
     SkPoint*                fTexs;
 
-    Rec() : fCount(0), fVerts(NULL), fTexs(NULL) {}
+    Rec() : fCount(0), fVerts(nullptr), fTexs(nullptr) {}
     ~Rec() { delete[] fVerts; delete[] fTexs; }
 };
 
@@ -443,24 +443,24 @@
     for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) {
         canvas->save();
 
-        paint.setShader(NULL);
+        paint.setShader(nullptr);
         canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                              fRecs[i].fVerts, fRecs[i].fTexs,
-                             NULL, NULL, NULL, 0, paint);
+                             nullptr, nullptr, nullptr, 0, paint);
 
         canvas->translate(SkIntToScalar(210), 0);
 
         paint.setShader(fShader0);
         canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                              fRecs[i].fVerts, fRecs[i].fTexs,
-                             NULL, NULL, NULL, 0, paint);
+                             nullptr, nullptr, nullptr, 0, paint);
 
         canvas->translate(SkIntToScalar(210), 0);
 
         paint.setShader(fShader1);
         canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                              fRecs[i].fVerts, fRecs[i].fTexs,
-                             NULL, NULL, NULL, 0, paint);
+                             nullptr, nullptr, nullptr, 0, paint);
         canvas->restore();
 
         canvas->translate(0, SkIntToScalar(250));
@@ -475,7 +475,7 @@
                                              SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3))))->unref();
     rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
 
-    p.setMaskFilter(NULL);
+    p.setMaskFilter(nullptr);
     p.setStyle(SkPaint::kStroke_Style);
     p.setStrokeWidth(SK_Scalar1);
     rastBuilder->addLayer(p);
@@ -530,7 +530,7 @@
     p.setXfermodeMode(SkXfermode::kClear_Mode);
     rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
 
-    p.setXfermode(NULL);
+    p.setXfermode(nullptr);
     rastBuilder->addLayer(p);
 }
 
@@ -585,8 +585,8 @@
     p.setXfermodeMode(SkXfermode::kClear_Mode);
     rastBuilder->addLayer(p);
 
-    p.setPathEffect(NULL);
-    p.setXfermode(NULL);
+    p.setPathEffect(nullptr);
+    p.setXfermode(nullptr);
     p.setStyle(SkPaint::kStroke_Style);
     p.setStrokeWidth(SK_Scalar1);
     rastBuilder->addLayer(p);
@@ -603,8 +603,8 @@
     p.setXfermodeMode(SkXfermode::kClear_Mode);
     rastBuilder->addLayer(p);
 
-    p.setPathEffect(NULL);
-    p.setXfermode(NULL);
+    p.setPathEffect(nullptr);
+    p.setXfermode(nullptr);
     p.setStyle(SkPaint::kStroke_Style);
     p.setStrokeWidth(SK_Scalar1);
     rastBuilder->addLayer(p);
@@ -713,8 +713,8 @@
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
         this->init();
         fIndex = (fIndex + 1) % SK_ARRAY_COUNT(gProc);
-        this->inval(NULL);
-        return NULL;
+        this->inval(nullptr);
+        return nullptr;
     }
 
 private:
diff --git a/samplecode/SampleStringArt.cpp b/samplecode/SampleStringArt.cpp
index 5bc667b..74f3bd8 100644
--- a/samplecode/SampleStringArt.cpp
+++ b/samplecode/SampleStringArt.cpp
@@ -59,8 +59,8 @@
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
         fAngle = x/width();
-        this->inval(NULL);
-        return NULL;
+        this->inval(nullptr);
+        return nullptr;
     }
 private:
 
diff --git a/samplecode/SampleStrokePath.cpp b/samplecode/SampleStrokePath.cpp
index 63809ce..9bcfcd9 100644
--- a/samplecode/SampleStrokePath.cpp
+++ b/samplecode/SampleStrokePath.cpp
@@ -210,7 +210,7 @@
 
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
                                               unsigned modi) override {
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 private:
diff --git a/samplecode/SampleSubpixelTranslate.cpp b/samplecode/SampleSubpixelTranslate.cpp
index 0f7639e..7e067a6 100644
--- a/samplecode/SampleSubpixelTranslate.cpp
+++ b/samplecode/SampleSubpixelTranslate.cpp
@@ -27,7 +27,7 @@
       : fHorizontalVelocity(horizontalVelocity),
         fVerticalVelocity(verticalVelocity) {
       SkString resourcePath = GetResourcePath(imageFilename);
-      SkImageDecoder* codec = NULL;
+      SkImageDecoder* codec = nullptr;
       SkFILEStream stream(resourcePath.c_str());
       if (stream.isValid()) {
           codec = SkImageDecoder::Factory(&stream);
@@ -109,7 +109,7 @@
 
         fCurPos.fX += fHorizontalVelocity;
         fCurPos.fY += fVerticalVelocity;
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
 private:
diff --git a/samplecode/SampleText.cpp b/samplecode/SampleText.cpp
index aae42c1..f5f8dbe 100644
--- a/samplecode/SampleText.cpp
+++ b/samplecode/SampleText.cpp
@@ -148,7 +148,7 @@
         {
             SkRect r;
             r.set(0, 0, SkIntToScalar(1000), SkIntToScalar(20));
-       //     canvas->saveLayer(&r, NULL, SkCanvas::kHasAlphaLayer_SaveFlag);
+       //     canvas->saveLayer(&r, nullptr, SkCanvas::kHasAlphaLayer_SaveFlag);
         }
 
         SkPaint paint;
@@ -188,7 +188,7 @@
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
                                               unsigned modi) override {
         fClickX = x;
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleTextAlpha.cpp b/samplecode/SampleTextAlpha.cpp
index f344021..d8fd104 100644
--- a/samplecode/SampleTextAlpha.cpp
+++ b/samplecode/SampleTextAlpha.cpp
@@ -65,7 +65,7 @@
             paint.setTextSize(SkIntToScalar(ps));
             paint.setTextSize(SkIntToScalar(24));
             canvas->drawText(str, strlen(str), x, y, paint);
-            y += paint.getFontMetrics(NULL);
+            y += paint.getFontMetrics(nullptr);
         }
     }
 
@@ -81,7 +81,7 @@
             y = 255;
         }
         fByte = y;
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
diff --git a/samplecode/SampleTextOnPath.cpp b/samplecode/SampleTextOnPath.cpp
index 7ea4694..ea2ae81 100644
--- a/samplecode/SampleTextOnPath.cpp
+++ b/samplecode/SampleTextOnPath.cpp
@@ -71,7 +71,7 @@
     SkPathMeasure   meas(path, false);
     SkScalar pathLen = meas.getLength();
 
-    canvas->drawTextOnPath(text, len, path, NULL, paint);
+    canvas->drawTextOnPath(text, len, path, nullptr, paint);
 
     paint.setColor(SK_ColorRED);
     matrix.setScale(-SK_Scalar1, SK_Scalar1);
@@ -148,12 +148,12 @@
         textPathMatrix(canvas);
 
         if (REPEAT_COUNT > 1)
-            this->inval(NULL);
+            this->inval(nullptr);
     }
 
     SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
         fHints += 1;
-        this->inval(NULL);
+        this->inval(nullptr);
         return this->INHERITED::onFindClickHandler(x, y, modi);
     }
 
diff --git a/samplecode/SampleTextureDomain.cpp b/samplecode/SampleTextureDomain.cpp
index 7c770a9..6557533 100644
--- a/samplecode/SampleTextureDomain.cpp
+++ b/samplecode/SampleTextureDomain.cpp
@@ -85,11 +85,11 @@
         paint.setMaskFilter(mf)->unref();
         canvas->drawImageRect(image, srcRect, dstRect, &paint);
 
-        // Blur and a rotation + NULL src rect
+        // Blur and a rotation + nullptr src rect
         // This should not trigger the texture domain code
         // but it will test a code path in SkGpuDevice::drawBitmap
         // that handles blurs with rects transformed to non-
-        // orthogonal rects. It also tests the NULL src rect handling
+        // orthogonal rects. It also tests the nullptr src rect handling
         mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle,
                                       SkBlurMask::ConvertRadiusToSigma(5),
                                       SkBlurMaskFilter::kHighQuality_BlurFlag);
diff --git a/samplecode/SampleTiling.cpp b/samplecode/SampleTiling.cpp
index 5f995e2..ba79e5a 100644
--- a/samplecode/SampleTiling.cpp
+++ b/samplecode/SampleTiling.cpp
@@ -97,9 +97,9 @@
         SkScalar x = SkIntToScalar(10);
 
         SkPictureRecorder recorder;
-        SkCanvas* textCanvas = NULL;
-        if (NULL == fTextPicture) {
-            textCanvas = recorder.beginRecording(1000, 1000, NULL, 0);
+        SkCanvas* textCanvas = nullptr;
+        if (nullptr == fTextPicture) {
+            textCanvas = recorder.beginRecording(1000, 1000, nullptr, 0);
         }
 
         if (textCanvas) {
@@ -153,7 +153,7 @@
         }
 
         if (textCanvas) {
-            SkASSERT(NULL == fTextPicture);
+            SkASSERT(nullptr == fTextPicture);
             fTextPicture.reset(recorder.endRecording());
         }
 
diff --git a/samplecode/SampleTinyBitmap.cpp b/samplecode/SampleTinyBitmap.cpp
index 57ce2ff..8b1bdf0 100644
--- a/samplecode/SampleTinyBitmap.cpp
+++ b/samplecode/SampleTinyBitmap.cpp
@@ -24,7 +24,7 @@
     SkBitmap bm;
     bm.allocPixels(SkImageInfo::Make(1, 1, kIndex_8_SkColorType,
                                      kPremul_SkAlphaType),
-                   NULL, ctable);
+                   nullptr, ctable);
     ctable->unref();
 
     bm.lockPixels();
diff --git a/samplecode/SampleUnpremul.cpp b/samplecode/SampleUnpremul.cpp
index ee3ec82..6d5cf6c 100644
--- a/samplecode/SampleUnpremul.cpp
+++ b/samplecode/SampleUnpremul.cpp
@@ -88,7 +88,7 @@
                                      SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(2)),
                                      0, 0));
         paint.setLooper(looper);
-        SkScalar height = paint.getFontMetrics(NULL);
+        SkScalar height = paint.getFontMetrics(nullptr);
         if (!fDecodeSucceeded) {
             SkString failure;
             if (fResPath.size() == 0) {
@@ -169,7 +169,7 @@
         }
         SkFILEStream stream(fCurrFile.c_str());
         SkAutoTDelete<SkImageDecoder> decoder(SkImageDecoder::Factory(&stream));
-        if (NULL == decoder.get()) {
+        if (nullptr == decoder.get()) {
             fDecodeSucceeded = false;
             return;
         }
@@ -178,7 +178,7 @@
         }
         fDecodeSucceeded = decoder->decode(&stream, &fBitmap, kN32_SkColorType,
                 SkImageDecoder::kDecodePixels_Mode) != SkImageDecoder::kFailure;
-        this->inval(NULL);
+        this->inval(nullptr);
     }
 
     void togglePremul() {
diff --git a/samplecode/SampleVertices.cpp b/samplecode/SampleVertices.cpp
index 138ab2e..2f2dc02 100644
--- a/samplecode/SampleVertices.cpp
+++ b/samplecode/SampleVertices.cpp
@@ -46,7 +46,7 @@
     SkPoint pts[] = { { 0, 0 },
                       { SkIntToScalar(size.fX), SkIntToScalar(size.fY) } };
     SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorRED };
-    return SkGradientShader::CreateLinear(pts, colors, NULL,
+    return SkGradientShader::CreateLinear(pts, colors, nullptr,
                     SK_ARRAY_COUNT(colors), SkShader::kMirror_TileMode);
 }
 
@@ -95,24 +95,24 @@
         for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) {
             canvas->save();
 
-            paint.setShader(NULL);
+            paint.setShader(nullptr);
             canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                                  fRecs[i].fVerts, fRecs[i].fTexs,
-                                 NULL, NULL, NULL, 0, paint);
+                                 nullptr, nullptr, nullptr, 0, paint);
 
             canvas->translate(SkIntToScalar(250), 0);
 
             paint.setShader(fShader0);
             canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                                  fRecs[i].fVerts, fRecs[i].fTexs,
-                                 NULL, NULL, NULL, 0, paint);
+                                 nullptr, nullptr, nullptr, 0, paint);
 
             canvas->translate(SkIntToScalar(250), 0);
 
             paint.setShader(fShader1);
             canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
                                  fRecs[i].fVerts, fRecs[i].fTexs,
-                                 NULL, NULL, NULL, 0, paint);
+                                 nullptr, nullptr, nullptr, 0, paint);
             canvas->restore();
 
             canvas->translate(0, SkIntToScalar(250));
@@ -126,7 +126,7 @@
     bool onClick(Click* click) override {
     //    fCurrX = click->fICurr.fX;
     //    fCurrY = click->fICurr.fY;
-        this->inval(NULL);
+        this->inval(nullptr);
         return true;
     }
 
@@ -137,7 +137,7 @@
         SkPoint*                fVerts;
         SkPoint*                fTexs;
 
-        Rec() : fCount(0), fVerts(NULL), fTexs(NULL) {}
+        Rec() : fCount(0), fVerts(nullptr), fTexs(nullptr) {}
         ~Rec() { delete[] fVerts; delete[] fTexs; }
     };
 
diff --git a/samplecode/SampleXfermodesBlur.cpp b/samplecode/SampleXfermodesBlur.cpp
index fff4bed..a17a06e 100644
--- a/samplecode/SampleXfermodesBlur.cpp
+++ b/samplecode/SampleXfermodesBlur.cpp
@@ -178,13 +178,13 @@
                 p.setShader(s);
                 canvas->drawRect(r, p);
 
-                canvas->saveLayer(&r, NULL);
+                canvas->saveLayer(&r, nullptr);
                 draw_mode(canvas, mode, twice ? 0x88 : 0xFF, r.fLeft, r.fTop);
                 canvas->restore();
 
                 r.inset(-SK_ScalarHalf, -SK_ScalarHalf);
                 p.setStyle(SkPaint::kStroke_Style);
-                p.setShader(NULL);
+                p.setShader(nullptr);
                 canvas->drawRect(r, p);
 
                 canvas->drawText(gModes[i].fLabel, strlen(gModes[i].fLabel),