diff options
Diffstat (limited to 'src/platform/graphics')
| -rw-r--r-- | src/platform/graphics/cairo/PangoTextLayout.cpp | 3 | ||||
| -rw-r--r-- | src/platform/graphics/direct2d/Font.cpp | 2 | ||||
| -rw-r--r-- | src/platform/graphics/direct2d/TextLayout.cpp | 26 | ||||
| -rw-r--r-- | src/platform/graphics/quartz/TextLayout.cpp | 28 |
4 files changed, 22 insertions, 37 deletions
diff --git a/src/platform/graphics/cairo/PangoTextLayout.cpp b/src/platform/graphics/cairo/PangoTextLayout.cpp index 25d9f85d..98ad4f45 100644 --- a/src/platform/graphics/cairo/PangoTextLayout.cpp +++ b/src/platform/graphics/cairo/PangoTextLayout.cpp @@ -165,8 +165,7 @@ TextHitTestResult PangoTextLayout::HitTest(const Point& point) { if (result.trailing) { Index position_with_trailing; - string::Utf8NextCodePoint(text_.data(), text_.size(), result.position, - &position_with_trailing); + string::Utf8NextCodePoint(text_, result.position, &position_with_trailing); result.position_with_trailing = position_with_trailing; } else { result.position_with_trailing = result.position; diff --git a/src/platform/graphics/direct2d/Font.cpp b/src/platform/graphics/direct2d/Font.cpp index 18a4a2c7..4e0a5e49 100644 --- a/src/platform/graphics/direct2d/Font.cpp +++ b/src/platform/graphics/direct2d/Font.cpp @@ -17,7 +17,7 @@ DWriteFont::DWriteFont(DirectGraphicsFactory* factory, std::string font_family, ::GetLastError(), "Failed to get locale when create dwrite font."); CheckHResult(factory->GetDWriteFactory()->CreateTextFormat( - string::ToUtf16(font_family_).c_str(), nullptr, DWRITE_FONT_WEIGHT_NORMAL, + string::ToUtf16WString(font_family_).c_str(), nullptr, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, font_size, buffer.data(), &text_format_)); diff --git a/src/platform/graphics/direct2d/TextLayout.cpp b/src/platform/graphics/direct2d/TextLayout.cpp index 3fc91616..18784ccb 100644 --- a/src/platform/graphics/direct2d/TextLayout.cpp +++ b/src/platform/graphics/direct2d/TextLayout.cpp @@ -13,7 +13,7 @@ DWriteTextLayout::DWriteTextLayout(DirectGraphicsFactory* factory, Expects(font); font_ = CheckPlatform<DWriteFont>(font, GetPlatformId()); - utf16_text_ = string::ToUtf16(text_); + utf16_text_ = string::ToUtf16WString(text_); CheckHResult(factory->GetDWriteFactory()->CreateTextLayout( utf16_text_.c_str(), static_cast<UINT32>(utf16_text_.size()), font_->GetComInterface(), max_width_, max_height_, &text_layout_)); @@ -25,7 +25,7 @@ std::string DWriteTextLayout::GetText() { return text_; } void DWriteTextLayout::SetText(std::string new_text) { text_ = std::move(new_text); - utf16_text_ = string::ToUtf16(text_); + utf16_text_ = string::ToUtf16WString(text_); CheckHResult(GetDirectFactory()->GetDWriteFactory()->CreateTextLayout( utf16_text_.c_str(), static_cast<UINT32>(utf16_text_.size()), font_->GetComInterface(), max_width_, max_height_, &text_layout_)); @@ -108,15 +108,11 @@ std::vector<Rect> DWriteTextLayout::TextRangeRect( const auto text_range = Range::FromTwoSides( string::Utf16IndexCodePointToCodeUnit( - reinterpret_cast<const char16_t*>(utf16_text_.data()), - utf16_text_.size(), - string::Utf8IndexCodeUnitToCodePoint(text_.data(), text_.size(), - text_range_arg.GetStart())), + utf16_text_, string::Utf8IndexCodeUnitToCodePoint( + text_, text_range_arg.GetStart())), string::Utf16IndexCodePointToCodeUnit( - reinterpret_cast<const char16_t*>(utf16_text_.data()), - utf16_text_.size(), - string::Utf8IndexCodeUnitToCodePoint(text_.data(), text_.size(), - text_range_arg.GetEnd()))) + utf16_text_, string::Utf8IndexCodeUnitToCodePoint( + text_, text_range_arg.GetEnd()))) .Normalize(); DWRITE_TEXT_METRICS text_metrics; @@ -147,9 +143,7 @@ std::vector<Rect> DWriteTextLayout::TextRangeRect( Rect DWriteTextLayout::TextSinglePoint(Index position, bool trailing) { position = string::Utf16IndexCodePointToCodeUnit( - reinterpret_cast<const char16_t*>(utf16_text_.data()), utf16_text_.size(), - string::Utf8IndexCodeUnitToCodePoint(text_.data(), text_.size(), - position)); + utf16_text_, string::Utf8IndexCodeUnitToCodePoint(text_, position)); DWRITE_HIT_TEST_METRICS metrics; FLOAT left; FLOAT top; @@ -169,10 +163,8 @@ TextHitTestResult DWriteTextLayout::HitTest(const Point& point) { TextHitTestResult result; result.position = string::Utf8IndexCodePointToCodeUnit( - text_.data(), text_.size(), - string::Utf16IndexCodeUnitToCodePoint( - reinterpret_cast<const char16_t*>(utf16_text_.data()), - utf16_text_.size(), metrics.textPosition)); + text_, + string::Utf16IndexCodeUnitToCodePoint(utf16_text_, metrics.textPosition)); result.trailing = trailing != 0; if (result.trailing) { diff --git a/src/platform/graphics/quartz/TextLayout.cpp b/src/platform/graphics/quartz/TextLayout.cpp index 4793a19c..80cb8a3f 100644 --- a/src/platform/graphics/quartz/TextLayout.cpp +++ b/src/platform/graphics/quartz/TextLayout.cpp @@ -238,28 +238,25 @@ TextHitTestResult OsxCTTextLayout::HitTest(const Point& point) { bool inside_text; if (pp.x < bounds.origin.x) { - po = cru::string::Utf8IndexCodePointToCodeUnit( - actual_text_.data(), actual_text_.size(), range.location); + po = cru::string::Utf8IndexCodePointToCodeUnit(actual_text_, + range.location); inside_text = false; } else if (pp.x > bounds.origin.x + bounds.size.width) { po = cru::string::Utf8IndexCodePointToCodeUnit( - actual_text_.data(), actual_text_.size(), - range.location + range.length); + actual_text_, range.location + range.length); inside_text = false; } else { int position = CTLineGetStringIndexForPosition( line, CGPointMake(pp.x - line_origins_[i].x, pp.y - line_origins_[i].y)); - po = cru::string::Utf8IndexCodePointToCodeUnit( - actual_text_.data(), actual_text_.size(), position); + po = cru::string::Utf8IndexCodePointToCodeUnit(actual_text_, position); inside_text = true; } if (po != 0 && po == cru::string::Utf8IndexCodePointToCodeUnit( - actual_text_.data(), actual_text_.size(), - range.location + range.length) && + actual_text_, range.location + range.length) && actual_text_[po - 1] == u'\n') { --po; } @@ -405,13 +402,11 @@ CGRect OsxCTTextLayout::DoGetTextBoundsIncludingEmptyLines( std::vector<CGRect> OsxCTTextLayout::DoTextRangeRect( const TextRange& text_range) { - const auto r = - Range::FromTwoSides( - cru::string::Utf8IndexCodeUnitToCodePoint( - actual_text_.data(), actual_text_.size(), text_range.position), - cru::string::Utf8IndexCodeUnitToCodePoint( - actual_text_.data(), actual_text_.size(), text_range.GetEnd())) - .Normalize(); + const auto r = Range::FromTwoSides(cru::string::Utf8IndexCodeUnitToCodePoint( + actual_text_, text_range.position), + cru::string::Utf8IndexCodeUnitToCodePoint( + actual_text_, text_range.GetEnd())) + .Normalize(); std::vector<CGRect> results; @@ -443,8 +438,7 @@ CGRect OsxCTTextLayout::DoTextSinglePoint(Index position, bool trailing) { if (actual_text_.empty()) return CGRectMake(0, 0, 0, font_->GetFontSize()); - position = cru::string::Utf8IndexCodeUnitToCodePoint( - actual_text_.data(), actual_text_.size(), position); + position = cru::string::Utf8IndexCodeUnitToCodePoint(actual_text_, position); for (int i = 0; i < line_count_; i++) { auto line = lines_[i]; |
