17839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger/* 27839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * Copyright 2013 Google Inc. 37839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * 47839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * Use of this source code is governed by a BSD-style license that can be 57839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * found in the LICENSE file. 67839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger */ 77839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 87839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#ifndef SkFontStyle_DEFINED 97839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#define SkFontStyle_DEFINED 107839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 117839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "SkTypes.h" 127839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 137839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergerclass SK_API SkFontStyle { 147839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergerpublic: 157839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger enum Weight { 167839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kThin_Weight = 100, 177839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kExtraLight_Weight = 200, 187839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kLight_Weight = 300, 197839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kNormal_Weight = 400, 207839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kMedium_Weight = 500, 217839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kSemiBold_Weight = 600, 227839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kBold_Weight = 700, 237839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kExtraBold_Weight = 800, 247839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kBlack_Weight = 900 257839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger }; 267839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 277839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger enum Width { 287839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kUltraCondensed_Width = 1, 297839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kExtraCondensed_Width = 2, 307839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kCondensed_Width = 3, 317839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kSemiCondensed_Width = 4, 327839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kNormal_Width = 5, 337839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kSemiExpanded_Width = 6, 347839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kExpanded_Width = 7, 357839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kExtraExpanded_Width = 8, 367839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kUltaExpanded_Width = 9 377839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger }; 387839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 397839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger enum Slant { 407839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kUpright_Slant, 417839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger kItalic_Slant, 427839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger }; 437839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 447839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkFontStyle(); 457839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkFontStyle(int weight, int width, Slant); 467839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 477839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger bool operator==(const SkFontStyle& rhs) const { 487839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger return fUnion.fU32 == rhs.fUnion.fU32; 497839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger } 507839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 517839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger int weight() const { return fUnion.fR.fWeight; } 527839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger int width() const { return fUnion.fR.fWidth; } 537839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger Slant slant() const { return (Slant)fUnion.fR.fSlant; } 547839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 557839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger bool isItalic() const { 567839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger return kItalic_Slant == fUnion.fR.fSlant; 577839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger } 587839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 597839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergerprivate: 607839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger union { 617839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger struct { 627839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger uint16_t fWeight; // 100 .. 900 637839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger uint8_t fWidth; // 1 .. 9 647839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger uint8_t fSlant; // 0 .. 2 657839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger } fR; 667839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger uint32_t fU32; 677839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger } fUnion; 687839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger}; 697839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 707839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#endif 71