| Index: src/pdf/SkPDFDevice.cpp
 | 
| diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
 | 
| index 678e6c058f8ceefe0d450803dca95180d46900b2..a5c9557412032281fbbc341599baf5ff44dd451b 100644
 | 
| --- a/src/pdf/SkPDFDevice.cpp
 | 
| +++ b/src/pdf/SkPDFDevice.cpp
 | 
| @@ -43,7 +43,7 @@
 | 
|  static void replace_srcmode_on_opaque_paint(SkPaint* paint) {
 | 
|      if (kSrcOver_SkXfermodeInterpretation
 | 
|          == SkInterpretXfermode(*paint, false)) {
 | 
| -        paint->setXfermode(NULL);
 | 
| +        paint->setXfermode(nullptr);
 | 
|      }
 | 
|  }
 | 
|  
 | 
| @@ -86,7 +86,7 @@ static void align_text(SkDrawCacheProc glyphCacheProc, const SkPaint& paint,
 | 
|  
 | 
|      SkMatrix ident;
 | 
|      ident.reset();
 | 
| -    SkAutoGlyphCache autoCache(paint, NULL, &ident);
 | 
| +    SkAutoGlyphCache autoCache(paint, nullptr, &ident);
 | 
|      SkGlyphCache* cache = autoCache.getCache();
 | 
|  
 | 
|      const char* start = reinterpret_cast<const char*>(glyphs);
 | 
| @@ -126,7 +126,7 @@ static int force_glyph_encoding(const SkPaint& paint, const void* text,
 | 
|                                  const uint16_t** glyphIDs) {
 | 
|      // Make sure we have a glyph id encoding.
 | 
|      if (paint.getTextEncoding() != SkPaint::kGlyphID_TextEncoding) {
 | 
| -        int numGlyphs = paint.textToGlyphs(text, len, NULL);
 | 
| +        int numGlyphs = paint.textToGlyphs(text, len, nullptr);
 | 
|          storage->reset(numGlyphs);
 | 
|          paint.textToGlyphs(text, len, storage->get());
 | 
|          *glyphIDs = storage->get();
 | 
| @@ -204,10 +204,10 @@ struct GraphicStateEntry {
 | 
|      int fGraphicStateIndex;
 | 
|  
 | 
|      // We may change the font (i.e. for Type1 support) within a
 | 
| -    // ContentEntry.  This is the one currently in effect, or NULL if none.
 | 
| +    // ContentEntry.  This is the one currently in effect, or nullptr if none.
 | 
|      SkPDFFont* fFont;
 | 
|      // In PDF, text size has no default value. It is only valid if fFont is
 | 
| -    // not NULL.
 | 
| +    // not nullptr.
 | 
|      SkScalar fTextSize;
 | 
|  };
 | 
|  
 | 
| @@ -216,7 +216,7 @@ GraphicStateEntry::GraphicStateEntry() : fColor(SK_ColorBLACK),
 | 
|                                           fTextFill(SkPaint::kFill_Style),
 | 
|                                           fShaderIndex(-1),
 | 
|                                           fGraphicStateIndex(-1),
 | 
| -                                         fFont(NULL),
 | 
| +                                         fFont(nullptr),
 | 
|                                           fTextSize(SK_ScalarNaN) {
 | 
|      fMatrix.reset();
 | 
|  }
 | 
| @@ -309,7 +309,7 @@ static void skip_clip_stack_prefix(const SkClipStack& prefix,
 | 
|          }
 | 
|      }
 | 
|  
 | 
| -    SkASSERT(prefixEntry == NULL);
 | 
| +    SkASSERT(prefixEntry == nullptr);
 | 
|  }
 | 
|  
 | 
|  static void emit_clip(SkPath* clipPath, SkRect* clipRect,
 | 
| @@ -444,7 +444,7 @@ void GraphicStackState::updateClip(const SkClipStack& clipStack,
 | 
|  #ifdef SK_PDF_USE_PATHOPS_CLIPPING
 | 
|      SkPath clipPath;
 | 
|      if (get_clip_stack_path(transform, clipStack, clipRegion, &clipPath)) {
 | 
| -        emit_clip(&clipPath, NULL, fContentStream);
 | 
| +        emit_clip(&clipPath, nullptr, fContentStream);
 | 
|          return;
 | 
|      }
 | 
|  #endif
 | 
| @@ -474,7 +474,7 @@ void GraphicStackState::updateClip(const SkClipStack& clipStack,
 | 
|      if (needRegion) {
 | 
|          SkPath clipPath;
 | 
|          SkAssertResult(clipRegion.getBoundaryPath(&clipPath));
 | 
| -        emit_clip(&clipPath, NULL, fContentStream);
 | 
| +        emit_clip(&clipPath, nullptr, fContentStream);
 | 
|      } else {
 | 
|          skip_clip_stack_prefix(fEntries[0].fClipStack, clipStack, &iter);
 | 
|          const SkClipStack::Element* clipEntry;
 | 
| @@ -484,14 +484,14 @@ void GraphicStackState::updateClip(const SkClipStack& clipStack,
 | 
|                  case SkClipStack::Element::kRect_Type: {
 | 
|                      SkRect translatedClip;
 | 
|                      transform.mapRect(&translatedClip, clipEntry->getRect());
 | 
| -                    emit_clip(NULL, &translatedClip, fContentStream);
 | 
| +                    emit_clip(nullptr, &translatedClip, fContentStream);
 | 
|                      break;
 | 
|                  }
 | 
|                  default: {
 | 
|                      SkPath translatedPath;
 | 
|                      clipEntry->asPath(&translatedPath);
 | 
|                      translatedPath.transform(transform, &translatedPath);
 | 
| -                    emit_clip(&translatedPath, NULL, fContentStream);
 | 
| +                    emit_clip(&translatedPath, nullptr, fContentStream);
 | 
|                      break;
 | 
|                  }
 | 
|              }
 | 
| @@ -572,13 +572,13 @@ static bool not_supported_for_layers(const SkPaint& layerPaint) {
 | 
|      // to improve quality and file size (http://skbug.com/3043)
 | 
|  
 | 
|      // TODO: should we return true if there is a colorfilter?
 | 
| -    return layerPaint.getImageFilter() != NULL;
 | 
| +    return layerPaint.getImageFilter() != nullptr;
 | 
|  }
 | 
|  
 | 
|  SkBaseDevice* SkPDFDevice::onCreateDevice(const CreateInfo& cinfo, const SkPaint* layerPaint) {
 | 
|      if (cinfo.fForImageFilter ||
 | 
|          (layerPaint && not_supported_for_layers(*layerPaint))) {
 | 
| -        return NULL;
 | 
| +        return nullptr;
 | 
|      }
 | 
|      SkISize size = SkISize::Make(cinfo.fInfo.width(), cinfo.fInfo.height());
 | 
|      return SkPDFDevice::Create(size, fRasterDpi, fCanon);
 | 
| @@ -594,9 +594,9 @@ struct ContentEntry {
 | 
|      // So we manually destruct the object.
 | 
|      ~ContentEntry() {
 | 
|          ContentEntry* val = fNext.detach();
 | 
| -        while (val != NULL) {
 | 
| +        while (val != nullptr) {
 | 
|              ContentEntry* valNext = val->fNext.detach();
 | 
| -            // When the destructor is called, fNext is NULL and exits.
 | 
| +            // When the destructor is called, fNext is nullptr and exits.
 | 
|              delete val;
 | 
|              val = valNext;
 | 
|          }
 | 
| @@ -610,18 +610,18 @@ public:
 | 
|      ScopedContentEntry(SkPDFDevice* device, const SkDraw& draw,
 | 
|                         const SkPaint& paint, bool hasText = false)
 | 
|          : fDevice(device),
 | 
| -          fContentEntry(NULL),
 | 
| +          fContentEntry(nullptr),
 | 
|            fXfermode(SkXfermode::kSrcOver_Mode),
 | 
| -          fDstFormXObject(NULL) {
 | 
| +          fDstFormXObject(nullptr) {
 | 
|          init(draw.fClipStack, *draw.fClip, *draw.fMatrix, paint, hasText);
 | 
|      }
 | 
|      ScopedContentEntry(SkPDFDevice* device, const SkClipStack* clipStack,
 | 
|                         const SkRegion& clipRegion, const SkMatrix& matrix,
 | 
|                         const SkPaint& paint, bool hasText = false)
 | 
|          : fDevice(device),
 | 
| -          fContentEntry(NULL),
 | 
| +          fContentEntry(nullptr),
 | 
|            fXfermode(SkXfermode::kSrcOver_Mode),
 | 
| -          fDstFormXObject(NULL) {
 | 
| +          fDstFormXObject(nullptr) {
 | 
|          init(clipStack, clipRegion, matrix, paint, hasText);
 | 
|      }
 | 
|  
 | 
| @@ -629,7 +629,7 @@ public:
 | 
|          if (fContentEntry) {
 | 
|              SkPath* shape = &fShape;
 | 
|              if (shape->isEmpty()) {
 | 
| -                shape = NULL;
 | 
| +                shape = nullptr;
 | 
|              }
 | 
|              fDevice->finishContentEntry(fXfermode, fDstFormXObject, shape);
 | 
|          }
 | 
| @@ -702,11 +702,11 @@ SkPDFDevice::SkPDFDevice(SkISize pageSize, SkScalar rasterDpi, SkPDFCanon* canon
 | 
|      , fPageSize(pageSize)
 | 
|      , fContentSize(pageSize)
 | 
|      , fExistingClipRegion(SkIRect::MakeSize(pageSize))
 | 
| -    , fAnnotations(NULL)
 | 
| -    , fLastContentEntry(NULL)
 | 
| -    , fLastMarginContentEntry(NULL)
 | 
| +    , fAnnotations(nullptr)
 | 
| +    , fLastContentEntry(nullptr)
 | 
| +    , fLastMarginContentEntry(nullptr)
 | 
|      , fDrawingArea(kContent_DrawingArea)
 | 
| -    , fClipStack(NULL)
 | 
| +    , fClipStack(nullptr)
 | 
|      , fFontGlyphUsage(new SkPDFGlyphSetMap)
 | 
|      , fRasterDpi(rasterDpi)
 | 
|      , fCanon(canon) {
 | 
| @@ -731,13 +731,13 @@ SkPDFDevice::~SkPDFDevice() {
 | 
|  }
 | 
|  
 | 
|  void SkPDFDevice::init() {
 | 
| -    fAnnotations = NULL;
 | 
| +    fAnnotations = nullptr;
 | 
|      fContentEntries.free();
 | 
| -    fLastContentEntry = NULL;
 | 
| +    fLastContentEntry = nullptr;
 | 
|      fMarginContentEntries.free();
 | 
| -    fLastMarginContentEntry = NULL;
 | 
| +    fLastMarginContentEntry = nullptr;
 | 
|      fDrawingArea = kContent_DrawingArea;
 | 
| -    if (fFontGlyphUsage.get() == NULL) {
 | 
| +    if (fFontGlyphUsage.get() == nullptr) {
 | 
|          fFontGlyphUsage.reset(new SkPDFGlyphSetMap);
 | 
|      }
 | 
|  }
 | 
| @@ -946,7 +946,7 @@ static SkPDFDict* create_rect_annotation(const SkRect& r,
 | 
|      if (linkToName) {
 | 
|          return create_link_named_dest(linkToName, r);
 | 
|      }
 | 
| -    return NULL;
 | 
| +    return nullptr;
 | 
|  }
 | 
|  
 | 
|  void SkPDFDevice::drawRect(const SkDraw& d,
 | 
| @@ -963,7 +963,7 @@ void SkPDFDevice::drawRect(const SkDraw& d,
 | 
|          }
 | 
|          SkPath path;
 | 
|          path.addRect(r);
 | 
| -        drawPath(d, path, paint, NULL, true);
 | 
| +        drawPath(d, path, paint, nullptr, true);
 | 
|          return;
 | 
|      }
 | 
|  
 | 
| @@ -996,7 +996,7 @@ void SkPDFDevice::drawRRect(const SkDraw& draw,
 | 
|      replace_srcmode_on_opaque_paint(&paint);
 | 
|      SkPath  path;
 | 
|      path.addRRect(rrect);
 | 
| -    this->drawPath(draw, path, paint, NULL, true);
 | 
| +    this->drawPath(draw, path, paint, nullptr, true);
 | 
|  }
 | 
|  
 | 
|  void SkPDFDevice::drawOval(const SkDraw& draw,
 | 
| @@ -1006,7 +1006,7 @@ void SkPDFDevice::drawOval(const SkDraw& draw,
 | 
|      replace_srcmode_on_opaque_paint(&paint);
 | 
|      SkPath  path;
 | 
|      path.addOval(oval);
 | 
| -    this->drawPath(draw, path, paint, NULL, true);
 | 
| +    this->drawPath(draw, path, paint, nullptr, true);
 | 
|  }
 | 
|  
 | 
|  void SkPDFDevice::drawPath(const SkDraw& d,
 | 
| @@ -1043,14 +1043,14 @@ void SkPDFDevice::drawPath(const SkDraw& d,
 | 
|          bool fill = paint.getFillPath(origPath, pathPtr);
 | 
|  
 | 
|          SkPaint noEffectPaint(paint);
 | 
| -        noEffectPaint.setPathEffect(NULL);
 | 
| +        noEffectPaint.setPathEffect(nullptr);
 | 
|          if (fill) {
 | 
|              noEffectPaint.setStyle(SkPaint::kFill_Style);
 | 
|          } else {
 | 
|              noEffectPaint.setStyle(SkPaint::kStroke_Style);
 | 
|              noEffectPaint.setStrokeWidth(0);
 | 
|          }
 | 
| -        drawPath(d, *pathPtr, noEffectPaint, NULL, true);
 | 
| +        drawPath(d, *pathPtr, noEffectPaint, nullptr, true);
 | 
|          return;
 | 
|      }
 | 
|  
 | 
| @@ -1154,7 +1154,7 @@ void SkPDFDevice::drawBitmap(const SkDraw& d, const SkBitmap& bitmap,
 | 
|  
 | 
|      SkMatrix transform = matrix;
 | 
|      transform.postConcat(*d.fMatrix);
 | 
| -    this->internalDrawBitmap(transform, d.fClipStack, *d.fClip, bitmap, NULL,
 | 
| +    this->internalDrawBitmap(transform, d.fClipStack, *d.fClip, bitmap, nullptr,
 | 
|                               paint);
 | 
|  }
 | 
|  
 | 
| @@ -1171,7 +1171,7 @@ void SkPDFDevice::drawSprite(const SkDraw& d, const SkBitmap& bitmap,
 | 
|  
 | 
|      SkMatrix matrix;
 | 
|      matrix.setTranslate(SkIntToScalar(x), SkIntToScalar(y));
 | 
| -    this->internalDrawBitmap(matrix, d.fClipStack, *d.fClip, bitmap, NULL,
 | 
| +    this->internalDrawBitmap(matrix, d.fClipStack, *d.fClip, bitmap, nullptr,
 | 
|                               paint);
 | 
|  }
 | 
|  
 | 
| @@ -1215,8 +1215,8 @@ void SkPDFDevice::drawText(const SkDraw& d, const void* text, size_t len,
 | 
|      SkPaint paint = srcPaint;
 | 
|      replace_srcmode_on_opaque_paint(&paint);
 | 
|  
 | 
| -    NOT_IMPLEMENTED(paint.getMaskFilter() != NULL, false);
 | 
| -    if (paint.getMaskFilter() != NULL) {
 | 
| +    NOT_IMPLEMENTED(paint.getMaskFilter() != nullptr, false);
 | 
| +    if (paint.getMaskFilter() != nullptr) {
 | 
|          // Don't pretend we support drawing MaskFilters, it makes for artifacts
 | 
|          // making text unreadable (e.g. same text twice when using CSS shadows).
 | 
|          return;
 | 
| @@ -1228,7 +1228,7 @@ void SkPDFDevice::drawText(const SkDraw& d, const void* text, size_t len,
 | 
|      }
 | 
|  
 | 
|      SkGlyphStorage storage(0);
 | 
| -    const uint16_t* glyphIDs = NULL;
 | 
| +    const uint16_t* glyphIDs = nullptr;
 | 
|      int numGlyphs = force_glyph_encoding(paint, text, len, &storage, &glyphIDs);
 | 
|      textPaint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
 | 
|  
 | 
| @@ -1267,8 +1267,8 @@ void SkPDFDevice::drawPosText(const SkDraw& d, const void* text, size_t len,
 | 
|      SkPaint paint = srcPaint;
 | 
|      replace_srcmode_on_opaque_paint(&paint);
 | 
|  
 | 
| -    NOT_IMPLEMENTED(paint.getMaskFilter() != NULL, false);
 | 
| -    if (paint.getMaskFilter() != NULL) {
 | 
| +    NOT_IMPLEMENTED(paint.getMaskFilter() != nullptr, false);
 | 
| +    if (paint.getMaskFilter() != nullptr) {
 | 
|          // Don't pretend we support drawing MaskFilters, it makes for artifacts
 | 
|          // making text unreadable (e.g. same text twice when using CSS shadows).
 | 
|          return;
 | 
| @@ -1281,7 +1281,7 @@ void SkPDFDevice::drawPosText(const SkDraw& d, const void* text, size_t len,
 | 
|      }
 | 
|  
 | 
|      SkGlyphStorage storage(0);
 | 
| -    const uint16_t* glyphIDs = NULL;
 | 
| +    const uint16_t* glyphIDs = nullptr;
 | 
|      size_t numGlyphs = force_glyph_encoding(paint, text, len, &storage, &glyphIDs);
 | 
|      textPaint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
 | 
|  
 | 
| @@ -1374,7 +1374,7 @@ void SkPDFDevice::onAttachToCanvas(SkCanvas* canvas) {
 | 
|  void SkPDFDevice::onDetachFromCanvas() {
 | 
|      INHERITED::onDetachFromCanvas();
 | 
|  
 | 
| -    fClipStack = NULL;
 | 
| +    fClipStack = nullptr;
 | 
|  }
 | 
|  
 | 
|  SkSurface* SkPDFDevice::newSurface(const SkImageInfo& info, const SkSurfaceProps& props) {
 | 
| @@ -1451,7 +1451,7 @@ void SkPDFDevice::copyContentEntriesToData(ContentEntry* entry,
 | 
|      // TODO(ctguil): For margins, I'm not sure fExistingClipStack/Region is the
 | 
|      // right thing to pass here.
 | 
|      GraphicStackState gsState(fExistingClipStack, fExistingClipRegion, data);
 | 
| -    while (entry != NULL) {
 | 
| +    while (entry != nullptr) {
 | 
|          SkPoint translation;
 | 
|          translation.iset(this->getOrigin());
 | 
|          translation.negate();
 | 
| @@ -1485,7 +1485,7 @@ void SkPDFDevice::writeContent(SkWStream* out) const {
 | 
|      if (fPageSize != fContentSize) {
 | 
|          SkRect r = SkRect::MakeWH(SkIntToScalar(this->width()),
 | 
|                                    SkIntToScalar(this->height()));
 | 
| -        emit_clip(NULL, &r, out);
 | 
| +        emit_clip(nullptr, &r, out);
 | 
|      }
 | 
|  
 | 
|      SkPDFDevice::copyContentEntriesToData(fContentEntries.get(), out);
 | 
| @@ -1525,7 +1525,7 @@ bool SkPDFDevice::handleInversePath(const SkDraw& d, const SkPath& origPath,
 | 
|              // To be consistent with the raster output, hairline strokes
 | 
|              // are rendered as non-inverted.
 | 
|              modifiedPath.toggleInverseFillType();
 | 
| -            drawPath(d, modifiedPath, paint, NULL, true);
 | 
| +            drawPath(d, modifiedPath, paint, nullptr, true);
 | 
|              return true;
 | 
|          }
 | 
|      }
 | 
| @@ -1584,7 +1584,7 @@ bool SkPDFDevice::handlePointAnnotation(const SkPoint* points, size_t count,
 | 
|  }
 | 
|  
 | 
|  void SkPDFDevice::addAnnotation(SkPDFDict* annotation) {
 | 
| -    if (NULL == fAnnotations) {
 | 
| +    if (nullptr == fAnnotations) {
 | 
|          fAnnotations = new SkPDFArray;
 | 
|      }
 | 
|      fAnnotations->appendObject(annotation);
 | 
| @@ -1653,14 +1653,14 @@ ContentEntry* SkPDFDevice::setUpContentEntry(const SkClipStack* clipStack,
 | 
|                                               const SkPaint& paint,
 | 
|                                               bool hasText,
 | 
|                                               SkPDFFormXObject** dst) {
 | 
| -    *dst = NULL;
 | 
| +    *dst = nullptr;
 | 
|      if (clipRegion.isEmpty()) {
 | 
| -        return NULL;
 | 
| +        return nullptr;
 | 
|      }
 | 
|  
 | 
|      // The clip stack can come from an SkDraw where it is technically optional.
 | 
|      SkClipStack synthesizedClipStack;
 | 
| -    if (clipStack == NULL) {
 | 
| +    if (clipStack == nullptr) {
 | 
|          if (clipRegion == fExistingClipRegion) {
 | 
|              clipStack = &fExistingClipStack;
 | 
|          } else {
 | 
| @@ -1699,7 +1699,7 @@ ContentEntry* SkPDFDevice::setUpContentEntry(const SkClipStack* clipStack,
 | 
|                     xfermode != SkXfermode::kSrcOut_Mode) {
 | 
|              // Except for Src and SrcOut, if there isn't anything already there,
 | 
|              // then we're done.
 | 
| -            return NULL;
 | 
| +            return nullptr;
 | 
|          }
 | 
|      }
 | 
|      // TODO(vandebo): Figure out how/if we can handle the following modes:
 | 
| @@ -1707,7 +1707,7 @@ ContentEntry* SkPDFDevice::setUpContentEntry(const SkClipStack* clipStack,
 | 
|  
 | 
|      // Dst xfer mode doesn't draw source at all.
 | 
|      if (xfermode == SkXfermode::kDst_Mode) {
 | 
| -        return NULL;
 | 
| +        return nullptr;
 | 
|      }
 | 
|  
 | 
|      ContentEntry* entry;
 | 
| @@ -1798,7 +1798,7 @@ void SkPDFDevice::finishContentEntry(SkXfermode::Mode xfermode,
 | 
|          // If there is shape, then an empty source with Src, SrcIn, SrcOut,
 | 
|          // DstIn, DstAtop or Modulate reduces to Clear and DstOut or SrcAtop
 | 
|          // reduces to Dst.
 | 
| -        if (shape == NULL || xfermode == SkXfermode::kDstOut_Mode ||
 | 
| +        if (shape == nullptr || xfermode == SkXfermode::kDstOut_Mode ||
 | 
|                  xfermode == SkXfermode::kSrcATop_Mode) {
 | 
|              ScopedContentEntry content(this, &fExistingClipStack,
 | 
|                                         fExistingClipRegion, identity,
 | 
| @@ -1827,7 +1827,7 @@ void SkPDFDevice::finishContentEntry(SkXfermode::Mode xfermode,
 | 
|      } else {
 | 
|          SkAutoTUnref<SkPDFFormXObject> dstMaskStorage;
 | 
|          SkPDFFormXObject* dstMask = srcFormXObject.get();
 | 
| -        if (shape != NULL) {
 | 
| +        if (shape != nullptr) {
 | 
|              // Draw shape into a form-xobject.
 | 
|              SkDraw d;
 | 
|              d.fMatrix = &identity;
 | 
| @@ -1836,7 +1836,7 @@ void SkPDFDevice::finishContentEntry(SkXfermode::Mode xfermode,
 | 
|              SkPaint filledPaint;
 | 
|              filledPaint.setColor(SK_ColorBLACK);
 | 
|              filledPaint.setStyle(SkPaint::kFill_Style);
 | 
| -            this->drawPath(d, *shape, filledPaint, NULL, true);
 | 
| +            this->drawPath(d, *shape, filledPaint, nullptr, true);
 | 
|  
 | 
|              dstMaskStorage.reset(createFormXObjectFromDevice());
 | 
|              dstMask = dstMaskStorage.get();
 | 
| @@ -1915,9 +1915,9 @@ void SkPDFDevice::populateGraphicStateEntryFromPaint(
 | 
|          const SkPaint& paint,
 | 
|          bool hasText,
 | 
|          GraphicStateEntry* entry) {
 | 
| -    NOT_IMPLEMENTED(paint.getPathEffect() != NULL, false);
 | 
| -    NOT_IMPLEMENTED(paint.getMaskFilter() != NULL, false);
 | 
| -    NOT_IMPLEMENTED(paint.getColorFilter() != NULL, false);
 | 
| +    NOT_IMPLEMENTED(paint.getPathEffect() != nullptr, false);
 | 
| +    NOT_IMPLEMENTED(paint.getMaskFilter() != nullptr, false);
 | 
| +    NOT_IMPLEMENTED(paint.getColorFilter() != nullptr, false);
 | 
|  
 | 
|      entry->fMatrix = matrix;
 | 
|      entry->fClipStack = clipStack;
 | 
| @@ -1967,7 +1967,7 @@ void SkPDFDevice::populateGraphicStateEntryFromPaint(
 | 
|              SkShader::GradientInfo gradientInfo;
 | 
|              SkColor gradientColor;
 | 
|              gradientInfo.fColors = &gradientColor;
 | 
| -            gradientInfo.fColorOffsets = NULL;
 | 
| +            gradientInfo.fColorOffsets = nullptr;
 | 
|              gradientInfo.fColorCount = 1;
 | 
|              if (shader->asAGradient(&gradientInfo) ==
 | 
|                      SkShader::kColor_GradientType) {
 | 
| @@ -2025,7 +2025,7 @@ int SkPDFDevice::addXObjectResource(SkPDFObject* xObject) {
 | 
|  void SkPDFDevice::updateFont(const SkPaint& paint, uint16_t glyphID,
 | 
|                               ContentEntry* contentEntry) {
 | 
|      SkTypeface* typeface = paint.getTypeface();
 | 
| -    if (contentEntry->fState.fFont == NULL ||
 | 
| +    if (contentEntry->fState.fFont == nullptr ||
 | 
|              contentEntry->fState.fTextSize != paint.getTextSize() ||
 | 
|              !contentEntry->fState.fFont->hasGlyph(glyphID)) {
 | 
|          int fontIndex = getFontResourceIndex(typeface, glyphID);
 | 
| @@ -2080,7 +2080,7 @@ void SkPDFDevice::internalDrawBitmap(const SkMatrix& origMatrix,
 | 
|              subsetBitmap = &tmpSubsetBitmap;
 | 
|              *subsetBitmap = origBitmap;
 | 
|          }
 | 
| -        srcRect = NULL;
 | 
| +        srcRect = nullptr;
 | 
|  
 | 
|          // Transform the bitmap in the new space, without taking into
 | 
|          // account the initial transform.
 | 
| @@ -2156,7 +2156,7 @@ void SkPDFDevice::internalDrawBitmap(const SkMatrix& origMatrix,
 | 
|                                    SkScalarCeilToInt(bounds.width()),
 | 
|                                    SkScalarCeilToInt(bounds.height())));
 | 
|          clipRegion = &perspectiveBounds;
 | 
| -        srcRect = NULL;
 | 
| +        srcRect = nullptr;
 | 
|          bitmap = &perspectiveBitmap;
 | 
|      }
 | 
|  
 | 
| 
 |