Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
src
effects
colorfilters
SkTableColorFilter.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2015 Google Inc.
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/effects/colorfilters/SkTableColorFilter.h
"
9
10
#include "
include/core/SkColorFilter.h
"
11
#include "
include/core/SkColorTable.h
"
12
#include "
include/core/SkFlattenable.h
"
13
#include "
include/core/SkRefCnt.h
"
14
#include "
include/core/SkTypes.h
"
15
#include "
src/base/SkArenaAlloc.h
"
16
#include "
src/core/SkEffectPriv.h
"
17
#include "
src/core/SkRasterPipeline.h
"
18
#include "
src/core/SkRasterPipelineOpContexts.h
"
19
#include "
src/core/SkRasterPipelineOpList.h
"
20
#include "
src/effects/colorfilters/SkColorFilterBase.h
"
21
22
#include <cstdint>
23
#include <utility>
24
25
bool
SkTableColorFilter::appendStages
(
const
SkStageRec
& rec,
bool
shaderIsOpaque)
const
{
26
SkRasterPipeline
* p = rec.
fPipeline
;
27
if
(!shaderIsOpaque) {
28
p->append(SkRasterPipelineOp::unpremul);
29
}
30
31
SkRasterPipeline_TablesCtx
* tables = rec.
fAlloc
->
make
<
SkRasterPipeline_TablesCtx
>();
32
tables->
a
= fTable->
alphaTable
();
33
tables->
r
= fTable->
redTable
();
34
tables->
g
= fTable->
greenTable
();
35
tables->
b
= fTable->
blueTable
();
36
p->append(SkRasterPipelineOp::byte_tables, tables);
37
38
bool
definitelyOpaque = shaderIsOpaque && tables->
a
[0xff] == 0xff;
39
if
(!definitelyOpaque) {
40
p->append(SkRasterPipelineOp::premul);
41
}
42
return
true
;
43
}
44
45
void
SkTableColorFilter::flatten
(
SkWriteBuffer
&
buffer
)
const
{
46
fTable->
flatten
(
buffer
);
47
}
48
49
sk_sp<SkFlattenable>
SkTableColorFilter::CreateProc(
SkReadBuffer
&
buffer
) {
50
return
SkColorFilters::Table
(
SkColorTable::Deserialize
(
buffer
));
51
}
52
53
///////////////////////////////////////////////////////////////////////////////
54
55
sk_sp<SkColorFilter>
SkColorFilters::Table
(
const
uint8_t
table
[256]) {
56
return
SkColorFilters::Table
(
SkColorTable::Make
(
table
));
57
}
58
59
sk_sp<SkColorFilter>
SkColorFilters::TableARGB
(
const
uint8_t tableA[256],
60
const
uint8_t tableR[256],
61
const
uint8_t tableG[256],
62
const
uint8_t tableB[256]) {
63
return
SkColorFilters::Table
(
SkColorTable::Make
(tableA, tableR, tableG, tableB));
64
}
65
66
sk_sp<SkColorFilter>
SkColorFilters::Table
(
sk_sp<SkColorTable>
table
) {
67
if
(!
table
) {
68
return
nullptr
;
69
}
70
return
sk_make_sp<SkTableColorFilter>(std::move(
table
));
71
}
72
73
void
SkRegisterTableColorFilterFlattenable
() {
74
SK_REGISTER_FLATTENABLE
(
SkTableColorFilter
);
75
// Previous name
76
SkFlattenable::Register
(
"SkTable_ColorFilter"
, SkTableColorFilter::CreateProc);
77
}
SkArenaAlloc.h
SkColorFilterBase.h
SkColorFilter.h
SkColorTable.h
SkEffectPriv.h
SkFlattenable.h
SK_REGISTER_FLATTENABLE
#define SK_REGISTER_FLATTENABLE(type)
Definition
SkFlattenable.h:105
SkRasterPipelineOpContexts.h
SkRasterPipelineOpList.h
SkRasterPipeline.h
SkRefCnt.h
SkRegisterTableColorFilterFlattenable
void SkRegisterTableColorFilterFlattenable()
Definition
SkTableColorFilter.cpp:73
SkTableColorFilter.h
SkTypes.h
table
SI F table(const skcms_Curve *curve, F v)
Definition
Transform_inl.h:604
SkArenaAlloc::make
auto make(Ctor &&ctor) -> decltype(ctor(nullptr))
Definition
SkArenaAlloc.h:120
SkColorFilters::Table
static sk_sp< SkColorFilter > Table(const uint8_t table[256])
Definition
SkTableColorFilter.cpp:55
SkColorFilters::TableARGB
static sk_sp< SkColorFilter > TableARGB(const uint8_t tableA[256], const uint8_t tableR[256], const uint8_t tableG[256], const uint8_t tableB[256])
Definition
SkTableColorFilter.cpp:59
SkColorTable::flatten
void flatten(SkWriteBuffer &buffer) const
Definition
SkColorTable.cpp:41
SkColorTable::redTable
const uint8_t * redTable() const
Definition
SkColorTable.h:42
SkColorTable::alphaTable
const uint8_t * alphaTable() const
Definition
SkColorTable.h:41
SkColorTable::Make
static sk_sp< SkColorTable > Make(const uint8_t table[256])
Definition
SkColorTable.h:29
SkColorTable::Deserialize
static sk_sp< SkColorTable > Deserialize(SkReadBuffer &buffer)
Definition
SkColorTable.cpp:45
SkColorTable::greenTable
const uint8_t * greenTable() const
Definition
SkColorTable.h:43
SkColorTable::blueTable
const uint8_t * blueTable() const
Definition
SkColorTable.h:44
SkFlattenable::Register
static void Register(const char name[], Factory)
Definition
SkFlattenable.cpp:91
SkRasterPipeline
Definition
SkRasterPipeline.h:68
SkReadBuffer
Definition
SkReadBuffer.h:52
SkTableColorFilter
Definition
SkTableColorFilter.h:22
SkTableColorFilter::flatten
void flatten(SkWriteBuffer &buffer) const override
Definition
SkTableColorFilter.cpp:45
SkTableColorFilter::appendStages
bool appendStages(const SkStageRec &rec, bool shaderIsOpaque) const override
Definition
SkTableColorFilter.cpp:25
SkWriteBuffer
Definition
SkWriteBuffer.h:41
sk_sp
Definition
SkRefCnt.h:220
buffer
static const uint8_t buffer[]
Definition
fl_pixel_buffer_texture_test.cc:44
SkRasterPipeline_TablesCtx
Definition
SkRasterPipelineOpContexts.h:201
SkRasterPipeline_TablesCtx::b
const uint8_t * b
Definition
SkRasterPipelineOpContexts.h:202
SkRasterPipeline_TablesCtx::a
const uint8_t * a
Definition
SkRasterPipelineOpContexts.h:202
SkRasterPipeline_TablesCtx::r
const uint8_t * r
Definition
SkRasterPipelineOpContexts.h:202
SkRasterPipeline_TablesCtx::g
const uint8_t * g
Definition
SkRasterPipelineOpContexts.h:202
SkStageRec
Definition
SkEffectPriv.h:20
SkStageRec::fPipeline
SkRasterPipeline * fPipeline
Definition
SkEffectPriv.h:21
SkStageRec::fAlloc
SkArenaAlloc * fAlloc
Definition
SkEffectPriv.h:22
Generated on Fri Apr 26 2024 06:16:54 for Flutter Engine by
1.9.8