Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Unified Diff: src/core/SkAdvancedTypefaceMetrics.h

Issue 2246903002: SkPDF: SkPDFFont class changes (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2016-08-15 (Monday) 14:05:05 EDT Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/core/SkTypeface.cpp » ('j') | src/pdf/SkPDFFont.cpp » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkAdvancedTypefaceMetrics.h
diff --git a/src/core/SkAdvancedTypefaceMetrics.h b/src/core/SkAdvancedTypefaceMetrics.h
index 1b490e0199300d6671dd428835900172a9f31a6b..2ec5cfe60bfdb3c574da7c5b64d292d79cb934c0 100644
--- a/src/core/SkAdvancedTypefaceMetrics.h
+++ b/src/core/SkAdvancedTypefaceMetrics.h
@@ -23,15 +23,29 @@
SkTypeface::getAdvancedTypefaceMetrics.
*/
+#define SK_DEFINE_FLAG_OPERATORS(ENUM_T, UNDERLYING_T) \
bungeman-skia 2016/08/15 20:17:03 Why force the user to specify UNDERLYING_T, skstd:
hal.canary 2016/08/15 21:14:42 Acknowledged.
+ friend ENUM_T operator&(ENUM_T u, ENUM_T v) { \
bungeman-skia 2016/08/15 20:17:03 Ah, yes, friend definitions. I had almost forgotte
hal.canary 2016/08/15 21:14:42 Acknowledged.
+ return (ENUM_T)((UNDERLYING_T)u & (UNDERLYING_T)v); \
bungeman-skia 2016/08/15 20:17:03 I would much prefer return static_cast<EN
hal.canary 2016/08/15 21:14:42 Acknowledged.
+ } \
+ friend ENUM_T operator|(ENUM_T u, ENUM_T v) { \
+ return (ENUM_T)((UNDERLYING_T)u | (UNDERLYING_T)v); \
+ } \
+ friend ENUM_T& operator|=(ENUM_T& u, ENUM_T v) { \
+ return u = u | v; \
+ } \
+ friend ENUM_T& operator&=(ENUM_T& u, ENUM_T v) { \
+ return u = u & v; \
+ }
+
class SkAdvancedTypefaceMetrics : public SkRefCnt {
public:
SkAdvancedTypefaceMetrics()
: fType(SkAdvancedTypefaceMetrics::kOther_Font)
- , fFlags(SkAdvancedTypefaceMetrics::kEmpty_FontFlag)
+ , fFlags((FontFlags)0)
bungeman-skia 2016/08/15 20:17:03 why not kEmpty_FontFlag since it exists. Or remove
hal.canary 2016/08/15 21:14:42 I'll just do away with it.
, fLastGlyphID(0)
, fEmSize(0)
- , fStyle(0)
+ , fStyle((StyleFlags)0)
, fItalicAngle(0)
, fAscent(0)
, fDescent(0)
@@ -43,7 +57,7 @@ public:
SkString fFontName;
- enum FontType {
+ enum FontType : uint8_t {
kType1_Font,
kType1CID_Font,
kCFF_Font,
@@ -55,12 +69,14 @@ 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 {
+ kEmpty_FontFlag = 0x00, //!<No flags set
+ 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.
};
+ SK_DEFINE_FLAG_OPERATORS(FontFlags, uint8_t)
+
// Global font flags.
FontFlags fFlags;
@@ -68,16 +84,17 @@ public:
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.
+ SK_DEFINE_FLAG_OPERATORS(StyleFlags, uint32_t)
+ 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.
« no previous file with comments | « no previous file | src/core/SkTypeface.cpp » ('j') | src/pdf/SkPDFFont.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698