diff options
Diffstat (limited to 'src/ports/SkFontConfigTypeface.h')
-rw-r--r-- | src/ports/SkFontConfigTypeface.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/ports/SkFontConfigTypeface.h b/src/ports/SkFontConfigTypeface.h new file mode 100644 index 0000000000..71f80b7318 --- /dev/null +++ b/src/ports/SkFontConfigTypeface.h @@ -0,0 +1,63 @@ +/* + * 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; +}; + |