1c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com/* 2c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com * Copyright 2013 Google Inc. 3c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com * 4c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com * Use of this source code is governed by a BSD-style license that can be 5c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com * found in the LICENSE file. 6c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com */ 7c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 895625dbcb6b2960732bc27ad0dd0fc4adbb4f7c0reed@google.com#ifndef SkFontStyle_DEFINED 995625dbcb6b2960732bc27ad0dd0fc4adbb4f7c0reed@google.com#define SkFontStyle_DEFINED 10c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 11c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com#include "SkTypes.h" 12c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 13aae71baa73a55f91446fcac22f8ccffcbfc6adeareed@google.comclass SK_API SkFontStyle { 14c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.compublic: 15c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com enum Weight { 166e45bda29edef867468cbdd7c062d0d99e884656bungeman kInvisible_Weight = 0, 176e45bda29edef867468cbdd7c062d0d99e884656bungeman kThin_Weight = 100, 186e45bda29edef867468cbdd7c062d0d99e884656bungeman kExtraLight_Weight = 200, 196e45bda29edef867468cbdd7c062d0d99e884656bungeman kLight_Weight = 300, 206e45bda29edef867468cbdd7c062d0d99e884656bungeman kNormal_Weight = 400, 216e45bda29edef867468cbdd7c062d0d99e884656bungeman kMedium_Weight = 500, 226e45bda29edef867468cbdd7c062d0d99e884656bungeman kSemiBold_Weight = 600, 236e45bda29edef867468cbdd7c062d0d99e884656bungeman kBold_Weight = 700, 246e45bda29edef867468cbdd7c062d0d99e884656bungeman kExtraBold_Weight = 800, 256e45bda29edef867468cbdd7c062d0d99e884656bungeman kBlack_Weight = 900, 26d783e08004e2daace50dfcfebb66727b4c13794ebungeman kExtraBlack_Weight = 1000, 27c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com }; 28c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 29c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com enum Width { 30c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kUltraCondensed_Width = 1, 31c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kExtraCondensed_Width = 2, 32c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kCondensed_Width = 3, 33c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kSemiCondensed_Width = 4, 34c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kNormal_Width = 5, 35c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kSemiExpanded_Width = 6, 36c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kExpanded_Width = 7, 37c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kExtraExpanded_Width = 8, 38d783e08004e2daace50dfcfebb66727b4c13794ebungeman kUltraExpanded_Width = 9, 39c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com }; 40c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 41c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com enum Slant { 42c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kUpright_Slant, 43c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kItalic_Slant, 44b4bb7d825566042ed64697be49457dbac060e6c4bungeman kOblique_Slant, 45c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com }; 46c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 47c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com SkFontStyle(); 48c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com SkFontStyle(int weight, int width, Slant); 4911a77c6e0634e2feb6fe4e74806db2fdd2a799ecbungeman 5011a77c6e0634e2feb6fe4e74806db2fdd2a799ecbungeman static SkFontStyle FromOldStyle(unsigned oldStyle); 51c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 52c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com bool operator==(const SkFontStyle& rhs) const { 53c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com return fUnion.fU32 == rhs.fUnion.fU32; 54c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com } 55c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 56c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com int weight() const { return fUnion.fR.fWeight; } 57c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com int width() const { return fUnion.fR.fWidth; } 58f55061fd8453e8d2b33f1f05060fc443deee3222reed@google.com Slant slant() const { return (Slant)fUnion.fR.fSlant; } 59c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 60c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.comprivate: 61c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com union { 62c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com struct { 63c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com uint16_t fWeight; // 100 .. 900 64c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com uint8_t fWidth; // 1 .. 9 65c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com uint8_t fSlant; // 0 .. 2 66c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com } fR; 67c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com uint32_t fU32; 68c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com } fUnion; 69c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com}; 70c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 71c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com#endif 72