/* * Copyright 2013 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkFontConfigInterface.h" #include "SkFontHost_FreeType_common.h" #include "SkTypefaceCache.h" class SkFontDescriptor; class SkStream; class FontConfigTypeface : public SkTypeface_FreeType { SkFontConfigInterface::FontIdentity fIdentity; SkString fFamilyName; SkStream* fLocalStream; public: FontConfigTypeface(Style style, const SkFontConfigInterface::FontIdentity& fi, const SkString& familyName) : INHERITED(style, SkTypefaceCache::NewFontID(), false) , fIdentity(fi) , fFamilyName(familyName) , fLocalStream(NULL) {} FontConfigTypeface(Style style, SkStream* localStream) : INHERITED(style, SkTypefaceCache::NewFontID(), false) { // we default to empty fFamilyName and fIdentity fLocalStream = localStream; SkSafeRef(localStream); } virtual ~FontConfigTypeface() { SkSafeUnref(fLocalStream); } const SkFontConfigInterface::FontIdentity& getIdentity() const { return fIdentity; } const char* getFamilyName() const { return fFamilyName.c_str(); } SkStream* getLocalStream() const { return fLocalStream; } bool isFamilyName(const char* name) const { return fFamilyName.equals(name); } protected: friend class SkFontHost; // hack until we can make public versions virtual int onGetTableTags(SkFontTableTag tags[]) const SK_OVERRIDE; virtual size_t onGetTableData(SkFontTableTag, size_t offset, size_t length, void* data) const SK_OVERRIDE; virtual void onGetFontDescriptor(SkFontDescriptor*, bool*) const SK_OVERRIDE; virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE; private: typedef SkTypeface_FreeType INHERITED; };