Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
modules
skplaintexteditor
src
word_boundaries.cpp
Go to the documentation of this file.
1
// Copyright 2019 Google LLC.
2
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
3
4
#include "
include/core/SkTypes.h
"
5
#include "
modules/skplaintexteditor/src/word_boundaries.h
"
6
#include "
modules/skunicode/include/SkUnicode.h
"
7
#include <memory>
8
9
#if defined(SK_UNICODE_ICU_IMPLEMENTATION)
10
#include "
modules/skunicode/include/SkUnicode_icu.h
"
11
#endif
12
13
#if defined(SK_UNICODE_LIBGRAPHEME_IMPLEMENTATION)
14
#include "
modules/skunicode/include/SkUnicode_libgrapheme.h
"
15
#endif
16
17
#if defined(SK_UNICODE_ICU4X_IMPLEMENTATION)
18
#include "
modules/skunicode/include/SkUnicode_icu4x.h
"
19
#endif
20
21
namespace
{
22
sk_sp<SkUnicode>
get_unicode
() {
23
#if defined(SK_UNICODE_ICU_IMPLEMENTATION)
24
if
(
auto
unicode =
SkUnicodes::ICU::Make
()) {
25
return
unicode
;
26
}
27
#endif
// defined(SK_UNICODE_ICU_IMPLEMENTATION)
28
#if defined(SK_UNICODE_LIBGRAPHEME_IMPLEMENTATION)
29
if
(
auto
unicode =
SkUnicodes::Libgrapheme::Make
()) {
30
return
unicode
;
31
}
32
#endif
33
#if defined(SK_UNICODE_ICU4X_IMPLEMENTATION)
34
if
(
auto
unicode =
SkUnicodes::ICU4X::Make
()) {
35
return
unicode
;
36
}
37
#endif
38
SkDEBUGFAIL
(
"Cannot make SkUnicode"
);
39
return
nullptr
;
40
}
41
}
42
43
std::vector<bool>
GetUtf8WordBoundaries
(
const
char
*
begin
,
size_t
byteCount,
const
char
* locale) {
44
auto
unicode =
get_unicode
();
45
if
(
nullptr
== unicode) {
46
return
{};
47
}
48
std::vector<SkUnicode::Position> positions;
49
if
(!unicode->getWords(
begin
, byteCount, locale, &positions) || byteCount == 0) {
50
return
{};
51
}
52
std::vector<bool>
result
;
53
result
.resize(byteCount);
54
for
(
auto
&
pos
: positions) {
55
result
[
pos
] =
true
;
56
}
57
return
result
;
58
}
pos
SkPoint pos
Definition
ImageShaderTest.cpp:27
SkDEBUGFAIL
#define SkDEBUGFAIL(message)
Definition
SkAssert.h:118
SkTypes.h
SkUnicode.h
SkUnicode_icu4x.h
SkUnicode_icu.h
SkUnicode_libgrapheme.h
sk_sp
Definition
SkRefCnt.h:220
begin
static const char * begin(const StringSlice &s)
Definition
editor.cpp:252
result
GAsyncResult * result
Definition
fl_text_input_plugin.cc:106
SkUnicodes::ICU4X::Make
SKUNICODE_API sk_sp< SkUnicode > Make()
Definition
SkUnicode_icu4x.cpp:406
SkUnicodes::ICU::Make
SKUNICODE_API sk_sp< SkUnicode > Make()
Definition
SkUnicode_icu.cpp:685
SkUnicodes::Libgrapheme::Make
SKUNICODE_API sk_sp< SkUnicode > Make()
Definition
SkUnicode_libgrapheme.cpp:300
gen_test_font.unicode
unicode
Definition
gen_test_font.py:247
get_unicode
static sk_sp< SkUnicode > get_unicode()
Definition
paragraph_bindings.cpp:54
GetUtf8WordBoundaries
std::vector< bool > GetUtf8WordBoundaries(const char *begin, size_t byteCount, const char *locale)
Definition
word_boundaries.cpp:43
word_boundaries.h
Generated on Fri Apr 26 2024 06:16:22 for Flutter Engine by
1.9.8