Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(479)

Side by Side Diff: src/pdf/SkPDFFont.h

Issue 842253003: SkPDFCanon (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: did you mean struct here? Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/pdf/SkPDFCanon.cpp ('k') | src/pdf/SkPDFFont.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkPDFFont_DEFINED 10 #ifndef SkPDFFont_DEFINED
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 static SkPDFFont* GetFontResource(SkTypeface* typeface, uint16_t glyphID); 132 static SkPDFFont* GetFontResource(SkTypeface* typeface, uint16_t glyphID);
133 133
134 /** Subset the font based on usage set. Returns a SkPDFFont instance with 134 /** Subset the font based on usage set. Returns a SkPDFFont instance with
135 * subset. 135 * subset.
136 * @param usage Glyph subset requested. 136 * @param usage Glyph subset requested.
137 * @return NULL if font does not support subsetting, a new instance 137 * @return NULL if font does not support subsetting, a new instance
138 * of SkPDFFont otherwise. 138 * of SkPDFFont otherwise.
139 */ 139 */
140 virtual SkPDFFont* getFontSubset(const SkPDFGlyphSet* usage); 140 virtual SkPDFFont* getFontSubset(const SkPDFGlyphSet* usage);
141 141
142 enum Match {
143 kExact_Match,
144 kRelated_Match,
145 kNot_Match,
146 };
147 static Match IsMatch(SkPDFFont* existingFont,
148 uint32_t existingFontID,
149 uint16_t existingGlyphID,
150 uint32_t searchFontID,
151 uint16_t searchGlyphID);
152
142 protected: 153 protected:
143 // Common constructor to handle common members. 154 // Common constructor to handle common members.
144 SkPDFFont(const SkAdvancedTypefaceMetrics* fontInfo, SkTypeface* typeface, 155 SkPDFFont(const SkAdvancedTypefaceMetrics* fontInfo, SkTypeface* typeface,
145 SkPDFDict* relatedFontDescriptor); 156 SkPDFDict* relatedFontDescriptor);
146 157
147 // Accessors for subclass. 158 // Accessors for subclass.
148 const SkAdvancedTypefaceMetrics* fontInfo(); 159 const SkAdvancedTypefaceMetrics* fontInfo();
149 void setFontInfo(const SkAdvancedTypefaceMetrics* info); 160 void setFontInfo(const SkAdvancedTypefaceMetrics* info);
150 uint16_t firstGlyphID() const; 161 uint16_t firstGlyphID() const;
151 uint16_t lastGlyphID() const; 162 uint16_t lastGlyphID() const;
(...skipping 19 matching lines...) Expand all
171 void populateToUnicodeTable(const SkPDFGlyphSet* subset); 182 void populateToUnicodeTable(const SkPDFGlyphSet* subset);
172 183
173 // Create instances of derived types based on fontInfo. 184 // Create instances of derived types based on fontInfo.
174 static SkPDFFont* Create(const SkAdvancedTypefaceMetrics* fontInfo, 185 static SkPDFFont* Create(const SkAdvancedTypefaceMetrics* fontInfo,
175 SkTypeface* typeface, uint16_t glyphID, 186 SkTypeface* typeface, uint16_t glyphID,
176 SkPDFDict* relatedFontDescriptor); 187 SkPDFDict* relatedFontDescriptor);
177 188
178 static bool Find(uint32_t fontID, uint16_t glyphID, int* index); 189 static bool Find(uint32_t fontID, uint16_t glyphID, int* index);
179 190
180 private: 191 private:
181 class FontRec {
182 public:
183 SkPDFFont* fFont;
184 uint32_t fFontID;
185 uint16_t fGlyphID;
186
187 // A fGlyphID of 0 with no fFont always matches.
188 bool operator==(const FontRec& b) const;
189 FontRec(SkPDFFont* font, uint32_t fontID, uint16_t fGlyphID);
190 };
191
192 SkAutoTUnref<SkTypeface> fTypeface; 192 SkAutoTUnref<SkTypeface> fTypeface;
193 193
194 // The glyph IDs accessible with this font. For Type1 (non CID) fonts, 194 // The glyph IDs accessible with this font. For Type1 (non CID) fonts,
195 // this will be a subset if the font has more than 255 glyphs. 195 // this will be a subset if the font has more than 255 glyphs.
196 uint16_t fFirstGlyphID; 196 uint16_t fFirstGlyphID;
197 uint16_t fLastGlyphID; 197 uint16_t fLastGlyphID;
198 SkAutoTUnref<const SkAdvancedTypefaceMetrics> fFontInfo; 198 SkAutoTUnref<const SkAdvancedTypefaceMetrics> fFontInfo;
199 SkTDArray<SkPDFObject*> fResources; 199 SkTDArray<SkPDFObject*> fResources;
200 SkAutoTUnref<SkPDFDict> fDescriptor; 200 SkAutoTUnref<SkPDFDict> fDescriptor;
201 201
202 SkAdvancedTypefaceMetrics::FontType fFontType; 202 SkAdvancedTypefaceMetrics::FontType fFontType;
203 203
204 // This should be made a hash table if performance is a problem.
205 static SkTDArray<FontRec>& CanonicalFonts();
206 static SkBaseMutex& CanonicalFontsMutex();
207 typedef SkPDFDict INHERITED; 204 typedef SkPDFDict INHERITED;
208 }; 205 };
209 206
210 #endif 207 #endif
OLDNEW
« no previous file with comments | « src/pdf/SkPDFCanon.cpp ('k') | src/pdf/SkPDFFont.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698