diff options
author | robertphillips <robertphillips@google.com> | 2016-02-25 10:58:49 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-25 10:58:49 -0800 |
commit | 3552ba18ee41e135d6fc52228adae37794fc15ff (patch) | |
tree | 8fd975a1a4159055abbdb42ca54a82c577ce67e9 /src/core/SkFontDescriptor.cpp | |
parent | 4dcbe431244c2f1abef8416b95ebf2921708fa63 (diff) |
Make skpinfo able to inspect SK_PICT_TYPEFACE_TAG blocks
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1732263003
BUG=skia:4691
Review URL: https://codereview.chromium.org/1732263003
Diffstat (limited to 'src/core/SkFontDescriptor.cpp')
-rw-r--r-- | src/core/SkFontDescriptor.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/core/SkFontDescriptor.cpp b/src/core/SkFontDescriptor.cpp index 8348d5fdba..f477a2d695 100644 --- a/src/core/SkFontDescriptor.cpp +++ b/src/core/SkFontDescriptor.cpp @@ -58,8 +58,8 @@ static void write_uint(SkWStream* stream, size_t n, uint32_t id) { stream->writePackedUInt(n); } -SkFontDescriptor::SkFontDescriptor(SkStream* stream) { - fStyle = (SkTypeface::Style)stream->readPackedUInt(); +bool SkFontDescriptor::Deserialize(SkStream* stream, SkFontDescriptor* result) { + result->fStyle = (SkTypeface::Style)stream->readPackedUInt(); SkAutoSTMalloc<4, SkFixed> axis; size_t axisCount = 0; @@ -67,13 +67,13 @@ SkFontDescriptor::SkFontDescriptor(SkStream* stream) { for (size_t id; (id = stream->readPackedUInt()) != kSentinel;) { switch (id) { case kFontFamilyName: - read_string(stream, &fFamilyName); + read_string(stream, &result->fFamilyName); break; case kFullName: - read_string(stream, &fFullName); + read_string(stream, &result->fFullName); break; case kPostscriptName: - read_string(stream, &fPostscriptName); + read_string(stream, &result->fPostscriptName); break; case kFontAxes: axisCount = read_uint(stream); @@ -90,7 +90,7 @@ SkFontDescriptor::SkFontDescriptor(SkStream* stream) { break; default: SkDEBUGFAIL("Unknown id used by a font descriptor"); - return; + return false; } } @@ -98,9 +98,14 @@ SkFontDescriptor::SkFontDescriptor(SkStream* stream) { if (length > 0) { SkAutoTUnref<SkData> data(SkData::NewUninitialized(length)); if (stream->read(data->writable_data(), length) == length) { - fFontData.reset(new SkFontData(new SkMemoryStream(data), index, axis, axisCount)); + result->fFontData.reset(new SkFontData(new SkMemoryStream(data), + index, axis, axisCount)); + } else { + SkDEBUGFAIL("Could not read font data"); + return false; } } + return true; } void SkFontDescriptor::serialize(SkWStream* stream) { |