summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp')
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp50
1 files changed, 34 insertions, 16 deletions
diff --git a/src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp b/src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp
index 9f17b0c..3c0d13b 100644
--- a/src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp
+++ b/src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp
@@ -1029,30 +1029,48 @@ bool InlineTextBox::containsCaretOffset(int offset) const
return true;
}
-typedef HashMap<InlineTextBox*, Vector<const SimpleFontData*> > FallbackFontsMap;
-static FallbackFontsMap* gFallbackFontsMap;
-
void InlineTextBox::setFallbackFonts(const HashSet<const SimpleFontData*>& fallbackFonts)
{
- if (!gFallbackFontsMap)
- gFallbackFontsMap = new FallbackFontsMap;
+ if (!s_glyphOverflowAndFallbackFontsMap)
+ s_glyphOverflowAndFallbackFontsMap = new GlyphOverflowAndFallbackFontsMap;
- FallbackFontsMap::iterator it = gFallbackFontsMap->set(this, Vector<const SimpleFontData*>()).first;
- ASSERT(it->second.isEmpty());
- copyToVector(fallbackFonts, it->second);
+ GlyphOverflowAndFallbackFontsMap::iterator it = s_glyphOverflowAndFallbackFontsMap->add(this, make_pair(Vector<const SimpleFontData*>(), GlyphOverflow())).first;
+ ASSERT(it->second.first.isEmpty());
+ copyToVector(fallbackFonts, it->second.first);
}
-void InlineTextBox::takeFallbackFonts(Vector<const SimpleFontData*>& fallbackFonts)
+Vector<const SimpleFontData*>* InlineTextBox::fallbackFonts() const
{
- if (!gFallbackFontsMap)
- return;
+ if (!s_glyphOverflowAndFallbackFontsMap)
+ return 0;
- FallbackFontsMap::iterator it = gFallbackFontsMap->find(this);
- if (it == gFallbackFontsMap->end())
- return;
+ GlyphOverflowAndFallbackFontsMap::iterator it = s_glyphOverflowAndFallbackFontsMap->find(this);
+ if (it == s_glyphOverflowAndFallbackFontsMap->end())
+ return 0;
+
+ return &it->second.first;
+}
+
+InlineTextBox::GlyphOverflowAndFallbackFontsMap* InlineTextBox::s_glyphOverflowAndFallbackFontsMap = 0;
+
+void InlineTextBox::setGlyphOverflow(const GlyphOverflow& glyphOverflow)
+{
+ if (!s_glyphOverflowAndFallbackFontsMap)
+ s_glyphOverflowAndFallbackFontsMap = new GlyphOverflowAndFallbackFontsMap;
+
+ GlyphOverflowAndFallbackFontsMap::iterator it = s_glyphOverflowAndFallbackFontsMap->add(this, make_pair(Vector<const SimpleFontData*>(), GlyphOverflow())).first;
+ it->second.second = glyphOverflow;
+}
+
+GlyphOverflow* InlineTextBox::glyphOverflow() const
+{
+ if (!s_glyphOverflowAndFallbackFontsMap)
+ return 0;
+ GlyphOverflowAndFallbackFontsMap::iterator it = s_glyphOverflowAndFallbackFontsMap->find(this);
+ if (it == s_glyphOverflowAndFallbackFontsMap->end())
+ return 0;
- fallbackFonts.swap(it->second);
- gFallbackFontsMap->remove(it);
+ return &it->second.second;
}
} // namespace WebCore