Chromium Code Reviews| Index: ui/gfx/text_elider.h |
| diff --git a/ui/gfx/text_elider.h b/ui/gfx/text_elider.h |
| index 4eaca828c7dd84780b625907e97ff44067d4aa89..165421e39816a82dc4757d80797c01c9f96faa96 100644 |
| --- a/ui/gfx/text_elider.h |
| +++ b/ui/gfx/text_elider.h |
| @@ -29,6 +29,39 @@ class FontList; |
| GFX_EXPORT extern const char kEllipsis[]; |
| GFX_EXPORT extern const base::char16 kEllipsisUTF16[]; |
| + |
| +// Helper class to split + elide text, while respecting UTF16 surrogate pairs. |
| +class StringSlicer { |
| + public: |
| + StringSlicer(const base::string16& text, |
| + const base::string16& ellipsis, |
| + bool elide_in_middle); |
| + |
| + // Cuts |text_| to be |length| characters long. If |elide_in_middle_| is true, |
| + // the middle of the string is removed to leave equal-length pieces from the |
| + // beginning and end of the string; otherwise, the end of the string is |
| + // removed and only the beginning remains. If |insert_ellipsis| is true, |
| + // then an ellipsis character will be inserted at the cut point. |
| + base::string16 CutString(size_t length, bool insert_ellipsis); |
| + |
| + private: |
| + // Returns a valid cut boundary at or before/after |index|. |
| + size_t FindValidBoundaryBefore(size_t index) const; |
| + |
|
msw
2013/12/12 19:28:29
nit: remove blank line
Anuj
2013/12/13 01:23:50
Done.
|
| + size_t FindValidBoundaryAfter(size_t index) const; |
| + |
| + // The text to be sliced. |
| + const base::string16& text_; |
| + |
| + // Ellipsis string to use. |
| + const base::string16& ellipsis_; |
| + |
| + // If true, the middle of the string will be elided. |
| + bool elide_in_middle_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(StringSlicer); |
| +}; |
| + |
| // Elides a well-formed email address (e.g. username@domain.com) to fit into |
| // |available_pixel_width| using the specified |font_list|. |
| // This function guarantees that the string returned will contain at least one |
| @@ -68,7 +101,9 @@ enum ElideBehavior { |
| // Add ellipsis in the middle of the string. |
| ELIDE_IN_MIDDLE, |
| // Truncate the end of the string. |
| - TRUNCATE_AT_END |
| + TRUNCATE_AT_END, |
| + // No eliding of the string. |
| + NO_ELIDE |
| }; |
| // Elides |text| to fit in |available_pixel_width| according to the specified |