Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
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
9
21
22#include <cstdint>
23#include <utility>
24
25bool SkTableColorFilter::appendStages(const SkStageRec& rec, bool shaderIsOpaque) const {
27 if (!shaderIsOpaque) {
28 p->append(SkRasterPipelineOp::unpremul);
29 }
30
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
48
49sk_sp<SkFlattenable> SkTableColorFilter::CreateProc(SkReadBuffer& buffer) {
51}
52
53///////////////////////////////////////////////////////////////////////////////
54
58
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
67 if (!table) {
68 return nullptr;
69 }
70 return sk_make_sp<SkTableColorFilter>(std::move(table));
71}
72
75 // Previous name
76 SkFlattenable::Register("SkTable_ColorFilter", SkTableColorFilter::CreateProc);
77}
#define SK_REGISTER_FLATTENABLE(type)
void SkRegisterTableColorFilterFlattenable()
SI F table(const skcms_Curve *curve, F v)
auto make(Ctor &&ctor) -> decltype(ctor(nullptr))
static sk_sp< SkColorFilter > Table(const uint8_t table[256])
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])
void flatten(SkWriteBuffer &buffer) const
const uint8_t * redTable() const
const uint8_t * alphaTable() const
static sk_sp< SkColorTable > Make(const uint8_t table[256])
static sk_sp< SkColorTable > Deserialize(SkReadBuffer &buffer)
const uint8_t * greenTable() const
const uint8_t * blueTable() const
static void Register(const char name[], Factory)
void flatten(SkWriteBuffer &buffer) const override
bool appendStages(const SkStageRec &rec, bool shaderIsOpaque) const override
static const uint8_t buffer[]
SkRasterPipeline * fPipeline
SkArenaAlloc * fAlloc