Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
shell
platform
common
text_range.h
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
5
#ifndef FLUTTER_SHELL_PLATFORM_COMMON_TEXT_RANGE_H_
6
#define FLUTTER_SHELL_PLATFORM_COMMON_TEXT_RANGE_H_
7
8
#include <algorithm>
9
10
#include "flutter/fml/logging.h"
11
12
namespace
flutter
{
13
14
// A directional range of text.
15
//
16
// A |TextRange| describes a range of text with |base| and |extent| positions.
17
// In the case where |base| == |extent|, the range is said to be collapsed, and
18
// when |base| > |extent|, the range is said to be reversed.
19
class
TextRange
{
20
public
:
21
explicit
TextRange
(
size_t
position
) : base_(
position
), extent_(
position
) {}
22
explicit
TextRange
(
size_t
base
,
size_t
extent
)
23
: base_(
base
), extent_(
extent
) {}
24
TextRange
(
const
TextRange
&) =
default
;
25
TextRange
&
operator=
(
const
TextRange
&) =
default
;
26
27
virtual
~TextRange
() =
default
;
28
29
// The base position of the range.
30
size_t
base
()
const
{
return
base_; }
31
32
// Sets the base position of the range.
33
void
set_base
(
size_t
pos
) { base_ =
pos
; }
34
35
// The extent position of the range.
36
size_t
extent
()
const
{
return
extent_; }
37
38
// Sets the extent position of the range.
39
void
set_extent
(
size_t
pos
) { extent_ =
pos
; }
40
41
// The lesser of the base and extent positions.
42
size_t
start
()
const
{
return
std::min(base_, extent_); }
43
44
// Sets the start position of the range.
45
void
set_start
(
size_t
pos
) {
46
if
(base_ <= extent_) {
47
base_ =
pos
;
48
}
else
{
49
extent_ =
pos
;
50
}
51
}
52
53
// The greater of the base and extent positions.
54
size_t
end
()
const
{
return
std::max(base_, extent_); }
55
56
// Sets the end position of the range.
57
void
set_end
(
size_t
pos
) {
58
if
(base_ <= extent_) {
59
extent_ =
pos
;
60
}
else
{
61
base_ =
pos
;
62
}
63
}
64
65
// The position of a collapsed range.
66
//
67
// Asserts that the range is of length 0.
68
size_t
position
()
const
{
69
FML_DCHECK
(base_ == extent_);
70
return
extent_;
71
}
72
73
// The length of the range.
74
size_t
length
()
const
{
return
end
() -
start
(); }
75
76
// Returns true if the range is of length 0.
77
bool
collapsed
()
const
{
return
base_ == extent_; }
78
79
// Returns true if the base is greater than the extent.
80
bool
reversed
()
const
{
return
base_ > extent_; }
81
82
// Returns true if |position| is contained within the range.
83
bool
Contains
(
size_t
position
)
const
{
84
return
position
>=
start
() &&
position
<=
end
();
85
}
86
87
// Returns true if |range| is contained within the range.
88
bool
Contains
(
const
TextRange
& range)
const
{
89
return
range.
start
() >=
start
() && range.
end
() <=
end
();
90
}
91
92
bool
operator==
(
const
TextRange
& other)
const
{
93
return
base_ == other.base_ && extent_ == other.extent_;
94
}
95
96
private
:
97
size_t
base_;
98
size_t
extent_;
99
};
100
101
}
// namespace flutter
102
103
#endif
// FLUTTER_SHELL_PLATFORM_COMMON_TEXT_RANGE_H_
pos
SkPoint pos
Definition
ImageShaderTest.cpp:27
flutter::TextRange
Definition
text_range.h:19
flutter::TextRange::set_end
void set_end(size_t pos)
Definition
text_range.h:57
flutter::TextRange::reversed
bool reversed() const
Definition
text_range.h:80
flutter::TextRange::position
size_t position() const
Definition
text_range.h:68
flutter::TextRange::set_extent
void set_extent(size_t pos)
Definition
text_range.h:39
flutter::TextRange::set_base
void set_base(size_t pos)
Definition
text_range.h:33
flutter::TextRange::Contains
bool Contains(size_t position) const
Definition
text_range.h:83
flutter::TextRange::TextRange
TextRange(size_t position)
Definition
text_range.h:21
flutter::TextRange::start
size_t start() const
Definition
text_range.h:42
flutter::TextRange::base
size_t base() const
Definition
text_range.h:30
flutter::TextRange::TextRange
TextRange(const TextRange &)=default
flutter::TextRange::operator==
bool operator==(const TextRange &other) const
Definition
text_range.h:92
flutter::TextRange::operator=
TextRange & operator=(const TextRange &)=default
flutter::TextRange::collapsed
bool collapsed() const
Definition
text_range.h:77
flutter::TextRange::length
size_t length() const
Definition
text_range.h:74
flutter::TextRange::extent
size_t extent() const
Definition
text_range.h:36
flutter::TextRange::set_start
void set_start(size_t pos)
Definition
text_range.h:45
flutter::TextRange::TextRange
TextRange(size_t base, size_t extent)
Definition
text_range.h:22
flutter::TextRange::Contains
bool Contains(const TextRange &range) const
Definition
text_range.h:88
flutter::TextRange::end
size_t end() const
Definition
text_range.h:54
flutter::TextRange::~TextRange
virtual ~TextRange()=default
FML_DCHECK
#define FML_DCHECK(condition)
Definition
logging.h:103
base
Definition
ax_tree_id_registry.h:17
flutter
Definition
asset_manager.cc:10
Generated on Fri Apr 26 2024 06:14:23 for Flutter Engine by
1.9.8