Index: cc/font_atlas.cc |
diff --git a/cc/font_atlas.cc b/cc/font_atlas.cc |
index d8294da8276076af6c7872eccb2b1d2cf6babe4a..8449e9a42e3b2ee6f8ae1ff1a41e2345b3b7aec4 100644 |
--- a/cc/font_atlas.cc |
+++ b/cc/font_atlas.cc |
@@ -60,6 +60,25 @@ void FontAtlas::drawOneLineOfTextInternal(SkCanvas* canvas, const SkPaint& paint |
} |
} |
+IntSize FontAtlas::textSize(const std::string& text) |
+{ |
+ int maxWidth = 0; |
+ std::vector<std::string> lines; |
+ base::SplitString(text, '\n', &lines); |
+ |
+ for (size_t i = 0; i < lines.size(); ++i) { |
+ int lineWidth = 0; |
+ for (size_t j = 0; j < lines[i].size(); ++j) { |
+ int asciiIndex = (lines[i][j] < 128) ? lines[i][j] : 0; |
+ lineWidth += m_asciiToRectTable[asciiIndex].width(); |
+ } |
+ if (lineWidth > maxWidth) |
+ maxWidth = lineWidth; |
+ } |
+ |
+ return IntSize(maxWidth, m_fontHeight * lines.size()); |
+} |
+ |
void FontAtlas::drawDebugAtlas(SkCanvas* canvas, const gfx::Point& destPosition) const |
{ |
DCHECK(Proxy::isImplThread()); |