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

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

Issue 1654883003: add helper to create fancy underlines (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: correct comment to multiply by two Created 4 years, 10 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/core/SkGlyph.h ('k') | src/core/SkGlyphCache.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 found in the LICENSE file. 4 * Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
5 */ 5 */
6 6
7 #ifndef SkGlyphCache_DEFINED 7 #ifndef SkGlyphCache_DEFINED
8 #define SkGlyphCache_DEFINED 8 #define SkGlyphCache_DEFINED
9 9
10 #include "SkBitmap.h" 10 #include "SkBitmap.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 unsigned getGlyphCount() const; 70 unsigned getGlyphCount() const;
71 71
72 /** Return the number of glyphs currently cached. */ 72 /** Return the number of glyphs currently cached. */
73 int countCachedGlyphs() const; 73 int countCachedGlyphs() const;
74 74
75 /** Return the image associated with the glyph. If it has not been generated this will 75 /** Return the image associated with the glyph. If it has not been generated this will
76 trigger that. 76 trigger that.
77 */ 77 */
78 const void* findImage(const SkGlyph&); 78 const void* findImage(const SkGlyph&);
79 79
80 /** If the advance axis intersects the glyph's path, append the positions sc aled and offset
81 to the array (if non-null), and set the count to the updated array lengt h.
82 */
83 void findIntercepts(const SkScalar bounds[2], SkScalar scale, SkScalar xPos,
84 bool yAxis, SkGlyph* , SkScalar* array, int* count);
85
80 /** Return the Path associated with the glyph. If it has not been generated this will trigger 86 /** Return the Path associated with the glyph. If it has not been generated this will trigger
81 that. 87 that.
82 */ 88 */
83 const SkPath* findPath(const SkGlyph&); 89 const SkPath* findPath(const SkGlyph&);
84 90
85 /** Return the vertical metrics for this strike. 91 /** Return the vertical metrics for this strike.
86 */ 92 */
87 const SkPaint::FontMetrics& getFontMetrics() const { 93 const SkPaint::FontMetrics& getFontMetrics() const {
88 return fFontMetrics; 94 return fFontMetrics;
89 } 95 }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 231
226 static bool DetachProc(const SkGlyphCache*, void*) { return true; } 232 static bool DetachProc(const SkGlyphCache*, void*) { return true; }
227 233
228 // The id arg is a combined id generated by MakeID. 234 // The id arg is a combined id generated by MakeID.
229 CharGlyphRec* getCharGlyphRec(PackedUnicharID id); 235 CharGlyphRec* getCharGlyphRec(PackedUnicharID id);
230 236
231 void invokeAndRemoveAuxProcs(); 237 void invokeAndRemoveAuxProcs();
232 238
233 inline static SkGlyphCache* FindTail(SkGlyphCache* head); 239 inline static SkGlyphCache* FindTail(SkGlyphCache* head);
234 240
241 static void OffsetResults(const SkGlyph::Intercept* intercept, SkScalar scal e,
242 SkScalar xPos, SkScalar* array, int* count);
243 static void AddInterval(SkScalar val, SkGlyph::Intercept* intercept);
244 static void AddPoints(const SkPoint* pts, int ptCount, const SkScalar bounds [2],
245 bool yAxis, SkGlyph::Intercept* intercept);
246 static void AddLine(const SkPoint pts[2], SkScalar axis, bool yAxis,
247 SkGlyph::Intercept* intercept);
248 static void AddQuad(const SkPoint pts[2], SkScalar axis, bool yAxis,
249 SkGlyph::Intercept* intercept);
250 static void AddCubic(const SkPoint pts[3], SkScalar axis, bool yAxis,
251 SkGlyph::Intercept* intercept);
252 static const SkGlyph::Intercept* MatchBounds(const SkGlyph* glyph,
253 const SkScalar bounds[2]);
254
235 SkGlyphCache* fNext; 255 SkGlyphCache* fNext;
236 SkGlyphCache* fPrev; 256 SkGlyphCache* fPrev;
237 SkDescriptor* const fDesc; 257 SkDescriptor* const fDesc;
238 SkScalerContext* const fScalerContext; 258 SkScalerContext* const fScalerContext;
239 SkPaint::FontMetrics fFontMetrics; 259 SkPaint::FontMetrics fFontMetrics;
240 260
241 // Map from a combined GlyphID and sub-pixel position to a SkGlyph. 261 // Map from a combined GlyphID and sub-pixel position to a SkGlyph.
242 SkTHashTable<SkGlyph, PackedGlyphID, SkGlyph::HashTraits> fGlyphMap; 262 SkTHashTable<SkGlyph, PackedGlyphID, SkGlyph::HashTraits> fGlyphMap;
243 263
244 SkChunkAlloc fGlyphAlloc; 264 SkChunkAlloc fGlyphAlloc;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 const SkMatrix* matrix) { 335 const SkMatrix* matrix) {
316 fCache = paint.detachCache(surfaceProps, matrix, true); 336 fCache = paint.detachCache(surfaceProps, matrix, true);
317 } 337 }
318 338
319 private: 339 private:
320 SkAutoGlyphCacheNoGamma() : SkAutoGlyphCacheBase() {} 340 SkAutoGlyphCacheNoGamma() : SkAutoGlyphCacheBase() {}
321 }; 341 };
322 #define SkAutoGlyphCacheNoGamma(...) SK_REQUIRE_LOCAL_VAR(SkAutoGlyphCacheNoGamm a) 342 #define SkAutoGlyphCacheNoGamma(...) SK_REQUIRE_LOCAL_VAR(SkAutoGlyphCacheNoGamm a)
323 343
324 #endif 344 #endif
OLDNEW
« no previous file with comments | « src/core/SkGlyph.h ('k') | src/core/SkGlyphCache.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698