Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright 2012 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 #ifndef SkFontDescriptor_DEFINED
      9 #define SkFontDescriptor_DEFINED
     10 
     11 #include "SkStream.h"
     12 #include "SkString.h"
     13 #include "SkTypeface.h"
     14 
     15 class SkWStream;
     16 
     17 class SkFontDescriptor {
     18 public:
     19     SkFontDescriptor(SkTypeface::Style = SkTypeface::kNormal);
     20     SkFontDescriptor(SkStream*);
     21 
     22     void serialize(SkWStream*);
     23 
     24     SkTypeface::Style getStyle() { return fStyle; }
     25     void setStyle(SkTypeface::Style style) { fStyle = style; }
     26 
     27     const char* getFamilyName() const { return fFamilyName.c_str(); }
     28     const char* getFullName() const { return fFullName.c_str(); }
     29     const char* getPostscriptName() const { return fPostscriptName.c_str(); }
     30     const char* getFontFileName() const { return fFontFileName.c_str(); }
     31     SkStream* getFontData() const { return fFontData; }
     32     int getFontIndex() const { return fFontIndex; }
     33 
     34     void setFamilyName(const char* name) { fFamilyName.set(name); }
     35     void setFullName(const char* name) { fFullName.set(name); }
     36     void setPostscriptName(const char* name) { fPostscriptName.set(name); }
     37     void setFontFileName(const char* name) { fFontFileName.set(name); }
     38     /** Set the font data only if it is necessary for serialization.
     39      *  This method takes ownership of the stream (both reference and cursor).
     40      */
     41     void setFontData(SkStream* stream) { fFontData.reset(stream); }
     42     void setFontIndex(int index) { fFontIndex = index; }
     43 
     44 private:
     45     SkString fFamilyName;
     46     SkString fFullName;
     47     SkString fPostscriptName;
     48     SkString fFontFileName;
     49     SkAutoTUnref<SkStream> fFontData;
     50     int fFontIndex;
     51 
     52     SkTypeface::Style fStyle;
     53 };
     54 
     55 #endif // SkFontDescriptor_DEFINED
     56