Index: app/text_elider.cc |
=================================================================== |
--- app/text_elider.cc (revision 69274) |
+++ app/text_elider.cc (working copy) |
@@ -460,4 +460,41 @@ |
return display_url_.substr(slash_index + sort_host_.length()); |
} |
+bool ElideString(const std::wstring& input, int max_len, std::wstring* output) { |
+ DCHECK_GE(max_len, 0); |
+ if (static_cast<int>(input.length()) <= max_len) { |
+ output->assign(input); |
+ return false; |
+ } |
+ |
+ switch (max_len) { |
+ case 0: |
+ output->clear(); |
+ break; |
+ case 1: |
+ output->assign(input.substr(0, 1)); |
+ break; |
+ case 2: |
+ output->assign(input.substr(0, 2)); |
+ break; |
+ case 3: |
+ output->assign(input.substr(0, 1) + L"." + |
+ input.substr(input.length() - 1)); |
+ break; |
+ case 4: |
+ output->assign(input.substr(0, 1) + L".." + |
+ input.substr(input.length() - 1)); |
+ break; |
+ default: { |
+ int rstr_len = (max_len - 3) / 2; |
+ int lstr_len = rstr_len + ((max_len - 3) % 2); |
+ output->assign(input.substr(0, lstr_len) + L"..." + |
+ input.substr(input.length() - rstr_len)); |
+ break; |
+ } |
+ } |
+ |
+ return true; |
+} |
+ |
} // namespace gfx |