Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / pdf / SkPDFFontImpl.h
1
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8
9
10 #ifndef SkPDFFontImpl_DEFINED
11 #define SkPDFFontImpl_DEFINED
12
13 #include "SkPDFFont.h"
14
15 class SkPDFType0Font : public SkPDFFont {
16 public:
17     virtual ~SkPDFType0Font();
18     virtual bool multiByteGlyphs() const { return true; }
19     SK_API virtual SkPDFFont* getFontSubset(const SkPDFGlyphSet* usage);
20 #ifdef SK_DEBUG
21     virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
22                             bool indirect);
23 #endif
24
25 private:
26     friend class SkPDFFont;  // to access the constructor
27 #ifdef SK_DEBUG
28     bool fPopulated;
29     typedef SkPDFDict INHERITED;
30 #endif
31
32     SkPDFType0Font(const SkAdvancedTypefaceMetrics* info, SkTypeface* typeface);
33
34     bool populate(const SkPDFGlyphSet* subset);
35 };
36
37 class SkPDFCIDFont : public SkPDFFont {
38 public:
39     virtual ~SkPDFCIDFont();
40     virtual bool multiByteGlyphs() const { return true; }
41
42 private:
43     friend class SkPDFType0Font;  // to access the constructor
44
45     SkPDFCIDFont(const SkAdvancedTypefaceMetrics* info, SkTypeface* typeface,
46                  const SkPDFGlyphSet* subset);
47
48     bool populate(const SkPDFGlyphSet* subset);
49     bool addFontDescriptor(int16_t defaultWidth,
50                            const SkTDArray<uint32_t>* subset);
51 };
52
53 class SkPDFType1Font : public SkPDFFont {
54 public:
55     virtual ~SkPDFType1Font();
56     virtual bool multiByteGlyphs() const { return false; }
57
58 private:
59     friend class SkPDFFont;  // to access the constructor
60
61     SkPDFType1Font(const SkAdvancedTypefaceMetrics* info, SkTypeface* typeface,
62                    uint16_t glyphID, SkPDFDict* relatedFontDescriptor);
63
64     bool populate(int16_t glyphID);
65     bool addFontDescriptor(int16_t defaultWidth);
66     void addWidthInfoFromRange(int16_t defaultWidth,
67         const SkAdvancedTypefaceMetrics::WidthRange* widthRangeEntry);
68 };
69
70 class SkPDFType3Font : public SkPDFFont {
71 public:
72     virtual ~SkPDFType3Font();
73     virtual bool multiByteGlyphs() const { return false; }
74
75 private:
76     friend class SkPDFFont;  // to access the constructor
77
78     SkPDFType3Font(const SkAdvancedTypefaceMetrics* info,
79                    SkTypeface* typeface, uint16_t glyphID);
80
81     bool populate(int16_t glyphID);
82 };
83
84 #endif