diff options
author | halcanary <halcanary@google.com> | 2016-08-16 09:36:23 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-16 09:36:23 -0700 |
commit | 3287588a467ee579c3947fe13c6add5048b14aa9 (patch) | |
tree | ce5c0591a097af58fdcc8c3c0d068b483143f19f /src/core | |
parent | 883c8efae702462fa28e7ce4f17199bbfa1ce360 (diff) |
SkPDF: SkPDFFont class changes
SkPDFFont:
* inline some one-line methdods.
- SkPDFFont::typeface()
- SkPDFFont::fontInfo()
- SkPDFFont::firstGlyphID()
- SkPDFFont::lastGlyphID()
- SkPDFFont::getFontDescriptor()
* de-virtualize some methods:
- SkPDFFont::getType()
- SkPDFFont::multiByteGlyphs()
* Constructor takes more arguments:
fontType, multiByteGlyphs
* re-order fields (pointers before shorts)
* use sk_sp<T> more, T* less
SkAdvancedTypefaceMetrics:
* SkAdvancedTypefaceMetrics::fFont now a uint8_t
* other enumes are sized.
* SkAdvancedTypefaceMetrics::fStyle now big enough.
* remove use of SkTBitOr, replaced with fancy templates
No public API changes.
TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2246903002
Review-Url: https://codereview.chromium.org/2246903002
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkAdvancedTypefaceMetrics.h | 46 | ||||
-rw-r--r-- | src/core/SkTypeface.cpp | 8 |
2 files changed, 25 insertions, 29 deletions
diff --git a/src/core/SkAdvancedTypefaceMetrics.h b/src/core/SkAdvancedTypefaceMetrics.h index 1b490e0199..17255ab217 100644 --- a/src/core/SkAdvancedTypefaceMetrics.h +++ b/src/core/SkAdvancedTypefaceMetrics.h @@ -5,16 +5,14 @@ * found in the LICENSE file. */ - #ifndef SkAdvancedTypefaceMetrics_DEFINED #define SkAdvancedTypefaceMetrics_DEFINED +#include "SkBitmaskEnum.h" #include "SkRect.h" #include "SkRefCnt.h" #include "SkString.h" #include "SkTDArray.h" -#include "SkTemplates.h" -#include "SkSinglyLinkedList.h" /** \class SkAdvancedTypefaceMetrics @@ -22,16 +20,15 @@ embed typefaces. This class is created and filled in with information by SkTypeface::getAdvancedTypefaceMetrics. */ - class SkAdvancedTypefaceMetrics : public SkRefCnt { public: SkAdvancedTypefaceMetrics() : fType(SkAdvancedTypefaceMetrics::kOther_Font) - , fFlags(SkAdvancedTypefaceMetrics::kEmpty_FontFlag) + , fFlags((FontFlags)0) , fLastGlyphID(0) , fEmSize(0) - , fStyle(0) + , fStyle((StyleFlags)0) , fItalicAngle(0) , fAscent(0) , fDescent(0) @@ -43,7 +40,7 @@ public: SkString fFontName; - enum FontType { + enum FontType : uint8_t { kType1_Font, kType1CID_Font, kCFF_Font, @@ -55,29 +52,28 @@ public: // information will never be populated. FontType fType; - enum FontFlags { - kEmpty_FontFlag = 0x0, //!<No flags set - kMultiMaster_FontFlag = 0x1, //!<May be true for Type1, CFF, or TrueType fonts. - kNotEmbeddable_FontFlag = 0x2, //!<May not be embedded. - kNotSubsettable_FontFlag = 0x4, //!<May not be subset. + enum FontFlags : uint8_t { + kMultiMaster_FontFlag = 0x01, //!<May be true for Type1, CFF, or TrueType fonts. + kNotEmbeddable_FontFlag = 0x02, //!<May not be embedded. + kNotSubsettable_FontFlag = 0x04, //!<May not be subset. }; - // Global font flags. - FontFlags fFlags; + FontFlags fFlags; // Global font flags. uint16_t fLastGlyphID; // The last valid glyph ID in the font. uint16_t fEmSize; // The size of the em box (defines font units). // These enum values match the values used in the PDF file format. - enum StyleFlags { - kFixedPitch_Style = 0x00001, - kSerif_Style = 0x00002, - kScript_Style = 0x00008, - kItalic_Style = 0x00040, - kAllCaps_Style = 0x10000, - kSmallCaps_Style = 0x20000, - kForceBold_Style = 0x40000 + enum StyleFlags : uint32_t { + kFixedPitch_Style = 0x00000001, + kSerif_Style = 0x00000002, + kScript_Style = 0x00000008, + kItalic_Style = 0x00000040, + kAllCaps_Style = 0x00010000, + kSmallCaps_Style = 0x00020000, + kForceBold_Style = 0x00040000 }; - uint16_t fStyle; // Font style characteristics. + StyleFlags fStyle; // Font style characteristics. + int16_t fItalicAngle; // Counterclockwise degrees from vertical of the // dominant vertical stroke for an Italic face. // The following fields are all in font units. @@ -99,5 +95,9 @@ private: typedef SkRefCnt INHERITED; }; +namespace skstd { +template <> struct is_bitmask_enum<SkAdvancedTypefaceMetrics::FontFlags> : std::true_type {}; +template <> struct is_bitmask_enum<SkAdvancedTypefaceMetrics::StyleFlags> : std::true_type {}; +} #endif diff --git a/src/core/SkTypeface.cpp b/src/core/SkTypeface.cpp index 24e1a67864..cda9b5ce5e 100644 --- a/src/core/SkTypeface.cpp +++ b/src/core/SkTypeface.cpp @@ -298,14 +298,10 @@ SkAdvancedTypefaceMetrics* SkTypeface::getAdvancedTypefaceMetrics( (os2table.version.v2.fsType.field.Restricted && !(os2table.version.v2.fsType.field.PreviewPrint || os2table.version.v2.fsType.field.Editable))) { - result->fFlags = SkTBitOr<SkAdvancedTypefaceMetrics::FontFlags>( - result->fFlags, - SkAdvancedTypefaceMetrics::kNotEmbeddable_FontFlag); + result->fFlags |= SkAdvancedTypefaceMetrics::kNotEmbeddable_FontFlag; } if (os2table.version.v2.fsType.field.NoSubsetting) { - result->fFlags = SkTBitOr<SkAdvancedTypefaceMetrics::FontFlags>( - result->fFlags, - SkAdvancedTypefaceMetrics::kNotSubsettable_FontFlag); + result->fFlags |= SkAdvancedTypefaceMetrics::kNotSubsettable_FontFlag; } } } |