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

Side by Side Diff: third_party/WebKit/Source/platform/fonts/shaping/ShapeResultBuffer.h

Issue 2714413003: Remove GlyphBuffer (Closed)
Patch Set: format Created 3 years, 9 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ShapeResultBuffer_h 5 #ifndef ShapeResultBuffer_h
6 #define ShapeResultBuffer_h 6 #define ShapeResultBuffer_h
7 7
8 #include "platform/PlatformExport.h" 8 #include "platform/PlatformExport.h"
9 #include "platform/fonts/shaping/ShapeResult.h" 9 #include "platform/fonts/shaping/ShapeResult.h"
10 #include "wtf/Allocator.h" 10 #include "wtf/Allocator.h"
11 #include "wtf/RefPtr.h" 11 #include "wtf/RefPtr.h"
12 #include "wtf/Vector.h" 12 #include "wtf/Vector.h"
13 #include <tuple>
14 13
15 namespace blink { 14 namespace blink {
16 15
17 struct CharacterRange; 16 struct CharacterRange;
18 class FontDescription; 17 class FontDescription;
19 class GlyphBuffer;
20 struct GlyphData; 18 struct GlyphData;
19 class ShapeResultBloberizer;
21 class TextRun; 20 class TextRun;
21 struct TextRunPaintInfo;
22 22
23 class PLATFORM_EXPORT ShapeResultBuffer { 23 class PLATFORM_EXPORT ShapeResultBuffer {
24 WTF_MAKE_NONCOPYABLE(ShapeResultBuffer); 24 WTF_MAKE_NONCOPYABLE(ShapeResultBuffer);
25 STACK_ALLOCATED(); 25 STACK_ALLOCATED();
26 26
27 public: 27 public:
28 ShapeResultBuffer() : m_hasVerticalOffsets(false) {} 28 ShapeResultBuffer() : m_hasVerticalOffsets(false) {}
29 29
30 void appendResult(PassRefPtr<const ShapeResult> result) { 30 void appendResult(PassRefPtr<const ShapeResult> result) {
31 m_hasVerticalOffsets |= result->hasVerticalOffsets(); 31 m_hasVerticalOffsets |= result->hasVerticalOffsets();
32 m_results.push_back(result); 32 m_results.push_back(result);
33 } 33 }
34 34
35 bool hasVerticalOffsets() const { return m_hasVerticalOffsets; } 35 bool hasVerticalOffsets() const { return m_hasVerticalOffsets; }
36 36
37 float fillGlyphBuffer(GlyphBuffer*, 37 float fillGlyphs(const TextRunPaintInfo&, ShapeResultBloberizer&) const;
38 const TextRun&, 38 void fillTextEmphasisGlyphs(const TextRunPaintInfo&,
39 unsigned from, 39 const GlyphData& emphasisData,
40 unsigned to) const; 40 ShapeResultBloberizer&) const;
41 float fillGlyphBufferForTextEmphasis(GlyphBuffer*,
42 const TextRun&,
43 const GlyphData* emphasisData,
44 unsigned from,
45 unsigned to) const;
46 int offsetForPosition(const TextRun&, 41 int offsetForPosition(const TextRun&,
47 float targetX, 42 float targetX,
48 bool includePartialGlyphs) const; 43 bool includePartialGlyphs) const;
49 CharacterRange getCharacterRange(TextDirection, 44 CharacterRange getCharacterRange(TextDirection,
50 float totalWidth, 45 float totalWidth,
51 unsigned from, 46 unsigned from,
52 unsigned to) const; 47 unsigned to) const;
53 Vector<CharacterRange> individualCharacterRanges(TextDirection, 48 Vector<CharacterRange> individualCharacterRanges(TextDirection,
54 float totalWidth) const; 49 float totalWidth) const;
55 50
(...skipping 13 matching lines...) Expand all
69 GlyphData emphasisMarkGlyphData(const FontDescription&) const; 64 GlyphData emphasisMarkGlyphData(const FontDescription&) const;
70 65
71 private: 66 private:
72 static CharacterRange getCharacterRangeInternal( 67 static CharacterRange getCharacterRangeInternal(
73 const Vector<RefPtr<const ShapeResult>, 64>&, 68 const Vector<RefPtr<const ShapeResult>, 64>&,
74 TextDirection, 69 TextDirection,
75 float totalWidth, 70 float totalWidth,
76 unsigned from, 71 unsigned from,
77 unsigned to); 72 unsigned to);
78 73
79 float fillFastHorizontalGlyphBuffer(GlyphBuffer*, const TextRun&) const; 74 float fillFastHorizontalGlyphs(const TextRun&, ShapeResultBloberizer&) const;
80 75
81 static float fillGlyphBufferForResult(GlyphBuffer*, 76 static float fillGlyphsForResult(ShapeResultBloberizer&,
82 const ShapeResult&, 77 const ShapeResult&,
83 const TextRun&, 78 const TextRunPaintInfo&,
84 float initialAdvance, 79 float initialAdvance,
85 unsigned from, 80 unsigned runOffset);
86 unsigned to, 81 static float fillTextEmphasisGlyphsForRun(ShapeResultBloberizer&,
87 unsigned runOffset); 82 const ShapeResult::RunInfo*,
88 static float fillGlyphBufferForTextEmphasisRun(GlyphBuffer*, 83 const TextRunPaintInfo&,
89 const ShapeResult::RunInfo*, 84 const GlyphData&,
90 const TextRun&, 85 float initialAdvance,
91 const GlyphData*, 86 unsigned runOffset);
92 float initialAdvance,
93 unsigned from,
94 unsigned to,
95 unsigned runOffset);
96 87
97 static void addRunInfoRanges(const ShapeResult::RunInfo&, 88 static void addRunInfoRanges(const ShapeResult::RunInfo&,
98 float offset, 89 float offset,
99 Vector<CharacterRange>&); 90 Vector<CharacterRange>&);
100 91
101 // Empirically, cases where we get more than 50 ShapeResults are extremely 92 // Empirically, cases where we get more than 50 ShapeResults are extremely
102 // rare. 93 // rare.
103 Vector<RefPtr<const ShapeResult>, 64> m_results; 94 Vector<RefPtr<const ShapeResult>, 64> m_results;
104 bool m_hasVerticalOffsets; 95 bool m_hasVerticalOffsets;
105 }; 96 };
106 97
107 } // namespace blink 98 } // namespace blink
108 99
109 #endif // ShapeResultBuffer_h 100 #endif // ShapeResultBuffer_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698