| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_GFX_TEXT_CONSTANTS_H_ |
| #define UI_GFX_TEXT_CONSTANTS_H_ |
| |
| namespace gfx { |
| |
| // TODO(msw): Distinguish between logical character stops and glyph stops? |
| // TODO(msw): Merge with base::i18n::BreakIterator::BreakType. |
| enum BreakType { |
| CHARACTER_BREAK = 0, // Stop cursor movement on neighboring characters. |
| WORD_BREAK, // Stop cursor movement on nearest word boundaries. |
| LINE_BREAK, // Stop cursor movement on line ends as shown on screen. |
| FIELD_BREAK, // Stop cursor movement on text ends. |
| }; |
| |
| // Specifies the selection behavior for a move/move-and-select command. For |
| // example consider the state "ab|cd|e", i.e. cd is selected. Assume the |
| // selection direction is from left to right. If we move to the beginning of the |
| // line (LINE_BREAK, CURSOR_LEFT), the resultant state is: |
| // "|ab|cde" for SELECTION_RETAIN, selection direction from right to left. |
| // "|abcd|e" for SELECTION_EXTEND, selection direction from right to left. |
| // "ab|cde" for SELECTION_CARET. |
| // "|abcde" for SELECTION_NONE. |
| enum SelectionBehavior { |
| // Default behavior for a move-and-select command. The selection start point |
| // remains the same. For example, this is the behavior of textfields on Mac |
| // for the command moveUpAndModifySelection (Shift + Up). |
| SELECTION_RETAIN, |
| |
| // Use for move-and-select commands that want the existing selection to be |
| // extended in the opposite direction, when the selection direction is |
| // reversed. For example, this is the behavior for textfields on Mac for the |
| // command moveToLeftEndOfLineAndModifySelection (Command + Shift + Left). |
| SELECTION_EXTEND, |
| |
| // Use for move-and-select commands that want the existing selection to reduce |
| // to a caret, when the selection direction is reversed. For example, this is |
| // the behavior for textfields on Mac for the command |
| // moveWordLeftAndModifySelection (Alt + Shift + Left). |
| SELECTION_CARET, |
| |
| // No selection. To be used for move commands that don't want to cause a |
| // selection, and that want to collapse any pre-existing selection. |
| SELECTION_NONE, |
| }; |
| |
| // Specifies the word wrapping behavior when a word would exceed the available |
| // display width. All words that are too wide will be put on a new line, and |
| // then: |
| enum WordWrapBehavior { |
| IGNORE_LONG_WORDS, // Overflowing word text is left on that line. |
| TRUNCATE_LONG_WORDS, // Overflowing word text is truncated. |
| ELIDE_LONG_WORDS, // Overflowing word text is elided at the ellipsis. |
| WRAP_LONG_WORDS, // Overflowing word text is wrapped over multiple lines. |
| }; |
| |
| // Horizontal text alignment modes. |
| enum HorizontalAlignment { |
| ALIGN_LEFT = 0, // Align the text's left edge with that of its display area. |
| ALIGN_CENTER, // Align the text's center with that of its display area. |
| ALIGN_RIGHT, // Align the text's right edge with that of its display area. |
| ALIGN_TO_HEAD, // Align the text to its first strong character's direction. |
| }; |
| |
| // Vertical text alignment modes for multiline text. |
| enum VerticalAlignment { |
| ALIGN_TOP = 0, // Align the text's top edge with that of its display area. |
| ALIGN_MIDDLE, // Align the text's center with that of its display area. |
| ALIGN_BOTTOM, // Align the text's bottom edge with that of its display area. |
| }; |
| |
| // The directionality modes used to determine the base text direction. |
| enum DirectionalityMode { |
| DIRECTIONALITY_FROM_TEXT = 0, // Use the first strong character's direction. |
| DIRECTIONALITY_FROM_UI, // Use the UI locale's text reading direction. |
| DIRECTIONALITY_FORCE_LTR, // Use LTR regardless of content or UI locale. |
| DIRECTIONALITY_FORCE_RTL, // Use RTL regardless of content or UI locale. |
| // Note: Unless the experimental feature LeftToRightUrls is enabled, |
| // DIRECTIONALITY_AS_URL is the same as DIRECTIONALITY_FORCE_LTR. |
| DIRECTIONALITY_AS_URL, // FORCE_LTR with additional rules for URLs. |
| }; |
| |
| // Text styles and adornments. |
| // TODO(msw): Merge with gfx::Font::FontStyle. |
| enum TextStyle { |
| TEXT_STYLE_ITALIC = 0, |
| TEXT_STYLE_STRIKE, |
| TEXT_STYLE_UNDERLINE, |
| TEXT_STYLE_HEAVY_UNDERLINE, |
| |
| TEXT_STYLE_COUNT, |
| }; |
| |
| // Text baseline offset types. |
| // Figure of font metrics: |
| // +--------+--------+------------------------+-------------+ |
| // | | | internal leading | SUPERSCRIPT | |
| // | | +------------+-----------| | |
| // | | ascent | | SUPERIOR |-------------+ |
| // | height | | cap height |-----------| |
| // | | | | INFERIOR |-------------+ |
| // | |--------+------------+-----------| | |
| // | | descent | SUBSCRIPT | |
| // +--------+---------------------------------+-------------+ |
| enum BaselineStyle { |
| NORMAL_BASELINE = 0, |
| SUPERSCRIPT, // e.g. a mathematical exponent would be superscript. |
| SUPERIOR, // e.g. 8th, the "th" would be superior script. |
| INFERIOR, // e.g. 1/2, the "2" would be inferior ("1" is superior). |
| SUBSCRIPT, // e.g. H2O, the "2" would be subscript. |
| }; |
| |
| // Elision behaviors of text that exceeds constrained dimensions. |
| enum ElideBehavior { |
| NO_ELIDE = 0, // Do not modify the text, it may overflow its available bounds. |
| TRUNCATE, // Do not elide or fade, just truncate at the end of the string. |
| ELIDE_HEAD, // Add an ellipsis at the start of the string. |
| ELIDE_MIDDLE, // Add an ellipsis in the middle of the string. |
| ELIDE_TAIL, // Add an ellipsis at the end of the string. |
| ELIDE_EMAIL, // Add ellipses to username and domain substrings. |
| FADE_TAIL, // Fade the string's end opposite of its horizontal alignment. |
| }; |
| |
| } // namespace gfx |
| |
| #endif // UI_GFX_TEXT_CONSTANTS_H_ |