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

Side by Side Diff: Source/platform/fonts/shaping/HarfBuzzShaper.h

Issue 1239513004: Change fallback font collection in HarfBuzzShaper (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Kill _ALL_ the new lines Created 5 years, 5 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 class PLATFORM_EXPORT ShapeResult : public RefCounted<ShapeResult> { 54 class PLATFORM_EXPORT ShapeResult : public RefCounted<ShapeResult> {
55 public: 55 public:
56 ShapeResult(): m_width(0), m_numGlyphs(0) { } 56 ShapeResult(): m_width(0), m_numGlyphs(0) { }
57 ~ShapeResult(); 57 ~ShapeResult();
58 58
59 float width() { return m_width; } 59 float width() { return m_width; }
60 FloatRect bounds() { return m_glyphBoundingBox; } 60 FloatRect bounds() { return m_glyphBoundingBox; }
61 int offsetForPosition(float targetX); 61 int offsetForPosition(float targetX);
62 unsigned numCharacters() const { return m_numCharacters; } 62 unsigned numCharacters() const { return m_numCharacters; }
63 const HashSet<const SimpleFontData*>* fallbackFonts() const 63 void fallbackFonts(HashSet<const SimpleFontData*>*) const;
64 {
65 return &m_fallbackFonts;
66 }
67 64
68 static float fillGlyphBuffer(Vector<RefPtr<ShapeResult>>&, 65 static float fillGlyphBuffer(Vector<RefPtr<ShapeResult>>&,
69 GlyphBuffer*, const TextRun&, unsigned from, unsigned to); 66 GlyphBuffer*, const TextRun&, unsigned from, unsigned to);
70 static float fillGlyphBufferForTextEmphasis(Vector<RefPtr<ShapeResult>>&, 67 static float fillGlyphBufferForTextEmphasis(Vector<RefPtr<ShapeResult>>&,
71 GlyphBuffer*, const TextRun&, const GlyphData* emphasisData, 68 GlyphBuffer*, const TextRun&, const GlyphData* emphasisData,
72 unsigned from, unsigned to); 69 unsigned from, unsigned to);
73 static FloatRect selectionRect(Vector<RefPtr<ShapeResult>>&, 70 static FloatRect selectionRect(Vector<RefPtr<ShapeResult>>&,
74 TextDirection, float totalWidth, const FloatPoint&, int height, 71 TextDirection, float totalWidth, const FloatPoint&, int height,
75 unsigned from, unsigned to); 72 unsigned from, unsigned to);
76 73
(...skipping 10 matching lines...) Expand all
87 float fillGlyphBufferForRun(GlyphBuffer*, const RunInfo*, 84 float fillGlyphBufferForRun(GlyphBuffer*, const RunInfo*,
88 float initialAdvance, unsigned from, unsigned to, unsigned runOffset); 85 float initialAdvance, unsigned from, unsigned to, unsigned runOffset);
89 86
90 float fillGlyphBufferForTextEmphasisRun(GlyphBuffer*, const RunInfo*, 87 float fillGlyphBufferForTextEmphasisRun(GlyphBuffer*, const RunInfo*,
91 const TextRun&, const GlyphData*, float initialAdvance, 88 const TextRun&, const GlyphData*, float initialAdvance,
92 unsigned from, unsigned to, unsigned runOffset); 89 unsigned from, unsigned to, unsigned runOffset);
93 90
94 float m_width; 91 float m_width;
95 FloatRect m_glyphBoundingBox; 92 FloatRect m_glyphBoundingBox;
96 Vector<RunInfo*> m_runs; 93 Vector<RunInfo*> m_runs;
97 HashSet<const SimpleFontData*> m_fallbackFonts; 94 const SimpleFontData* m_primaryFont;
98 95
99 unsigned m_numCharacters; 96 unsigned m_numCharacters;
100 unsigned m_numGlyphs : 31; 97 unsigned m_numGlyphs : 31;
101 98
102 // Overall direction for the TextRun, dictates which order each individual 99 // Overall direction for the TextRun, dictates which order each individual
103 // sub run (represented by RunInfo structs in the m_runs vector) can have a 100 // sub run (represented by RunInfo structs in the m_runs vector) can have a
104 // different text direction. 101 // different text direction.
105 unsigned m_direction : 1; 102 unsigned m_direction : 1;
106 103
107 friend class HarfBuzzShaper; 104 friend class HarfBuzzShaper;
108 }; 105 };
109 106
110 class PLATFORM_EXPORT HarfBuzzShaper final : public Shaper { 107 class PLATFORM_EXPORT HarfBuzzShaper final : public Shaper {
111 public: 108 public:
112 HarfBuzzShaper(const Font*, const TextRun&, 109 HarfBuzzShaper(const Font*, const TextRun&);
113 HashSet<const SimpleFontData*>* fallbackFonts);
114 PassRefPtr<ShapeResult> shapeResult(); 110 PassRefPtr<ShapeResult> shapeResult();
115 ~HarfBuzzShaper() { } 111 ~HarfBuzzShaper() { }
116 112
117 private: 113 private:
118 class PLATFORM_EXPORT HarfBuzzRun { 114 class PLATFORM_EXPORT HarfBuzzRun {
119 public: 115 public:
120 HarfBuzzRun(const HarfBuzzRun&); 116 HarfBuzzRun(const HarfBuzzRun&);
121 ~HarfBuzzRun(); 117 ~HarfBuzzRun();
122 118
123 static PassOwnPtr<HarfBuzzRun> create(const SimpleFontData* fontData, un signed startIndex, unsigned numCharacters, hb_direction_t direction, hb_script_t script) 119 static PassOwnPtr<HarfBuzzRun> create(const SimpleFontData* fontData, un signed startIndex, unsigned numCharacters, hb_direction_t direction, hb_script_t script)
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 float m_letterSpacing; // Pixels to be added after each glyph. 156 float m_letterSpacing; // Pixels to be added after each glyph.
161 unsigned m_expansionOpportunityCount; 157 unsigned m_expansionOpportunityCount;
162 158
163 Vector<hb_feature_t, 4> m_features; 159 Vector<hb_feature_t, 4> m_features;
164 Vector<OwnPtr<HarfBuzzRun>, 16> m_harfBuzzRuns; 160 Vector<OwnPtr<HarfBuzzRun>, 16> m_harfBuzzRuns;
165 }; 161 };
166 162
167 } // namespace blink 163 } // namespace blink
168 164
169 #endif // HarfBuzzShaper_h 165 #endif // HarfBuzzShaper_h
OLDNEW
« no previous file with comments | « Source/platform/fonts/shaping/CachingWordShaperTest.cpp ('k') | Source/platform/fonts/shaping/HarfBuzzShaper.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698