diff options
author | bungeman <bungeman@google.com> | 2014-10-20 12:33:59 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-20 12:33:59 -0700 |
commit | 43b8b36b20ae00e2d78421c4cda1f3f922983a20 (patch) | |
tree | dd61aeeafd3280074f03e7ef5b1a462bfd060c9e /include/core/SkFontStyle.h | |
parent | 33e6466a4faa3a58202bf056b50fdcd9dc34cc22 (diff) |
Replace SkTypeface::Style with SkFontStyle.
Review URL: https://codereview.chromium.org/488143002
Diffstat (limited to 'include/core/SkFontStyle.h')
-rw-r--r-- | include/core/SkFontStyle.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/include/core/SkFontStyle.h b/include/core/SkFontStyle.h new file mode 100644 index 0000000000..f42d7dd470 --- /dev/null +++ b/include/core/SkFontStyle.h @@ -0,0 +1,72 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontStyle_DEFINED +#define SkFontStyle_DEFINED + +#include "SkTypes.h" + +class SK_API SkFontStyle { +public: + enum Weight { + kThin_Weight = 100, + kExtraLight_Weight = 200, + kLight_Weight = 300, + kNormal_Weight = 400, + kMedium_Weight = 500, + kSemiBold_Weight = 600, + kBold_Weight = 700, + kExtraBold_Weight = 800, + kBlack_Weight = 900 + }; + + enum Width { + kUltraCondensed_Width = 1, + kExtraCondensed_Width = 2, + kCondensed_Width = 3, + kSemiCondensed_Width = 4, + kNormal_Width = 5, + kSemiExpanded_Width = 6, + kExpanded_Width = 7, + kExtraExpanded_Width = 8, + kUltaExpanded_Width = 9 + }; + + enum Slant { + kUpright_Slant, + kItalic_Slant, + }; + + SkFontStyle(); + SkFontStyle(int weight, int width, Slant); + /** oldStyle means the style-bits in SkTypeface::Style: bold=1, italic=2 */ + explicit SkFontStyle(unsigned oldStyle); + + bool operator==(const SkFontStyle& rhs) const { + return fUnion.fU32 == rhs.fUnion.fU32; + } + + int weight() const { return fUnion.fR.fWeight; } + int width() const { return fUnion.fR.fWidth; } + Slant slant() const { return (Slant)fUnion.fR.fSlant; } + + bool isItalic() const { + return kItalic_Slant == fUnion.fR.fSlant; + } + +private: + union { + struct { + uint16_t fWeight; // 100 .. 900 + uint8_t fWidth; // 1 .. 9 + uint8_t fSlant; // 0 .. 2 + } fR; + uint32_t fU32; + } fUnion; +}; + +#endif |