Flutter Engine
 
Loading...
Searching...
No Matches
line_metrics.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6
7namespace impeller::interop {
8
9LineMetrics::LineMetrics(const std::vector<txt::LineMetrics>& metrics) {
10 // There aren't any guarantees (documented or otherwise) that metrics will
11 // have line numbers that are sorted or contiguous.
12 for (const auto& metric : metrics) {
13 metrics_[metric.line_number] = metric;
14 }
15}
16
18
19double LineMetrics::GetAscent(size_t line) const {
20 return GetLine(line).ascent;
21}
22
23double LineMetrics::GetUnscaledAscent(size_t line) const {
24 return GetLine(line).unscaled_ascent;
25}
26
27double LineMetrics::GetDescent(size_t line) const {
28 return GetLine(line).descent;
29}
30
31double LineMetrics::GetBaseline(size_t line) const {
32 return GetLine(line).baseline;
33}
34
35bool LineMetrics::IsHardbreak(size_t line) const {
36 return GetLine(line).hard_break;
37}
38
39double LineMetrics::GetWidth(size_t line) const {
40 return GetLine(line).width;
41}
42
43double LineMetrics::GetHeight(size_t line) const {
44 return GetLine(line).height;
45}
46
47double LineMetrics::GetLeft(size_t line) const {
48 return GetLine(line).left;
49}
50
51size_t LineMetrics::GetCodeUnitStartIndex(size_t line) const {
52 return GetLine(line).start_index;
53}
54
55size_t LineMetrics::GetCodeUnitEndIndex(size_t line) const {
56 return GetLine(line).end_index;
57}
58
60 return GetLine(line).end_excluding_whitespace;
61}
62
64 return GetLine(line).end_including_newline;
65}
66
67const txt::LineMetrics& LineMetrics::GetLine(size_t line) const {
68 auto found = metrics_.find(line);
69 if (found != metrics_.end()) {
70 return found->second;
71 }
72 static txt::LineMetrics kDefaultMetrics = {};
73 return kDefaultMetrics;
74}
75
76} // namespace impeller::interop
double GetLeft(size_t line) const
size_t GetCodeUnitStartIndex(size_t line) const
double GetBaseline(size_t line) const
LineMetrics(const std::vector< txt::LineMetrics > &metrics)
double GetUnscaledAscent(size_t line) const
size_t GetCodeUnitEndIndexIncludingNewline(size_t line) const
double GetWidth(size_t line) const
double GetAscent(size_t line) const
bool IsHardbreak(size_t line) const
double GetHeight(size_t line) const
size_t GetCodeUnitEndIndex(size_t line) const
size_t GetCodeUnitEndIndexExcludingWhitespace(size_t line) const
double GetDescent(size_t line) const
size_t end_including_newline
size_t end_excluding_whitespace