| Index: src/ports/SkFontHost_win.cpp
|
| diff --git a/src/ports/SkFontHost_win.cpp b/src/ports/SkFontHost_win.cpp
|
| index 97e659ef6f5592cf137521c654aa9840a0f32711..e263cc28e7ff7829bdbe24065c27074bc2bd6609 100644
|
| --- a/src/ports/SkFontHost_win.cpp
|
| +++ b/src/ports/SkFontHost_win.cpp
|
| @@ -87,9 +87,9 @@ using namespace skia_advanced_typeface_metrics_utils;
|
|
|
| static void tchar_to_skstring(const TCHAR t[], SkString* s) {
|
| #ifdef UNICODE
|
| - size_t sSize = WideCharToMultiByte(CP_UTF8, 0, t, -1, NULL, 0, NULL, NULL);
|
| + size_t sSize = WideCharToMultiByte(CP_UTF8, 0, t, -1, nullptr, 0, nullptr, nullptr);
|
| s->resize(sSize);
|
| - WideCharToMultiByte(CP_UTF8, 0, t, -1, s->writable_str(), sSize, NULL, NULL);
|
| + WideCharToMultiByte(CP_UTF8, 0, t, -1, s->writable_str(), sSize, nullptr, nullptr);
|
| #else
|
| s->set(t);
|
| #endif
|
| @@ -97,9 +97,9 @@ static void tchar_to_skstring(const TCHAR t[], SkString* s) {
|
|
|
| static void dcfontname_to_skstring(HDC deviceContext, const LOGFONT& lf, SkString* familyName) {
|
| int fontNameLen; //length of fontName in TCHARS.
|
| - if (0 == (fontNameLen = GetTextFace(deviceContext, 0, NULL))) {
|
| + if (0 == (fontNameLen = GetTextFace(deviceContext, 0, nullptr))) {
|
| call_ensure_accessible(lf);
|
| - if (0 == (fontNameLen = GetTextFace(deviceContext, 0, NULL))) {
|
| + if (0 == (fontNameLen = GetTextFace(deviceContext, 0, nullptr))) {
|
| fontNameLen = 0;
|
| }
|
| }
|
| @@ -169,7 +169,7 @@ static unsigned calculateGlyphCount(HDC hdc, const LOGFONT& lf) {
|
| while (min < max) {
|
| int32_t mid = min + ((max - min) / 2);
|
| if (GetGlyphOutlineW(hdc, mid, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0,
|
| - NULL, &mat2) == GDI_ERROR) {
|
| + nullptr, &mat2) == GDI_ERROR) {
|
| max = mid;
|
| } else {
|
| min = mid + 1;
|
| @@ -212,7 +212,7 @@ public:
|
| // If the font has cubic outlines, it will not be rendered with ClearType.
|
| HFONT font = CreateFontIndirect(&lf);
|
|
|
| - HDC deviceContext = ::CreateCompatibleDC(NULL);
|
| + HDC deviceContext = ::CreateCompatibleDC(nullptr);
|
| HFONT savefont = (HFONT)SelectObject(deviceContext, font);
|
|
|
| TEXTMETRIC textMetric;
|
| @@ -320,7 +320,7 @@ SkTypeface* SkCreateTypefaceFromLOGFONT(const LOGFONT& origLF) {
|
| LOGFONT lf = origLF;
|
| make_canonical(&lf);
|
| SkTypeface* face = SkTypefaceCache::FindByProcAndRef(FindByLogFont, &lf);
|
| - if (NULL == face) {
|
| + if (nullptr == face) {
|
| face = LogFontTypeface::Create(lf);
|
| SkTypefaceCache::Add(face, get_style(lf));
|
| }
|
| @@ -341,7 +341,7 @@ SkTypeface* SkCreateFontMemResourceTypefaceFromLOGFONT(const LOGFONT& origLF, HA
|
| * This guy is public
|
| */
|
| void SkLOGFONTFromTypeface(const SkTypeface* face, LOGFONT* lf) {
|
| - if (NULL == face) {
|
| + if (nullptr == face) {
|
| *lf = get_default_font();
|
| } else {
|
| *lf = static_cast<const LogFontTypeface*>(face)->fLogFont;
|
| @@ -356,7 +356,7 @@ void SkLOGFONTFromTypeface(const SkTypeface* face, LOGFONT* lf) {
|
| // of calling GetFontUnicodeRange().
|
| static void populate_glyph_to_unicode(HDC fontHdc, const unsigned glyphCount,
|
| SkTDArray<SkUnichar>* glyphToUnicode) {
|
| - DWORD glyphSetBufferSize = GetFontUnicodeRanges(fontHdc, NULL);
|
| + DWORD glyphSetBufferSize = GetFontUnicodeRanges(fontHdc, nullptr);
|
| if (!glyphSetBufferSize) {
|
| return;
|
| }
|
| @@ -416,7 +416,7 @@ public:
|
| fFont = 0;
|
| fDC = 0;
|
| fBM = 0;
|
| - fBits = NULL;
|
| + fBits = nullptr;
|
| fWidth = fHeight = 0;
|
| fIsBW = false;
|
| }
|
| @@ -455,7 +455,7 @@ const void* HDCOffscreen::draw(const SkGlyph& glyph, bool isBW,
|
| if (0 == fDC) {
|
| fDC = CreateCompatibleDC(0);
|
| if (0 == fDC) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| SetGraphicsMode(fDC, GM_ADVANCED);
|
| SetBkMode(fDC, TRANSPARENT);
|
| @@ -498,7 +498,7 @@ const void* HDCOffscreen::draw(const SkGlyph& glyph, bool isBW,
|
| }
|
| fBM = CreateDIBSection(fDC, &info, DIB_RGB_COLORS, &fBits, 0, 0);
|
| if (0 == fBM) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| SelectObject(fDC, fBM);
|
| }
|
| @@ -514,10 +514,10 @@ const void* HDCOffscreen::draw(const SkGlyph& glyph, bool isBW,
|
| SetWorldTransform(fDC, &xform);
|
|
|
| uint16_t glyphID = glyph.getGlyphID();
|
| - BOOL ret = ExtTextOutW(fDC, 0, 0, ETO_GLYPH_INDEX, NULL, reinterpret_cast<LPCWSTR>(&glyphID), 1, NULL);
|
| + BOOL ret = ExtTextOutW(fDC, 0, 0, ETO_GLYPH_INDEX, nullptr, reinterpret_cast<LPCWSTR>(&glyphID), 1, nullptr);
|
| GdiFlush();
|
| if (0 == ret) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| *srcRBPtr = srcRB;
|
| // offset to the start of the image
|
| @@ -606,7 +606,7 @@ SkScalerContext_GDI::SkScalerContext_GDI(SkTypeface* rawTypeface,
|
| {
|
| LogFontTypeface* typeface = reinterpret_cast<LogFontTypeface*>(rawTypeface);
|
|
|
| - fDDC = ::CreateCompatibleDC(NULL);
|
| + fDDC = ::CreateCompatibleDC(nullptr);
|
| if (!fDDC) {
|
| return;
|
| }
|
| @@ -806,13 +806,13 @@ uint16_t SkScalerContext_GDI::generateCharToGlyph(SkUnichar utf32) {
|
| // Use uniscribe to detemine glyph index for non-BMP characters.
|
| static const int numWCHAR = 2;
|
| static const int maxItems = 2;
|
| - // MSDN states that this can be NULL, but some things don't work then.
|
| + // MSDN states that this can be nullptr, but some things don't work then.
|
| SCRIPT_CONTROL sc = { 0 };
|
| // Add extra item to SCRIPT_ITEM to work around a bug (now documented).
|
| // https://bugzilla.mozilla.org/show_bug.cgi?id=366643
|
| SCRIPT_ITEM si[maxItems + 1];
|
| int numItems;
|
| - HRZM(ScriptItemize(utf16, numWCHAR, maxItems, &sc, NULL, si, &numItems),
|
| + HRZM(ScriptItemize(utf16, numWCHAR, maxItems, &sc, nullptr, si, &numItems),
|
| "Could not itemize character.");
|
|
|
| // Sometimes ScriptShape cannot find a glyph for a non-BMP and returns 2 space glyphs.
|
| @@ -883,10 +883,10 @@ void SkScalerContext_GDI::generateMetrics(SkGlyph* glyph) {
|
| GLYPHMETRICS gm;
|
| sk_bzero(&gm, sizeof(gm));
|
|
|
| - DWORD status = GetGlyphOutlineW(fDDC, glyphId, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, NULL, &fMat22);
|
| + DWORD status = GetGlyphOutlineW(fDDC, glyphId, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, nullptr, &fMat22);
|
| if (GDI_ERROR == status) {
|
| LogFontTypeface::EnsureAccessible(this->getTypeface());
|
| - status = GetGlyphOutlineW(fDDC, glyphId, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, NULL, &fMat22);
|
| + status = GetGlyphOutlineW(fDDC, glyphId, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, nullptr, &fMat22);
|
| if (GDI_ERROR == status) {
|
| glyph->zeroMetrics();
|
| return;
|
| @@ -899,7 +899,7 @@ void SkScalerContext_GDI::generateMetrics(SkGlyph* glyph) {
|
| // is to be drawn, like a '.'. We need to outset '.' but do not wish to outset ' '.
|
| if (1 == gm.gmBlackBoxX && 1 == gm.gmBlackBoxY) {
|
| // If GetGlyphOutline with GGO_NATIVE returns 0, we know there was no outline.
|
| - DWORD bufferSize = GetGlyphOutlineW(fDDC, glyphId, GGO_NATIVE | GGO_GLYPH_INDEX, &gm, 0, NULL, &fMat22);
|
| + DWORD bufferSize = GetGlyphOutlineW(fDDC, glyphId, GGO_NATIVE | GGO_GLYPH_INDEX, &gm, 0, nullptr, &fMat22);
|
| empty = (0 == bufferSize);
|
| }
|
|
|
| @@ -925,7 +925,7 @@ void SkScalerContext_GDI::generateMetrics(SkGlyph* glyph) {
|
|
|
| if (this->isSubpixel()) {
|
| sk_bzero(&gm, sizeof(gm));
|
| - status = GetGlyphOutlineW(fDDC, glyphId, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, NULL, &fHighResMat22);
|
| + status = GetGlyphOutlineW(fDDC, glyphId, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, nullptr, &fHighResMat22);
|
| if (GDI_ERROR != status) {
|
| SkPoint advance;
|
| fHiResMatrix.mapXY(SkIntToScalar(gm.gmCellIncX), SkIntToScalar(gm.gmCellIncY), &advance);
|
| @@ -933,7 +933,7 @@ void SkScalerContext_GDI::generateMetrics(SkGlyph* glyph) {
|
| glyph->fAdvanceY = SkScalarToFixed(advance.fY);
|
| }
|
| } else if (!isAxisAligned(this->fRec)) {
|
| - status = GetGlyphOutlineW(fDDC, glyphId, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, NULL, &fGsA);
|
| + status = GetGlyphOutlineW(fDDC, glyphId, GGO_METRICS | GGO_GLYPH_INDEX, &gm, 0, nullptr, &fGsA);
|
| if (GDI_ERROR != status) {
|
| SkPoint advance;
|
| fG_inv.mapXY(SkIntToScalar(gm.gmCellIncX), SkIntToScalar(gm.gmCellIncY), &advance);
|
| @@ -945,7 +945,7 @@ void SkScalerContext_GDI::generateMetrics(SkGlyph* glyph) {
|
|
|
| static const MAT2 gMat2Identity = {{0, 1}, {0, 0}, {0, 0}, {0, 1}};
|
| void SkScalerContext_GDI::generateFontMetrics(SkPaint::FontMetrics* metrics) {
|
| - if (NULL == metrics) {
|
| + if (nullptr == metrics) {
|
| return;
|
| }
|
| sk_bzero(metrics, sizeof(*metrics));
|
| @@ -1231,10 +1231,10 @@ void SkScalerContext_GDI::generateImage(const SkGlyph& glyph) {
|
|
|
| size_t srcRB;
|
| const void* bits = fOffscreen.draw(glyph, isBW, &srcRB);
|
| - if (NULL == bits) {
|
| + if (nullptr == bits) {
|
| LogFontTypeface::EnsureAccessible(this->getTypeface());
|
| bits = fOffscreen.draw(glyph, isBW, &srcRB);
|
| - if (NULL == bits) {
|
| + if (nullptr == bits) {
|
| sk_bzero(glyph.fImage, glyph.computeImageSize());
|
| return;
|
| }
|
| @@ -1322,22 +1322,22 @@ public:
|
| nextHeader:
|
| if (!fCurveIter.isSet()) {
|
| const TTPOLYGONHEADER* header = fHeaderIter.next();
|
| - if (NULL == header) {
|
| - return NULL;
|
| + if (nullptr == header) {
|
| + return nullptr;
|
| }
|
| fCurveIter.set(header);
|
| const TTPOLYCURVE* curve = fCurveIter.next();
|
| - if (NULL == curve) {
|
| - return NULL;
|
| + if (nullptr == curve) {
|
| + return nullptr;
|
| }
|
| fPointIter.set(curve);
|
| return &header->pfxStart;
|
| }
|
|
|
| const POINTFX* nextPoint = fPointIter.next();
|
| - if (NULL == nextPoint) {
|
| + if (nullptr == nextPoint) {
|
| const TTPOLYCURVE* curve = fCurveIter.next();
|
| - if (NULL == curve) {
|
| + if (nullptr == curve) {
|
| fCurveIter.set();
|
| goto nextHeader;
|
| } else {
|
| @@ -1363,7 +1363,7 @@ private:
|
|
|
| const TTPOLYGONHEADER* next() {
|
| if (fCurPolygon >= fEndPolygon) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| const TTPOLYGONHEADER* thisPolygon = fCurPolygon;
|
| fCurPolygon = SkTAddOffset<const TTPOLYGONHEADER>(fCurPolygon, fCurPolygon->cb);
|
| @@ -1377,27 +1377,27 @@ private:
|
| /** Iterates over all of the polygon curves in a polygon header. */
|
| class GDIPolygonCurveIter {
|
| public:
|
| - GDIPolygonCurveIter() : fCurCurve(NULL), fEndCurve(NULL) { }
|
| + GDIPolygonCurveIter() : fCurCurve(nullptr), fEndCurve(nullptr) { }
|
|
|
| GDIPolygonCurveIter(const TTPOLYGONHEADER* curPolygon)
|
| : fCurCurve(SkTAddOffset<const TTPOLYCURVE>(curPolygon, sizeof(TTPOLYGONHEADER)))
|
| , fEndCurve(SkTAddOffset<const TTPOLYCURVE>(curPolygon, curPolygon->cb))
|
| { }
|
|
|
| - bool isSet() { return fCurCurve != NULL; }
|
| + bool isSet() { return fCurCurve != nullptr; }
|
|
|
| void set(const TTPOLYGONHEADER* curPolygon) {
|
| fCurCurve = SkTAddOffset<const TTPOLYCURVE>(curPolygon, sizeof(TTPOLYGONHEADER));
|
| fEndCurve = SkTAddOffset<const TTPOLYCURVE>(curPolygon, curPolygon->cb);
|
| }
|
| void set() {
|
| - fCurCurve = NULL;
|
| - fEndCurve = NULL;
|
| + fCurCurve = nullptr;
|
| + fEndCurve = nullptr;
|
| }
|
|
|
| const TTPOLYCURVE* next() {
|
| if (fCurCurve >= fEndCurve) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| const TTPOLYCURVE* thisCurve = fCurCurve;
|
| fCurCurve = SkTAddOffset<const TTPOLYCURVE>(fCurCurve, size_of_TTPOLYCURVE(*fCurCurve));
|
| @@ -1414,7 +1414,7 @@ private:
|
| /** Iterates over all of the polygon points in a polygon curve. */
|
| class GDIPolygonCurvePointIter {
|
| public:
|
| - GDIPolygonCurvePointIter() : fCurveType(0), fCurPoint(NULL), fEndPoint(NULL) { }
|
| + GDIPolygonCurvePointIter() : fCurveType(0), fCurPoint(nullptr), fEndPoint(nullptr) { }
|
|
|
| GDIPolygonCurvePointIter(const TTPOLYCURVE* curPolygon)
|
| : fCurveType(curPolygon->wType)
|
| @@ -1422,7 +1422,7 @@ private:
|
| , fEndPoint(&curPolygon->apfx[curPolygon->cpfx])
|
| { }
|
|
|
| - bool isSet() { return fCurPoint != NULL; }
|
| + bool isSet() { return fCurPoint != nullptr; }
|
|
|
| void set(const TTPOLYCURVE* curPolygon) {
|
| fCurveType = curPolygon->wType;
|
| @@ -1430,13 +1430,13 @@ private:
|
| fEndPoint = &curPolygon->apfx[curPolygon->cpfx];
|
| }
|
| void set() {
|
| - fCurPoint = NULL;
|
| - fEndPoint = NULL;
|
| + fCurPoint = nullptr;
|
| + fEndPoint = nullptr;
|
| }
|
|
|
| const POINTFX* next() {
|
| if (fCurPoint >= fEndPoint) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
| const POINTFX* thisPoint = fCurPoint;
|
| ++fCurPoint;
|
| @@ -1505,7 +1505,7 @@ static void sk_path_from_gdi_path(SkPath* path, const uint8_t* glyphbuf, DWORD t
|
|
|
| #define move_next_expected_hinted_point(iter, pElem) do {\
|
| pElem = iter.next(); \
|
| - if (NULL == pElem) return false; \
|
| + if (nullptr == pElem) return false; \
|
| } while(0)
|
|
|
| // It is possible for the hinted and unhinted versions of the same path to have
|
| @@ -1591,10 +1591,10 @@ DWORD SkScalerContext_GDI::getGDIGlyphPath(const SkGlyph& glyph, UINT flags,
|
| // GDI_ERROR because the BUFFERSIZE was too small, or because the data was not accessible.
|
| // When the data is not accessable GetGlyphOutlineW fails rather quickly,
|
| // so just try to get the size. If that fails then ensure the data is accessible.
|
| - total_size = GetGlyphOutlineW(fDDC, glyph.getGlyphID(), flags, &gm, 0, NULL, &fMat22);
|
| + total_size = GetGlyphOutlineW(fDDC, glyph.getGlyphID(), flags, &gm, 0, nullptr, &fMat22);
|
| if (GDI_ERROR == total_size) {
|
| LogFontTypeface::EnsureAccessible(this->getTypeface());
|
| - total_size = GetGlyphOutlineW(fDDC, glyph.getGlyphID(), flags, &gm, 0, NULL, &fMat22);
|
| + total_size = GetGlyphOutlineW(fDDC, glyph.getGlyphID(), flags, &gm, 0, nullptr, &fMat22);
|
| if (GDI_ERROR == total_size) {
|
| // GetGlyphOutlineW is known to fail for some characters, such as spaces.
|
| // In these cases, just return that the glyph does not have a shape.
|
| @@ -1668,7 +1668,7 @@ static void logfont_for_name(const char* familyName, LOGFONT* lf) {
|
| #ifdef UNICODE
|
| // Get the buffer size needed first.
|
| size_t str_len = ::MultiByteToWideChar(CP_UTF8, 0, familyName,
|
| - -1, NULL, 0);
|
| + -1, nullptr, 0);
|
| // Allocate a buffer (str_len already has terminating null
|
| // accounted for).
|
| wchar_t *wideFamilyName = new wchar_t[str_len];
|
| @@ -1688,7 +1688,7 @@ void LogFontTypeface::onGetFamilyName(SkString* familyName) const {
|
| // Get the actual name of the typeface. The logfont may not know this.
|
| HFONT font = CreateFontIndirect(&fLogFont);
|
|
|
| - HDC deviceContext = ::CreateCompatibleDC(NULL);
|
| + HDC deviceContext = ::CreateCompatibleDC(nullptr);
|
| HFONT savefont = (HFONT)SelectObject(deviceContext, font);
|
|
|
| dcfontname_to_skstring(deviceContext, fLogFont, familyName);
|
| @@ -1716,7 +1716,7 @@ static bool getWidthAdvance(HDC hdc, int gId, int16_t* advance) {
|
| SkScalarToFIXED(0), SkScalarToFIXED(1)};
|
| int flags = GGO_METRICS | GGO_GLYPH_INDEX;
|
| GLYPHMETRICS gm;
|
| - if (GDI_ERROR == GetGlyphOutline(hdc, gId, flags, &gm, 0, NULL, &mat2)) {
|
| + if (GDI_ERROR == GetGlyphOutline(hdc, gId, flags, &gm, 0, nullptr, &mat2)) {
|
| return false;
|
| }
|
| SkASSERT(advance);
|
| @@ -1729,12 +1729,12 @@ SkAdvancedTypefaceMetrics* LogFontTypeface::onGetAdvancedTypefaceMetrics(
|
| const uint32_t* glyphIDs,
|
| uint32_t glyphIDsCount) const {
|
| LOGFONT lf = fLogFont;
|
| - SkAdvancedTypefaceMetrics* info = NULL;
|
| + SkAdvancedTypefaceMetrics* info = nullptr;
|
|
|
| - HDC hdc = CreateCompatibleDC(NULL);
|
| + HDC hdc = CreateCompatibleDC(nullptr);
|
| HFONT font = CreateFontIndirect(&lf);
|
| HFONT savefont = (HFONT)SelectObject(hdc, font);
|
| - HFONT designFont = NULL;
|
| + HFONT designFont = nullptr;
|
|
|
| const char stem_chars[] = {'i', 'I', '!', '1'};
|
| int16_t min_width;
|
| @@ -1852,7 +1852,7 @@ ReturnInfo:
|
|
|
| //Dummy representation of a Base64 encoded GUID from create_unique_font_name.
|
| #define BASE64_GUID_ID "XXXXXXXXXXXXXXXXXXXXXXXX"
|
| -//Length of GUID representation from create_id, including NULL terminator.
|
| +//Length of GUID representation from create_id, including nullptr terminator.
|
| #define BASE64_GUID_ID_LEN SK_ARRAY_COUNT(BASE64_GUID_ID)
|
|
|
| static_assert(BASE64_GUID_ID_LEN < LF_FACESIZE, "GUID_longer_than_facesize");
|
| @@ -1899,7 +1899,7 @@ static HRESULT create_unique_font_name(char* buffer, size_t bufferSize) {
|
| }
|
|
|
| /**
|
| - Introduces a font to GDI. On failure will return NULL. The returned handle
|
| + Introduces a font to GDI. On failure will return nullptr. The returned handle
|
| should eventually be passed to RemoveFontMemResourceEx.
|
| */
|
| static HANDLE activate_font(SkData* fontData) {
|
| @@ -1910,9 +1910,9 @@ static HANDLE activate_font(SkData* fontData) {
|
| 0,
|
| &numFonts);
|
|
|
| - if (fontHandle != NULL && numFonts < 1) {
|
| + if (fontHandle != nullptr && numFonts < 1) {
|
| RemoveFontMemResourceEx(fontHandle);
|
| - return NULL;
|
| + return nullptr;
|
| }
|
|
|
| return fontHandle;
|
| @@ -1925,19 +1925,19 @@ static SkTypeface* create_from_stream(SkStreamAsset* stream) {
|
| char familyName[BASE64_GUID_ID_LEN];
|
| const int familyNameSize = SK_ARRAY_COUNT(familyName);
|
| if (FAILED(create_unique_font_name(familyName, familyNameSize))) {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
|
|
| // Change the name of the font.
|
| SkAutoTUnref<SkData> rewrittenFontData(SkOTUtils::RenameFont(stream, familyName, familyNameSize-1));
|
| - if (NULL == rewrittenFontData.get()) {
|
| - return NULL;
|
| + if (nullptr == rewrittenFontData.get()) {
|
| + return nullptr;
|
| }
|
|
|
| // Register the font with GDI.
|
| HANDLE fontReference = activate_font(rewrittenFontData.get());
|
| - if (NULL == fontReference) {
|
| - return NULL;
|
| + if (nullptr == fontReference) {
|
| + return nullptr;
|
| }
|
|
|
| // Create the typeface.
|
| @@ -1954,17 +1954,17 @@ SkStreamAsset* LogFontTypeface::onOpenStream(int* ttcIndex) const {
|
| SkEndian_SwapBE32(SkSetFourByteTag('t', 't', 'c', 'f'));
|
| LOGFONT lf = fLogFont;
|
|
|
| - HDC hdc = ::CreateCompatibleDC(NULL);
|
| + HDC hdc = ::CreateCompatibleDC(nullptr);
|
| HFONT font = CreateFontIndirect(&lf);
|
| HFONT savefont = (HFONT)SelectObject(hdc, font);
|
|
|
| - SkMemoryStream* stream = NULL;
|
| + SkMemoryStream* stream = nullptr;
|
| DWORD tables[2] = {kTTCTag, 0};
|
| for (int i = 0; i < SK_ARRAY_COUNT(tables); i++) {
|
| - DWORD bufferSize = GetFontData(hdc, tables[i], 0, NULL, 0);
|
| + DWORD bufferSize = GetFontData(hdc, tables[i], 0, nullptr, 0);
|
| if (bufferSize == GDI_ERROR) {
|
| call_ensure_accessible(lf);
|
| - bufferSize = GetFontData(hdc, tables[i], 0, NULL, 0);
|
| + bufferSize = GetFontData(hdc, tables[i], 0, nullptr, 0);
|
| }
|
| if (bufferSize != GDI_ERROR) {
|
| stream = new SkMemoryStream(bufferSize);
|
| @@ -1972,7 +1972,7 @@ SkStreamAsset* LogFontTypeface::onOpenStream(int* ttcIndex) const {
|
| break;
|
| } else {
|
| delete stream;
|
| - stream = NULL;
|
| + stream = nullptr;
|
| }
|
| }
|
| }
|
| @@ -2015,13 +2015,13 @@ static uint16_t nonBmpCharToGlyph(HDC hdc, SCRIPT_CACHE* scriptCache, const WCHA
|
| // Use uniscribe to detemine glyph index for non-BMP characters.
|
| static const int numWCHAR = 2;
|
| static const int maxItems = 2;
|
| - // MSDN states that this can be NULL, but some things don't work then.
|
| + // MSDN states that this can be nullptr, but some things don't work then.
|
| SCRIPT_CONTROL scriptControl = { 0 };
|
| // Add extra item to SCRIPT_ITEM to work around a bug (now documented).
|
| // https://bugzilla.mozilla.org/show_bug.cgi?id=366643
|
| SCRIPT_ITEM si[maxItems + 1];
|
| int numItems;
|
| - HRZM(ScriptItemize(utf16, numWCHAR, maxItems, &scriptControl, NULL, si, &numItems),
|
| + HRZM(ScriptItemize(utf16, numWCHAR, maxItems, &scriptControl, nullptr, si, &numItems),
|
| "Could not itemize character.");
|
|
|
| // Sometimes ScriptShape cannot find a glyph for a non-BMP and returns 2 space glyphs.
|
| @@ -2042,7 +2042,7 @@ static uint16_t nonBmpCharToGlyph(HDC hdc, SCRIPT_CACHE* scriptCache, const WCHA
|
| class SkAutoHDC {
|
| public:
|
| SkAutoHDC(const LOGFONT& lf)
|
| - : fHdc(::CreateCompatibleDC(NULL))
|
| + : fHdc(::CreateCompatibleDC(nullptr))
|
| , fFont(::CreateFontIndirect(&lf))
|
| , fSavefont((HFONT)SelectObject(fHdc, fFont))
|
| { }
|
| @@ -2075,7 +2075,7 @@ int LogFontTypeface::onCharsToGlyphs(const void* chars, Encoding encoding,
|
|
|
| SkAutoSTMalloc<256, uint16_t> scratchGlyphs;
|
| uint16_t* glyphs;
|
| - if (userGlyphs != NULL) {
|
| + if (userGlyphs != nullptr) {
|
| glyphs = userGlyphs;
|
| } else {
|
| glyphs = scratchGlyphs.reset(glyphCount);
|
| @@ -2189,7 +2189,7 @@ int LogFontTypeface::onCharsToGlyphs(const void* chars, Encoding encoding,
|
| }
|
|
|
| int LogFontTypeface::onCountGlyphs() const {
|
| - HDC hdc = ::CreateCompatibleDC(NULL);
|
| + HDC hdc = ::CreateCompatibleDC(nullptr);
|
| HFONT font = CreateFontIndirect(&fLogFont);
|
| HFONT savefont = (HFONT)SelectObject(hdc, font);
|
|
|
| @@ -2203,7 +2203,7 @@ int LogFontTypeface::onCountGlyphs() const {
|
| }
|
|
|
| int LogFontTypeface::onGetUPEM() const {
|
| - HDC hdc = ::CreateCompatibleDC(NULL);
|
| + HDC hdc = ::CreateCompatibleDC(nullptr);
|
| HFONT font = CreateFontIndirect(&fLogFont);
|
| HFONT savefont = (HFONT)SelectObject(hdc, font);
|
|
|
| @@ -2219,7 +2219,7 @@ int LogFontTypeface::onGetUPEM() const {
|
| SkTypeface::LocalizedStrings* LogFontTypeface::onCreateFamilyNameIterator() const {
|
| SkTypeface::LocalizedStrings* nameIter =
|
| SkOTUtils::LocalizedStrings_NameTable::CreateForFamilyNames(*this);
|
| - if (NULL == nameIter) {
|
| + if (nullptr == nameIter) {
|
| SkString familyName;
|
| this->getFamilyName(&familyName);
|
| SkString language("und"); //undetermined
|
| @@ -2255,12 +2255,12 @@ size_t LogFontTypeface::onGetTableData(SkFontTableTag tag, size_t offset,
|
| {
|
| LOGFONT lf = fLogFont;
|
|
|
| - HDC hdc = ::CreateCompatibleDC(NULL);
|
| + HDC hdc = ::CreateCompatibleDC(nullptr);
|
| HFONT font = CreateFontIndirect(&lf);
|
| HFONT savefont = (HFONT)SelectObject(hdc, font);
|
|
|
| tag = SkEndian_SwapBE32(tag);
|
| - if (NULL == data) {
|
| + if (nullptr == data) {
|
| length = 0;
|
| }
|
| DWORD bufferSize = GetFontData(hdc, tag, (DWORD) offset, data, (DWORD) length);
|
| @@ -2280,7 +2280,7 @@ SkScalerContext* LogFontTypeface::onCreateScalerContext(const SkDescriptor* desc
|
| SkScalerContext_GDI* ctx = new SkScalerContext_GDI(const_cast<LogFontTypeface*>(this), desc);
|
| if (!ctx->isValid()) {
|
| delete ctx;
|
| - ctx = NULL;
|
| + ctx = nullptr;
|
| }
|
| return ctx;
|
| }
|
| @@ -2378,7 +2378,7 @@ public:
|
| lf.lfCharSet = DEFAULT_CHARSET;
|
| _tcscpy_s(lf.lfFaceName, familyName);
|
|
|
| - HDC hdc = ::CreateCompatibleDC(NULL);
|
| + HDC hdc = ::CreateCompatibleDC(nullptr);
|
| ::EnumFontFamiliesEx(hdc, &lf, enum_family_proc, (LPARAM)&fArray, 0);
|
| ::DeleteDC(hdc);
|
| }
|
| @@ -2424,7 +2424,7 @@ public:
|
| sk_bzero(&lf, sizeof(lf));
|
| lf.lfCharSet = DEFAULT_CHARSET;
|
|
|
| - HDC hdc = ::CreateCompatibleDC(NULL);
|
| + HDC hdc = ::CreateCompatibleDC(nullptr);
|
| ::EnumFontFamiliesEx(hdc, &lf, enum_family_proc, (LPARAM)&fLogFontArray, 0);
|
| ::DeleteDC(hdc);
|
| }
|
| @@ -2445,7 +2445,7 @@ protected:
|
| }
|
|
|
| SkFontStyleSet* onMatchFamily(const char familyName[]) const override {
|
| - if (NULL == familyName) {
|
| + if (nullptr == familyName) {
|
| familyName = ""; // do we need this check???
|
| }
|
| LOGFONT lf;
|
| @@ -2463,7 +2463,7 @@ protected:
|
| virtual SkTypeface* onMatchFamilyStyleCharacter(const char familyName[], const SkFontStyle&,
|
| const char* bcp47[], int bcp47Count,
|
| SkUnichar character) const override {
|
| - return NULL;
|
| + return nullptr;
|
| }
|
|
|
| virtual SkTypeface* onMatchFaceStyle(const SkTypeface* familyMember,
|
| @@ -2492,7 +2492,7 @@ protected:
|
| virtual SkTypeface* onLegacyCreateTypeface(const char familyName[],
|
| unsigned styleBits) const override {
|
| LOGFONT lf;
|
| - if (NULL == familyName) {
|
| + if (nullptr == familyName) {
|
| lf = get_default_font();
|
| } else {
|
| logfont_for_name(familyName, &lf);
|
|
|