1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- * 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 "include/core/SkTypes.h"
- class SK_API SkFontStyle {
- public:
- enum Weight {
- kInvisible_Weight = 0,
- 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,
- kExtraBlack_Weight = 1000,
- };
- 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,
- kUltraExpanded_Width = 9,
- };
- enum Slant {
- kUpright_Slant,
- kItalic_Slant,
- kOblique_Slant,
- };
- constexpr SkFontStyle(int weight, int width, Slant slant) : fValue(
- (SkTPin<int>(weight, kInvisible_Weight, kExtraBlack_Weight)) +
- (SkTPin<int>(width, kUltraCondensed_Width, kUltraExpanded_Width) << 16) +
- (SkTPin<int>(slant, kUpright_Slant, kOblique_Slant) << 24)
- ) { }
- constexpr SkFontStyle() : SkFontStyle{kNormal_Weight, kNormal_Width, kUpright_Slant} { }
- bool operator==(const SkFontStyle& rhs) const {
- return fValue == rhs.fValue;
- }
- int weight() const { return fValue & 0xFFFF; }
- int width() const { return (fValue >> 16) & 0xFF; }
- Slant slant() const { return (Slant)((fValue >> 24) & 0xFF); }
- static constexpr SkFontStyle Normal() {
- return SkFontStyle(kNormal_Weight, kNormal_Width, kUpright_Slant);
- }
- static constexpr SkFontStyle Bold() {
- return SkFontStyle(kBold_Weight, kNormal_Width, kUpright_Slant);
- }
- static constexpr SkFontStyle Italic() {
- return SkFontStyle(kNormal_Weight, kNormal_Width, kItalic_Slant );
- }
- static constexpr SkFontStyle BoldItalic() {
- return SkFontStyle(kBold_Weight, kNormal_Width, kItalic_Slant );
- }
- private:
- uint32_t fValue;
- };
- #endif
|