Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Unified Diff: ui/gfx/render_text.h

Issue 25039002: Always aligns text at vertically center (Textfield, Label). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Synced. Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/platform_font_pango.cc ('k') | ui/gfx/render_text.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/render_text.h
diff --git a/ui/gfx/render_text.h b/ui/gfx/render_text.h
index ce0a027b7a1607a39fc7cca89e6226609875cc2a..6d998de4472580ba3e72ff6cf0ecf4324d5f7ab8 100644
--- a/ui/gfx/render_text.h
+++ b/ui/gfx/render_text.h
@@ -167,11 +167,6 @@ class GFX_EXPORT RenderText {
}
void SetHorizontalAlignment(HorizontalAlignment alignment);
- VerticalAlignment vertical_alignment() const {
- return vertical_alignment_;
- }
- void SetVerticalAlignment(VerticalAlignment alignment);
-
const FontList& font_list() const { return font_list_; }
void SetFontList(const FontList& font_list);
void SetFont(const Font& font);
@@ -338,9 +333,11 @@ class GFX_EXPORT RenderText {
// mode). Reserves room for the cursor if |cursor_enabled_| is true.
int GetContentWidth();
- // Returns the common baseline of the text. The returned value is the vertical
- // offset from the top of |display_rect| to the text baseline, in pixels.
- virtual int GetBaseline() = 0;
+ // Returns the common baseline of the text. The return value is the vertical
+ // offset from the top of |display_rect_| to the text baseline, in pixels.
+ // The baseline is determined from the font list and display rect, and does
+ // not depend on the text.
+ int GetBaseline();
void Draw(Canvas* canvas);
@@ -398,6 +395,30 @@ class GFX_EXPORT RenderText {
const std::vector<internal::Line>& lines() const { return lines_; }
void set_lines(std::vector<internal::Line>* lines) { lines_.swap(*lines); }
+ // Returns the baseline of the current text. The return value depends on
+ // the text and its layout while the return value of GetBaseline() doesn't.
+ // GetAlignmentOffset() takes into account the difference between them.
+ //
+ // We'd like a RenderText to show the text always on the same baseline
+ // regardless of the text, so the text does not jump up or down depending
+ // on the text. However, underlying layout engines return different baselines
+ // depending on the text. In general, layout engines determine the minimum
+ // bounding box for the text and return the baseline from the top of the
+ // bounding box. So the baseline changes depending on font metrics used to
+ // layout the text.
+ //
+ // For example, suppose there are FontA and FontB and the baseline of FontA
+ // is smaller than the one of FontB. If the text is laid out only with FontA,
+ // then the baseline of FontA may be returned. If the text includes some
+ // characters which are laid out with FontB, then the baseline of FontB may
+ // be returned.
+ //
+ // GetBaseline() returns the fixed baseline regardless of the text.
+ // GetLayoutTextBaseline() returns the baseline determined by the underlying
+ // layout engine, and it changes depending on the text. GetAlignmentOffset()
+ // returns the difference between them.
+ virtual int GetLayoutTextBaseline() = 0;
+
const Vector2d& GetUpdatedDisplayOffset();
void set_cached_bounds_and_offset_valid(bool valid) {
@@ -542,10 +563,6 @@ class GFX_EXPORT RenderText {
// default is to align left if the application UI is LTR and right if RTL.
HorizontalAlignment horizontal_alignment_;
- // Vertical alignment of the text with respect to |display_rect_|. The
- // default is to align vertically centered.
- VerticalAlignment vertical_alignment_;
-
// The text directionality mode, defaults to DIRECTIONALITY_FROM_TEXT.
DirectionalityMode directionality_mode_;
@@ -631,6 +648,11 @@ class GFX_EXPORT RenderText {
// Get this point with GetUpdatedDisplayOffset (or risk using a stale value).
Vector2d display_offset_;
+ // The baseline of the text. This is determined from the height of the
+ // display area and the cap height of the font list so the text is vertically
+ // centered.
+ int baseline_;
+
// The cached bounds and offset are invalidated by changes to the cursor,
// selection, font, and other operations that adjust the visible text bounds.
bool cached_bounds_and_offset_valid_;
« no previous file with comments | « ui/gfx/platform_font_pango.cc ('k') | ui/gfx/render_text.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698