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

Side by Side Diff: ui/gfx/render_text.h

Issue 2348143003: MacViews: Implement Force Touch/Mac dictionary lookup for Textfields. (Closed)
Patch Set: Address review. Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_GFX_RENDER_TEXT_H_ 5 #ifndef UI_GFX_RENDER_TEXT_H_
6 #define UI_GFX_RENDER_TEXT_H_ 6 #define UI_GFX_RENDER_TEXT_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <algorithm> 11 #include <algorithm>
12 #include <cstring> 12 #include <cstring>
13 #include <memory> 13 #include <memory>
14 #include <string> 14 #include <string>
15 #include <utility> 15 #include <utility>
16 #include <vector> 16 #include <vector>
17 17
18 #include "base/gtest_prod_util.h" 18 #include "base/gtest_prod_util.h"
19 #include "base/i18n/rtl.h" 19 #include "base/i18n/rtl.h"
20 #include "base/macros.h" 20 #include "base/macros.h"
21 #include "base/strings/string16.h" 21 #include "base/strings/string16.h"
22 #include "third_party/skia/include/core/SkColor.h" 22 #include "third_party/skia/include/core/SkColor.h"
23 #include "third_party/skia/include/core/SkPaint.h" 23 #include "third_party/skia/include/core/SkPaint.h"
24 #include "third_party/skia/include/core/SkRefCnt.h" 24 #include "third_party/skia/include/core/SkRefCnt.h"
25 #include "ui/gfx/break_list.h" 25 #include "ui/gfx/break_list.h"
26 #include "ui/gfx/decorated_text.h"
26 #include "ui/gfx/font_list.h" 27 #include "ui/gfx/font_list.h"
27 #include "ui/gfx/font_render_params.h" 28 #include "ui/gfx/font_render_params.h"
28 #include "ui/gfx/geometry/point.h" 29 #include "ui/gfx/geometry/point.h"
29 #include "ui/gfx/geometry/rect.h" 30 #include "ui/gfx/geometry/rect.h"
30 #include "ui/gfx/geometry/size_f.h" 31 #include "ui/gfx/geometry/size_f.h"
31 #include "ui/gfx/geometry/vector2d.h" 32 #include "ui/gfx/geometry/vector2d.h"
32 #include "ui/gfx/range/range.h" 33 #include "ui/gfx/range/range.h"
33 #include "ui/gfx/range/range_f.h" 34 #include "ui/gfx/range/range_f.h"
34 #include "ui/gfx/selection_model.h" 35 #include "ui/gfx/selection_model.h"
35 #include "ui/gfx/shadow_value.h" 36 #include "ui/gfx/shadow_value.h"
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 // Rect can't have a negative width.) 491 // Rect can't have a negative width.)
491 virtual Range GetGlyphBounds(size_t index) = 0; 492 virtual Range GetGlyphBounds(size_t index) = 0;
492 493
493 const Vector2d& GetUpdatedDisplayOffset(); 494 const Vector2d& GetUpdatedDisplayOffset();
494 void SetDisplayOffset(int horizontal_offset); 495 void SetDisplayOffset(int horizontal_offset);
495 496
496 // Returns the line offset from the origin after applying the text alignment 497 // Returns the line offset from the origin after applying the text alignment
497 // and the display offset. 498 // and the display offset.
498 Vector2d GetLineOffset(size_t line_number); 499 Vector2d GetLineOffset(size_t line_number);
499 500
501 // Retreives the word displayed at the given |point| along with its styling
502 // information. |point| is in the view's coordinates. If no word is displayed
503 // at the point, returns a nearby word. |baseline_point| should correspond to
504 // the left baseline point of the leftmost glyph of the |word| in the view's
505 // coordinates. Returns false, if no word can be retreived.
506 bool GetDecoratedWordAtPoint(const Point& point,
507 DecoratedText* decorated_word,
508 Point* baseline_point);
509
510 // Retreives the text in the given |range|.
511 base::string16 GetTextFromRange(const Range& range) const;
512
500 protected: 513 protected:
501 RenderText(); 514 RenderText();
502 515
503 // NOTE: The value of these accessors may be stale. Please make sure 516 // NOTE: The value of these accessors may be stale. Please make sure
504 // that these fields are up to date before accessing them. 517 // that these fields are up to date before accessing them.
505 const base::string16& layout_text() const { return layout_text_; } 518 const base::string16& layout_text() const { return layout_text_; }
506 const base::string16& display_text() const { return display_text_; } 519 const base::string16& display_text() const { return display_text_; }
507 bool text_elided() const { return text_elided_; } 520 bool text_elided() const { return text_elided_; }
508 521
509 const BreakList<SkColor>& colors() const { return colors_; } 522 const BreakList<SkColor>& colors() const { return colors_; }
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 // Elides |email| as needed to fit the |available_width|. 719 // Elides |email| as needed to fit the |available_width|.
707 base::string16 ElideEmail(const base::string16& email, float available_width); 720 base::string16 ElideEmail(const base::string16& email, float available_width);
708 721
709 // Update the cached bounds and display offset to ensure that the current 722 // Update the cached bounds and display offset to ensure that the current
710 // cursor is within the visible display area. 723 // cursor is within the visible display area.
711 void UpdateCachedBoundsAndOffset(); 724 void UpdateCachedBoundsAndOffset();
712 725
713 // Draw the selection. 726 // Draw the selection.
714 void DrawSelection(Canvas* canvas); 727 void DrawSelection(Canvas* canvas);
715 728
729 // Returns the nearest word start boundary for |index|. First searches in the
730 // CURSOR_BACKWARD direction, then in the CURSOR_FORWARD direction. Returns
731 // the text length if no valid boundary is found.
732 size_t GetNearestWordStartBoundary(size_t index) const;
733
734 // Expands |range| to its nearest word boundaries and returns the resulting
735 // range. Maintains directionality of |range|.
736 Range ExpandRangeToWordBoundary(const Range& range) const;
737
738 // Returns the decorated text corresponding to |range|. Returns false if the
739 // text cannot be retreived, e.g. if the text is obscured.
740 virtual bool GetDecoratedTextForRange(
741 const Range& range,
742 DecoratedText* decorated_text) const = 0;
743
716 // Logical UTF-16 string data to be drawn. 744 // Logical UTF-16 string data to be drawn.
717 base::string16 text_; 745 base::string16 text_;
718 746
719 // Horizontal alignment of the text with respect to |display_rect_|. The 747 // Horizontal alignment of the text with respect to |display_rect_|. The
720 // default is to align left if the application UI is LTR and right if RTL. 748 // default is to align left if the application UI is LTR and right if RTL.
721 HorizontalAlignment horizontal_alignment_; 749 HorizontalAlignment horizontal_alignment_;
722 750
723 // The text directionality mode, defaults to DIRECTIONALITY_FROM_TEXT. 751 // The text directionality mode, defaults to DIRECTIONALITY_FROM_TEXT.
724 DirectionalityMode directionality_mode_; 752 DirectionalityMode directionality_mode_;
725 753
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 // Lines computed by EnsureLayout. These should be invalidated upon 878 // Lines computed by EnsureLayout. These should be invalidated upon
851 // OnLayoutTextAttributeChanged and OnDisplayTextAttributeChanged calls. 879 // OnLayoutTextAttributeChanged and OnDisplayTextAttributeChanged calls.
852 std::vector<internal::Line> lines_; 880 std::vector<internal::Line> lines_;
853 881
854 DISALLOW_COPY_AND_ASSIGN(RenderText); 882 DISALLOW_COPY_AND_ASSIGN(RenderText);
855 }; 883 };
856 884
857 } // namespace gfx 885 } // namespace gfx
858 886
859 #endif // UI_GFX_RENDER_TEXT_H_ 887 #endif // UI_GFX_RENDER_TEXT_H_
OLDNEW
« no previous file with comments | « ui/gfx/decorated_text.cc ('k') | ui/gfx/render_text.cc » ('j') | ui/gfx/render_text.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698