Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
src
text
StrikeForGPU.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2022 Google LLC
3
*
4
* Use of this source code is governed by a BSD-style license that can be
5
* found in the LICENSE file.
6
*/
7
8
#include "
src/text/StrikeForGPU.h
"
9
10
#include "
src/core/SkDescriptor.h
"
11
#include "
src/core/SkStrike.h
"
12
#include "
src/core/SkStrikeCache.h
"
13
#include "
src/core/SkStrikeSpec.h
"
14
15
#include <memory>
16
#include <utility>
17
18
namespace
sktext
{
19
// -- SkStrikePromise ------------------------------------------------------------------------------
20
SkStrikePromise::SkStrikePromise
(
sktext::SkStrikePromise
&&) =
default
;
21
SkStrikePromise&
SkStrikePromise::operator=
(
sktext::SkStrikePromise
&&) =
default
;
22
SkStrikePromise::SkStrikePromise
(
sk_sp<SkStrike>
&& strike)
23
: fStrikeOrSpec{
std
::move(strike)} {}
24
SkStrikePromise::SkStrikePromise
(
const
SkStrikeSpec
& spec)
25
: fStrikeOrSpec{
std
::make_unique<
SkStrikeSpec
>(spec)} {}
26
27
SkStrike
*
SkStrikePromise::strike
() {
28
if
(std::holds_alternative<std::unique_ptr<SkStrikeSpec>>(fStrikeOrSpec)) {
29
// Turn the strike spec into a strike.
30
std::unique_ptr<SkStrikeSpec> spec =
31
std::exchange(std::get<std::unique_ptr<SkStrikeSpec>>(fStrikeOrSpec),
nullptr
);
32
33
fStrikeOrSpec =
SkStrikeCache::GlobalStrikeCache
()->
findOrCreateStrike
(*spec);
34
}
35
return
std::get<sk_sp<SkStrike>>(fStrikeOrSpec).get();
36
}
37
38
void
SkStrikePromise::resetStrike
() {
39
fStrikeOrSpec =
sk_sp<SkStrike>
();
40
}
41
42
const
SkDescriptor
&
SkStrikePromise::descriptor
()
const
{
43
if
(std::holds_alternative<std::unique_ptr<SkStrikeSpec>>(fStrikeOrSpec)) {
44
return
std::get<std::unique_ptr<SkStrikeSpec>>(fStrikeOrSpec)->
descriptor
();
45
}
46
47
return
std::get<sk_sp<SkStrike>>(fStrikeOrSpec)->getDescriptor();
48
}
49
50
void
SkStrikePromise::flatten
(
SkWriteBuffer
&
buffer
)
const
{
51
this->
descriptor
().
flatten
(buffer);
52
}
53
54
// -- StrikeMutationMonitor ------------------------------------------------------------------------
55
StrikeMutationMonitor::StrikeMutationMonitor
(
StrikeForGPU
* strike)
56
: fStrike{strike} {
57
fStrike->
lock
();
58
}
59
60
StrikeMutationMonitor::~StrikeMutationMonitor
() {
61
fStrike->
unlock
();
62
}
63
}
// namespace sktext
SkDescriptor.h
SkStrikeCache.h
SkStrikeSpec.h
SkStrike.h
StrikeForGPU.h
SkDescriptor
Definition
SkDescriptor.h:24
SkDescriptor::flatten
void flatten(SkWriteBuffer &buffer) const
Definition
SkDescriptor.cpp:31
SkStrikeCache::findOrCreateStrike
sk_sp< SkStrike > findOrCreateStrike(const SkStrikeSpec &strikeSpec) SK_EXCLUDES(fLock)
Definition
SkStrikeCache.cpp:39
SkStrikeCache::GlobalStrikeCache
static SkStrikeCache * GlobalStrikeCache()
Definition
SkStrikeCache.cpp:30
SkStrikeSpec
Definition
SkStrikeSpec.h:39
SkStrike
Definition
SkStrike.cpp:60
SkWriteBuffer
Definition
SkWriteBuffer.h:41
sk_sp
Definition
SkRefCnt.h:220
sktext::SkStrikePromise
Definition
StrikeForGPU.h:39
sktext::SkStrikePromise::SkStrikePromise
SkStrikePromise()=delete
sktext::SkStrikePromise::strike
SkStrike * strike()
Definition
StrikeForGPU.cpp:27
sktext::SkStrikePromise::flatten
void flatten(SkWriteBuffer &buffer) const
Definition
StrikeForGPU.cpp:50
sktext::SkStrikePromise::descriptor
const SkDescriptor & descriptor() const
Definition
StrikeForGPU.cpp:42
sktext::SkStrikePromise::operator=
SkStrikePromise & operator=(const SkStrikePromise &)=delete
sktext::SkStrikePromise::resetStrike
void resetStrike()
Definition
StrikeForGPU.cpp:38
sktext::StrikeForGPU
Definition
StrikeForGPU.h:70
sktext::StrikeForGPU::unlock
virtual void unlock()=0
sktext::StrikeForGPU::lock
virtual void lock()=0
sktext::StrikeMutationMonitor::~StrikeMutationMonitor
~StrikeMutationMonitor()
Definition
StrikeForGPU.cpp:60
sktext::StrikeMutationMonitor::StrikeMutationMonitor
StrikeMutationMonitor(StrikeForGPU *strike)
Definition
StrikeForGPU.cpp:55
buffer
static const uint8_t buffer[]
Definition
fl_pixel_buffer_texture_test.cc:44
sktext
Definition
SkCanvas.h:45
std
Definition
ref_ptr.h:256
Generated on Fri Apr 26 2024 06:17:35 for Flutter Engine by
1.9.8