blob: 1279024b2ed3336907abbf1a7e63f813b29b00d6 [file] [log] [blame]
reed@google.comc452d822013-03-25 18:44:17 +00001/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
reed@google.com95625db2013-03-25 20:44:02 +00008#ifndef SkFontStyle_DEFINED
9#define SkFontStyle_DEFINED
reed@google.comc452d822013-03-25 18:44:17 +000010
11#include "SkTypes.h"
12
13class SkFontStyle {
14public:
15 enum Weight {
16 kThin_Weight = 100,
17 kExtraLight_Weight = 200,
18 kLight_Weight = 300,
19 kNormal_Weight = 400,
20 kMedium_Weight = 500,
21 kSemiBold_Weight = 600,
22 kBold_Weight = 700,
23 kExtraBold_Weight = 800,
24 kBlack_Weight = 900
25 };
26
27 enum Width {
28 kUltraCondensed_Width = 1,
29 kExtraCondensed_Width = 2,
30 kCondensed_Width = 3,
31 kSemiCondensed_Width = 4,
32 kNormal_Width = 5,
33 kSemiExpanded_Width = 6,
34 kExpanded_Width = 7,
35 kExtraExpanded_Width = 8,
36 kUltaExpanded_Width = 9
37 };
38
39 enum Slant {
40 kUpright_Slant,
41 kItalic_Slant,
42 };
43
44 SkFontStyle();
45 SkFontStyle(int weight, int width, Slant);
46
47 bool operator==(const SkFontStyle& rhs) const {
48 return fUnion.fU32 == rhs.fUnion.fU32;
49 }
50
51 int weight() const { return fUnion.fR.fWeight; }
52 int width() const { return fUnion.fR.fWidth; }
53
54 bool isItalic() const {
55 return kItalic_Slant == fUnion.fR.fSlant;
56 }
57
58private:
59 union {
60 struct {
61 uint16_t fWeight; // 100 .. 900
62 uint8_t fWidth; // 1 .. 9
63 uint8_t fSlant; // 0 .. 2
64 } fR;
65 uint32_t fU32;
66 } fUnion;
67};
68
69#endif