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

Side by Side Diff: src/core/SkScalerContext.h

Issue 92623002: Document the SkScalerContext pure virtuals. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/core/SkScalerContext.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 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkScalerContext_DEFINED 8 #ifndef SkScalerContext_DEFINED
9 #define SkScalerContext_DEFINED 9 #define SkScalerContext_DEFINED
10 10
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 static inline void MakeRec(const SkPaint&, const SkDeviceProperties* deviceP roperties, 195 static inline void MakeRec(const SkPaint&, const SkDeviceProperties* deviceP roperties,
196 const SkMatrix*, Rec* rec); 196 const SkMatrix*, Rec* rec);
197 static inline void PostMakeRec(const SkPaint&, Rec*); 197 static inline void PostMakeRec(const SkPaint&, Rec*);
198 198
199 static SkMaskGamma::PreBlend GetMaskPreBlend(const Rec& rec); 199 static SkMaskGamma::PreBlend GetMaskPreBlend(const Rec& rec);
200 200
201 protected: 201 protected:
202 Rec fRec; 202 Rec fRec;
203 unsigned fBaseGlyphCount; 203 unsigned fBaseGlyphCount;
204 204
205 virtual unsigned generateGlyphCount() = 0; 205 /** Generates the contents of glyph.fAdvanceX and glyph.fAdvanceY.
206 virtual uint16_t generateCharToGlyph(SkUnichar) = 0; 206 * May call getMetrics if that would be just as fast.
207 virtual void generateAdvance(SkGlyph*) = 0; 207 */
208 virtual void generateMetrics(SkGlyph*) = 0; 208 virtual void generateAdvance(SkGlyph* glyph) = 0;
209 virtual void generateImage(const SkGlyph&) = 0; 209
210 virtual void generatePath(const SkGlyph&, SkPath*) = 0; 210 /** Generates the contents of glyph.fWidth, fHeight, fTop, fLeft,
211 * as well as fAdvanceX and fAdvanceY if not already set.
212 *
213 * TODO: fMaskFormat is set by getMetrics later; cannot be set here.
214 */
215 virtual void generateMetrics(SkGlyph* glyph) = 0;
216
217 /** Generates the contents of glyph.fImage.
218 * When called, glyph.fImage will be pointing to a pre-allocated,
219 * uninitialized region of memory of size glyph.computeImageSize().
220 * This method may change glyph.fMaskFormat if the new image size is
221 * less than or equal to the old image size.
222 *
223 * Because glyph.computeImageSize() will determine the size of fImage,
224 * generateMetrics will be called before generateImage.
225 */
226 virtual void generateImage(const SkGlyph& glyph) = 0;
227
228 /** Sets the passed path to the glyph outline.
229 * If this cannot be done the path is set to empty;
230 * this is indistinguishable from a glyph with an empty path.
231 * This does not set glyph.fPath.
232 *
233 * TODO: path is always glyph.fPath, no reason to pass separately.
234 */
235 virtual void generatePath(const SkGlyph& glyph, SkPath* path) = 0;
236
237 /** Retrieves font metrics.
238 * TODO: there is now a vertical bit, no need for two parameters.
239 */
211 virtual void generateFontMetrics(SkPaint::FontMetrics* mX, 240 virtual void generateFontMetrics(SkPaint::FontMetrics* mX,
212 SkPaint::FontMetrics* mY) = 0; 241 SkPaint::FontMetrics* mY) = 0;
213 // default impl returns 0, indicating failure. 242
214 virtual SkUnichar generateGlyphToChar(uint16_t); 243 /** Returns the number of glyphs in the font. */
244 virtual unsigned generateGlyphCount() = 0;
245
246 /** Returns the glyph id for the given unichar.
247 * If there is no 1:1 mapping from the unichar to a glyph id, returns 0.
248 */
249 virtual uint16_t generateCharToGlyph(SkUnichar unichar) = 0;
250
251 /** Returns the unichar for the given glyph id.
252 * If there is no 1:1 mapping from the glyph id to a unichar, returns 0.
253 * The default implementation always returns 0, indicating failure.
254 */
255 virtual SkUnichar generateGlyphToChar(uint16_t glyphId);
215 256
216 void forceGenerateImageFromPath() { fGenerateImageFromPath = true; } 257 void forceGenerateImageFromPath() { fGenerateImageFromPath = true; }
217 258
218 private: 259 private:
219 // never null 260 // never null
220 SkAutoTUnref<SkTypeface> fTypeface; 261 SkAutoTUnref<SkTypeface> fTypeface;
221 262
222 #ifdef SK_BUILD_FOR_ANDROID 263 #ifdef SK_BUILD_FOR_ANDROID
223 SkPaintOptionsAndroid fPaintOptionsAndroid; 264 SkPaintOptionsAndroid fPaintOptionsAndroid;
224 #endif 265 #endif
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 return static_cast<SkPaint::Hinting>(hint); 337 return static_cast<SkPaint::Hinting>(hint);
297 } 338 }
298 339
299 void SkScalerContextRec::setHinting(SkPaint::Hinting hinting) { 340 void SkScalerContextRec::setHinting(SkPaint::Hinting hinting) {
300 fFlags = (fFlags & ~SkScalerContext::kHinting_Mask) | 341 fFlags = (fFlags & ~SkScalerContext::kHinting_Mask) |
301 (hinting << SkScalerContext::kHinting_Shift); 342 (hinting << SkScalerContext::kHinting_Shift);
302 } 343 }
303 344
304 345
305 #endif 346 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkScalerContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698