| /* |
| * 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 "SkStream.h" |
| #include "SkTypefaceCache.h" |
| |
| class SkFontDescriptor; |
| |
| 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, bool fixedWidth, SkStream* localStream) |
| : INHERITED(style, SkTypefaceCache::NewFontID(), fixedWidth) { |
| // 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); |
| } |
| |
| static SkTypeface* LegacyCreateTypeface(const SkTypeface* family, |
| const char familyName[], |
| SkTypeface::Style); |
| |
| protected: |
| friend class SkFontHost; // hack until we can make public versions |
| |
| virtual void onGetFontDescriptor(SkFontDescriptor*, bool*) const SK_OVERRIDE; |
| virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE; |
| virtual SkTypeface* onRefMatchingStyle(Style) const SK_OVERRIDE; |
| |
| private: |
| typedef SkTypeface_FreeType INHERITED; |
| }; |