SkFontStyle.h revision b4bb7d825566042ed64697be49457dbac060e6c4
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 { 16c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kThin_Weight = 100, 17c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kExtraLight_Weight = 200, 18c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kLight_Weight = 300, 19c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kNormal_Weight = 400, 20c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kMedium_Weight = 500, 21c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kSemiBold_Weight = 600, 22c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kBold_Weight = 700, 23c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kExtraBold_Weight = 800, 24c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kBlack_Weight = 900 25c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com }; 26c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 27c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com enum Width { 28c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kUltraCondensed_Width = 1, 29c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kExtraCondensed_Width = 2, 30c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kCondensed_Width = 3, 31c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kSemiCondensed_Width = 4, 32c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kNormal_Width = 5, 33c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kSemiExpanded_Width = 6, 34c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kExpanded_Width = 7, 35c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kExtraExpanded_Width = 8, 36c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kUltaExpanded_Width = 9 37c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com }; 38c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 39c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com enum Slant { 40c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kUpright_Slant, 41c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com kItalic_Slant, 42b4bb7d825566042ed64697be49457dbac060e6c4bungeman kOblique_Slant, 43c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com }; 44c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 45c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com SkFontStyle(); 46c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com SkFontStyle(int weight, int width, Slant); 4711a77c6e0634e2feb6fe4e74806db2fdd2a799ecbungeman 4811a77c6e0634e2feb6fe4e74806db2fdd2a799ecbungeman static SkFontStyle FromOldStyle(unsigned oldStyle); 49c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 50c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com bool operator==(const SkFontStyle& rhs) const { 51c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com return fUnion.fU32 == rhs.fUnion.fU32; 52c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com } 53c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 54c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com int weight() const { return fUnion.fR.fWeight; } 55c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com int width() const { return fUnion.fR.fWidth; } 56f55061fd8453e8d2b33f1f05060fc443deee3222reed@google.com Slant slant() const { return (Slant)fUnion.fR.fSlant; } 57c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 58c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.comprivate: 59c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com union { 60c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com struct { 61c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com uint16_t fWeight; // 100 .. 900 62c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com uint8_t fWidth; // 1 .. 9 63c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com uint8_t fSlant; // 0 .. 2 64c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com } fR; 65c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com uint32_t fU32; 66c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com } fUnion; 67c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com}; 68c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com 69c452d82c8276a7c73debe3c7c2bf2e1e2f5c6c66reed@google.com#endif 70