diff options
author | bungeman <bungeman@google.com> | 2016-07-25 16:54:59 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-07-25 16:54:59 -0700 |
commit | b8113780c3cfed640016b263194b7f1531d43312 (patch) | |
tree | e677f7b762ad7d981f74f366075d3c5c8fbf9988 /src/core/SkFontDescriptor.cpp | |
parent | 0f7748ab388c3a07b71e41d8042313b6744f3cae (diff) |
Update typeface serialization style.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2030683002
Committed: https://skia.googlesource.com/skia/+/7ae1c72e593823e6e300e4199558555765bcec17
Review-Url: https://codereview.chromium.org/2030683002
Diffstat (limited to 'src/core/SkFontDescriptor.cpp')
-rw-r--r-- | src/core/SkFontDescriptor.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/core/SkFontDescriptor.cpp b/src/core/SkFontDescriptor.cpp index 69fdc15432..85629efa7e 100644 --- a/src/core/SkFontDescriptor.cpp +++ b/src/core/SkFontDescriptor.cpp @@ -23,7 +23,7 @@ enum { kSentinel = 0xFF, }; -SkFontDescriptor::SkFontDescriptor(SkTypeface::Style style) : fStyle(style) { } +SkFontDescriptor::SkFontDescriptor() { } static void read_string(SkStream* stream, SkString* string) { const uint32_t length = SkToU32(stream->readPackedUInt()); @@ -59,7 +59,15 @@ static void write_uint(SkWStream* stream, size_t n, uint32_t id) { } bool SkFontDescriptor::Deserialize(SkStream* stream, SkFontDescriptor* result) { - result->fStyle = (SkTypeface::Style)stream->readPackedUInt(); + size_t styleBits = stream->readPackedUInt(); + if (styleBits <= 2) { + // Remove this branch when MIN_PICTURE_VERSION > 45 + result->fStyle = SkFontStyle::FromOldStyle(styleBits); + } else { + result->fStyle = SkFontStyle((styleBits >> 16) & 0xFFFF, + (styleBits >> 8 ) & 0xFF, + static_cast<SkFontStyle::Slant>(styleBits & 0xFF)); + } SkAutoSTMalloc<4, SkFixed> axis; size_t axisCount = 0; @@ -109,7 +117,8 @@ bool SkFontDescriptor::Deserialize(SkStream* stream, SkFontDescriptor* result) { } void SkFontDescriptor::serialize(SkWStream* stream) { - stream->writePackedUInt(fStyle); + uint32_t styleBits = (fStyle.weight() << 16) | (fStyle.width() << 8) | (fStyle.slant()); + stream->writePackedUInt(styleBits); write_string(stream, fFamilyName, kFontFamilyName); write_string(stream, fFullName, kFullName); |