Chromium Code Reviews| OLD | NEW |
|---|---|
| 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_mac.h" | 5 #include "ui/gfx/render_text_mac.h" |
| 6 | 6 |
| 7 #include <ApplicationServices/ApplicationServices.h> | 7 #include <ApplicationServices/ApplicationServices.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <cmath> | 10 #include <cmath> |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 87 return Range(); | 87 return Range(); |
| 88 } | 88 } |
| 89 | 89 |
| 90 std::vector<Rect> RenderTextMac::GetSubstringBounds(const Range& range) { | 90 std::vector<Rect> RenderTextMac::GetSubstringBounds(const Range& range) { |
| 91 // TODO(asvitkine): Implement this. http://crbug.com/131618 | 91 // TODO(asvitkine): Implement this. http://crbug.com/131618 |
| 92 return std::vector<Rect>(); | 92 return std::vector<Rect>(); |
| 93 } | 93 } |
| 94 | 94 |
| 95 size_t RenderTextMac::TextIndexToDisplayIndex(size_t index) { | 95 size_t RenderTextMac::TextIndexToDisplayIndex(size_t index) { |
| 96 // TODO(asvitkine): Implement this. http://crbug.com/131618 | 96 // TODO(asvitkine): Implement this. http://crbug.com/131618 |
| 97 return index; | 97 return std::min(index, GetDisplayText().size()); |
| 98 } | 98 } |
| 99 | 99 |
| 100 size_t RenderTextMac::DisplayIndexToTextIndex(size_t index) { | 100 size_t RenderTextMac::DisplayIndexToTextIndex(size_t index) { |
| 101 // TODO(asvitkine): Implement this. http://crbug.com/131618 | 101 // TODO(asvitkine): Implement this. http://crbug.com/131618 |
| 102 return index; | 102 return index; |
| 103 } | 103 } |
| 104 | 104 |
| 105 bool RenderTextMac::IsValidCursorIndex(size_t index) { | 105 bool RenderTextMac::IsValidCursorIndex(size_t index) { |
| 106 // TODO(asvitkine): Implement this. http://crbug.com/131618 | 106 // TODO(asvitkine): Implement this. http://crbug.com/131618 |
| 107 return IsValidLogicalIndex(index); | 107 return IsValidLogicalIndex(index); |
| 108 } | 108 } |
| 109 | 109 |
| 110 void RenderTextMac::OnLayoutTextAttributeChanged(bool text_changed) { | 110 void RenderTextMac::OnLayoutTextAttributeChanged(bool text_changed) { |
| 111 DCHECK(!multiline()) << "RenderTextMac does not support multi line"; | 111 DCHECK(!multiline()) << "RenderTextMac does not support multi line"; |
| 112 if (text_changed) { | 112 if (text_changed) { |
| 113 if (elide_behavior() != NO_ELIDE && | 113 if (elide_behavior() != NO_ELIDE && |
| 114 elide_behavior() != FADE_TAIL && | 114 elide_behavior() != FADE_TAIL && |
| 115 !layout_text().empty()) { | 115 !layout_text().empty()) { |
| 116 UpdateDisplayText(GetContentWidth()); | 116 UpdateDisplayText(GetContentWidth()); |
|
tapted
2015/03/03 08:11:21
Gosh this is hard to explain :/
But, I think the
Jun Mukai
2015/03/03 08:34:00
I believe this is not a problem, it looks like cyc
tapted
2015/03/03 09:30:32
I think it is cyclic. But feels like it isn't beca
Jun Mukai
2015/03/04 08:33:23
You're right! Sorry for my previous comment.
So, G
oshima
2015/03/04 10:17:21
FYI: This is cyclic by nature because you use the
Jun Mukai
2015/03/05 00:33:52
The latest patchset does that thing -- separating
| |
| 117 } else { | 117 } else { |
| 118 UpdateDisplayText(0); | 118 UpdateDisplayText(0); |
| 119 } | 119 } |
| 120 } | 120 } |
| 121 line_.reset(); | 121 line_.reset(); |
| 122 attributes_.reset(); | 122 attributes_.reset(); |
| 123 runs_.clear(); | 123 runs_.clear(); |
| 124 runs_valid_ = false; | 124 runs_valid_ = false; |
| 125 } | 125 } |
| 126 | 126 |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 141 const void* values[] = { ct_font }; | 141 const void* values[] = { ct_font }; |
| 142 base::ScopedCFTypeRef<CFDictionaryRef> attributes( | 142 base::ScopedCFTypeRef<CFDictionaryRef> attributes( |
| 143 CFDictionaryCreate(NULL, | 143 CFDictionaryCreate(NULL, |
| 144 keys, | 144 keys, |
| 145 values, | 145 values, |
| 146 arraysize(keys), | 146 arraysize(keys), |
| 147 NULL, | 147 NULL, |
| 148 &kCFTypeDictionaryValueCallBacks)); | 148 &kCFTypeDictionaryValueCallBacks)); |
| 149 | 149 |
| 150 base::ScopedCFTypeRef<CFStringRef> cf_text( | 150 base::ScopedCFTypeRef<CFStringRef> cf_text( |
| 151 base::SysUTF16ToCFStringRef(text())); | 151 base::SysUTF16ToCFStringRef(GetDisplayText())); |
| 152 base::ScopedCFTypeRef<CFAttributedStringRef> attr_text( | 152 base::ScopedCFTypeRef<CFAttributedStringRef> attr_text( |
| 153 CFAttributedStringCreate(NULL, cf_text, attributes)); | 153 CFAttributedStringCreate(NULL, cf_text, attributes)); |
| 154 base::ScopedCFTypeRef<CFMutableAttributedStringRef> attr_text_mutable( | 154 base::ScopedCFTypeRef<CFMutableAttributedStringRef> attr_text_mutable( |
| 155 CFAttributedStringCreateMutableCopy(NULL, 0, attr_text)); | 155 CFAttributedStringCreateMutableCopy(NULL, 0, attr_text)); |
| 156 | 156 |
| 157 // TODO(asvitkine|msw): Respect GetTextDirection(), which may not match the | 157 // TODO(asvitkine|msw): Respect GetTextDirection(), which may not match the |
| 158 // natural text direction. See kCTTypesetterOptionForcedEmbeddingLevel, etc. | 158 // natural text direction. See kCTTypesetterOptionForcedEmbeddingLevel, etc. |
| 159 | 159 |
| 160 ApplyStyles(attr_text_mutable, ct_font); | 160 ApplyStyles(attr_text_mutable, ct_font); |
| 161 line_.reset(CTLineCreateWithAttributedString(attr_text_mutable)); | 161 line_.reset(CTLineCreateWithAttributedString(attr_text_mutable)); |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 358 CTUnderlineStyle value = kCTUnderlineStyleNone; | 358 CTUnderlineStyle value = kCTUnderlineStyleNone; |
| 359 if (underline && CFNumberGetValue(underline, kCFNumberSInt32Type, &value)) | 359 if (underline && CFNumberGetValue(underline, kCFNumberSInt32Type, &value)) |
| 360 run->underline = (value == kCTUnderlineStyleSingle); | 360 run->underline = (value == kCTUnderlineStyleSingle); |
| 361 | 361 |
| 362 run_origin.offset(run_width, 0); | 362 run_origin.offset(run_width, 0); |
| 363 } | 363 } |
| 364 runs_valid_ = true; | 364 runs_valid_ = true; |
| 365 } | 365 } |
| 366 | 366 |
| 367 } // namespace gfx | 367 } // namespace gfx |
| OLD | NEW |