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

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

Issue 2439693002: MacViews: Use bullets for displaying obscured text. (Closed)
Patch Set: Make kPasswordReplacementChar static member of RenderText. Created 4 years, 1 month 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 #include "ui/gfx/render_text.h" 5 #include "ui/gfx/render_text.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <climits> 10 #include <climits>
(...skipping 27 matching lines...) Expand all
38 38
39 #if defined(OS_MACOSX) 39 #if defined(OS_MACOSX)
40 #include "third_party/skia/include/ports/SkTypeface_mac.h" 40 #include "third_party/skia/include/ports/SkTypeface_mac.h"
41 #include "ui/gfx/render_text_mac.h" 41 #include "ui/gfx/render_text_mac.h"
42 #endif // defined(OS_MACOSX) 42 #endif // defined(OS_MACOSX)
43 43
44 namespace gfx { 44 namespace gfx {
45 45
46 namespace { 46 namespace {
47 47
48 // All chars are replaced by this char when the password style is set.
49 // TODO(benrg): GTK uses the first of U+25CF, U+2022, U+2731, U+273A, '*'
50 // that's available in the font (find_invisible_char() in gtkentry.c).
51 const base::char16 kPasswordReplacementChar = '*';
52
53 // Default color used for the text and cursor. 48 // Default color used for the text and cursor.
54 const SkColor kDefaultColor = SK_ColorBLACK; 49 const SkColor kDefaultColor = SK_ColorBLACK;
55 50
56 // Default color used for drawing selection background. 51 // Default color used for drawing selection background.
57 const SkColor kDefaultSelectionBackgroundColor = SK_ColorGRAY; 52 const SkColor kDefaultSelectionBackgroundColor = SK_ColorGRAY;
58 53
59 // Fraction of the text size to lower a strike through below the baseline. 54 // Fraction of the text size to lower a strike through below the baseline.
60 const SkScalar kStrikeThroughOffset = (-SK_Scalar1 * 6 / 21); 55 const SkScalar kStrikeThroughOffset = (-SK_Scalar1 * 6 / 21);
61 // Fraction of the text size to lower an underline below the baseline. 56 // Fraction of the text size to lower an underline below the baseline.
62 const SkScalar kUnderlineOffset = (SK_Scalar1 / 9); 57 const SkScalar kUnderlineOffset = (SK_Scalar1 / 9);
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 paint->setAutohinted(params.autohinter); 418 paint->setAutohinted(params.autohinter);
424 paint->setHinting(FontRenderParamsHintingToSkPaintHinting(params.hinting)); 419 paint->setHinting(FontRenderParamsHintingToSkPaintHinting(params.hinting));
425 } 420 }
426 421
427 } // namespace internal 422 } // namespace internal
428 423
429 RenderText::~RenderText() { 424 RenderText::~RenderText() {
430 } 425 }
431 426
432 // static 427 // static
428 // TODO(benrg): GTK uses the first of U+25CF, U+2022, U+2731, U+273A, '*'
429 // that's available in the font (find_invisible_char() in gtkentry.c).
430 // Use a bullet character on Mac.
431 #if defined(OS_MACOSX)
432 const base::char16 RenderText::kPasswordReplacementChar = 0x2022;
433 #else
434 const base::char16 RenderText::kPasswordReplacementChar = '*';
435 #endif
436
437 // static
433 RenderText* RenderText::CreateInstance() { 438 RenderText* RenderText::CreateInstance() {
434 #if defined(OS_MACOSX) 439 #if defined(OS_MACOSX)
435 static const bool use_native = 440 static const bool use_native =
436 !base::CommandLine::ForCurrentProcess()->HasSwitch( 441 !base::CommandLine::ForCurrentProcess()->HasSwitch(
437 switches::kEnableHarfBuzzRenderText); 442 switches::kEnableHarfBuzzRenderText);
438 if (use_native) 443 if (use_native)
439 return new RenderTextMac; 444 return new RenderTextMac;
440 #endif // defined(OS_MACOSX) 445 #endif // defined(OS_MACOSX)
441 return new RenderTextHarfBuzz; 446 return new RenderTextHarfBuzz;
442 } 447 }
(...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after
1399 1404
1400 void RenderText::OnTextAttributeChanged() { 1405 void RenderText::OnTextAttributeChanged() {
1401 layout_text_.clear(); 1406 layout_text_.clear();
1402 display_text_.clear(); 1407 display_text_.clear();
1403 text_elided_ = false; 1408 text_elided_ = false;
1404 line_breaks_.SetMax(0); 1409 line_breaks_.SetMax(0);
1405 1410
1406 if (obscured_) { 1411 if (obscured_) {
1407 size_t obscured_text_length = 1412 size_t obscured_text_length =
1408 static_cast<size_t>(UTF16IndexToOffset(text_, 0, text_.length())); 1413 static_cast<size_t>(UTF16IndexToOffset(text_, 0, text_.length()));
1409 layout_text_.assign(obscured_text_length, kPasswordReplacementChar); 1414 layout_text_.assign(obscured_text_length,
1415 RenderText::kPasswordReplacementChar);
1410 1416
1411 if (obscured_reveal_index_ >= 0 && 1417 if (obscured_reveal_index_ >= 0 &&
1412 obscured_reveal_index_ < static_cast<int>(text_.length())) { 1418 obscured_reveal_index_ < static_cast<int>(text_.length())) {
1413 // Gets the index range in |text_| to be revealed. 1419 // Gets the index range in |text_| to be revealed.
1414 size_t start = obscured_reveal_index_; 1420 size_t start = obscured_reveal_index_;
1415 U16_SET_CP_START(text_.data(), 0, start); 1421 U16_SET_CP_START(text_.data(), 0, start);
1416 size_t end = start; 1422 size_t end = start;
1417 UChar32 unused_char; 1423 UChar32 unused_char;
1418 U16_NEXT(text_.data(), end, text_.length(), unused_char); 1424 U16_NEXT(text_.data(), end, text_.length(), unused_char);
1419 1425
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
1684 1690
1685 for (; range_max < length; ++range_max) 1691 for (; range_max < length; ++range_max)
1686 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max)) 1692 if (iter.IsEndOfWord(range_max) || iter.IsStartOfWord(range_max))
1687 break; 1693 break;
1688 1694
1689 return range.is_reversed() ? Range(range_max, range_min) 1695 return range.is_reversed() ? Range(range_max, range_min)
1690 : Range(range_min, range_max); 1696 : Range(range_min, range_max);
1691 } 1697 }
1692 1698
1693 } // namespace gfx 1699 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698