1/* 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 8#include "SkFontConfigInterface.h" 9#include "SkFontHost_FreeType_common.h" 10#include "SkStream.h" 11#include "SkTypefaceCache.h" 12 13class SkFontDescriptor; 14 15class FontConfigTypeface : public SkTypeface_FreeType { 16 SkFontConfigInterface::FontIdentity fIdentity; 17 SkString fFamilyName; 18 SkStream* fLocalStream; 19 20public: 21 FontConfigTypeface(Style style, 22 const SkFontConfigInterface::FontIdentity& fi, 23 const SkString& familyName) 24 : INHERITED(style, SkTypefaceCache::NewFontID(), false) 25 , fIdentity(fi) 26 , fFamilyName(familyName) 27 , fLocalStream(NULL) {} 28 29 FontConfigTypeface(Style style, bool fixedWidth, SkStream* localStream) 30 : INHERITED(style, SkTypefaceCache::NewFontID(), fixedWidth) { 31 // we default to empty fFamilyName and fIdentity 32 fLocalStream = localStream; 33 SkSafeRef(localStream); 34 } 35 36 virtual ~FontConfigTypeface() { 37 SkSafeUnref(fLocalStream); 38 } 39 40 const SkFontConfigInterface::FontIdentity& getIdentity() const { 41 return fIdentity; 42 } 43 44 const char* getFamilyName() const { return fFamilyName.c_str(); } 45 SkStream* getLocalStream() const { return fLocalStream; } 46 47 bool isFamilyName(const char* name) const { 48 return fFamilyName.equals(name); 49 } 50 51 static SkTypeface* LegacyCreateTypeface(const SkTypeface* family, 52 const char familyName[], 53 SkTypeface::Style); 54 55protected: 56 friend class SkFontHost; // hack until we can make public versions 57 58 virtual void onGetFontDescriptor(SkFontDescriptor*, bool*) const SK_OVERRIDE; 59 virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE; 60 61private: 62 typedef SkTypeface_FreeType INHERITED; 63}; 64