Index: src/core/SkAdvancedTypefaceMetrics.h |
diff --git a/src/core/SkAdvancedTypefaceMetrics.h b/src/core/SkAdvancedTypefaceMetrics.h |
index 1b490e0199300d6671dd428835900172a9f31a6b..17255ab217abfd74e9628b7f492f16ac9312301c 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 |