Home | History | Annotate | Download | only in ports
      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 
     13 class SkFontDescriptor;
     14 
     15 class FontConfigTypeface : public SkTypeface_FreeType {
     16     SkFontConfigInterface::FontIdentity fIdentity;
     17     SkString fFamilyName;
     18     SkStream* fLocalStream;
     19 
     20 public:
     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, SkStream* localStream)
     30             : INHERITED(style, SkTypefaceCache::NewFontID(), false) {
     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 
     55 protected:
     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     virtual SkTypeface* onRefMatchingStyle(Style) const SK_OVERRIDE;
     61 
     62 private:
     63     typedef SkTypeface_FreeType INHERITED;
     64 };
     65