5#ifndef FLUTTER_DISPLAY_LIST_EFFECTS_DL_COLOR_FILTER_H_
6#define FLUTTER_DISPLAY_LIST_EFFECTS_DL_COLOR_FILTER_H_
8#include "flutter/display_list/dl_attributes.h"
9#include "flutter/display_list/dl_blend_mode.h"
10#include "flutter/display_list/dl_color.h"
11#include "flutter/fml/logging.h"
15class DlBlendColorFilter;
16class DlMatrixColorFilter;
72 size_t size()
const override {
return sizeof(*this); }
77 std::shared_ptr<DlColorFilter>
shared()
const override {
78 return std::make_shared<DlBlendColorFilter>(
this);
90 return color_ == that->color_ && mode_ == that->mode_;
117 memcpy(matrix_, matrix,
sizeof(matrix_));
124 static std::shared_ptr<DlColorFilter>
Make(
const float matrix[20]);
127 size_t size()
const override {
return sizeof(*this); }
132 std::shared_ptr<DlColorFilter>
shared()
const override {
133 return std::make_shared<DlMatrixColorFilter>(
this);
138 const float&
operator[](
int index)
const {
return matrix_[index]; }
140 memcpy(matrix, matrix_,
sizeof(matrix_));
147 return memcmp(matrix_, that->matrix_,
sizeof(matrix_)) == 0;
158 static const std::shared_ptr<DlSrgbToLinearGammaColorFilter>
kInstance;
170 size_t size()
const override {
return sizeof(*this); }
190 static const std::shared_ptr<DlLinearToSrgbGammaColorFilter>
kInstance;
202 size_t size()
const override {
return sizeof(*this); }
virtual T type() const =0
bool equals_(DlColorFilter const &other) const override
static std::shared_ptr< DlColorFilter > Make(DlColor color, DlBlendMode mode)
DlBlendColorFilter(DlColor color, DlBlendMode mode)
bool can_commute_with_opacity() const override
const DlBlendColorFilter * asBlend() const override
DlBlendColorFilter(const DlBlendColorFilter *filter)
size_t size() const override
DlColorFilterType type() const override
std::shared_ptr< DlColorFilter > shared() const override
bool modifies_transparent_black() const override
DlBlendColorFilter(const DlBlendColorFilter &filter)
virtual const DlBlendColorFilter * asBlend() const
virtual const DlMatrixColorFilter * asMatrix() const
virtual bool modifies_transparent_black() const =0
virtual bool can_commute_with_opacity() const
size_t size() const override
std::shared_ptr< DlColorFilter > shared() const override
bool can_commute_with_opacity() const override
DlLinearToSrgbGammaColorFilter(const DlLinearToSrgbGammaColorFilter &filter)
bool equals_(const DlColorFilter &other) const override
DlLinearToSrgbGammaColorFilter()
DlColorFilterType type() const override
static const std::shared_ptr< DlLinearToSrgbGammaColorFilter > kInstance
DlLinearToSrgbGammaColorFilter(const DlLinearToSrgbGammaColorFilter *filter)
bool modifies_transparent_black() const override
DlColorFilterType type() const override
size_t size() const override
std::shared_ptr< DlColorFilter > shared() const override
DlMatrixColorFilter(const DlMatrixColorFilter &filter)
bool equals_(const DlColorFilter &other) const override
void get_matrix(float matrix[20]) const
DlMatrixColorFilter(const float matrix[20])
static std::shared_ptr< DlColorFilter > Make(const float matrix[20])
bool can_commute_with_opacity() const override
DlMatrixColorFilter(const DlMatrixColorFilter *filter)
const DlMatrixColorFilter * asMatrix() const override
bool modifies_transparent_black() const override
const float & operator[](int index) const
bool modifies_transparent_black() const override
static const std::shared_ptr< DlSrgbToLinearGammaColorFilter > kInstance
DlSrgbToLinearGammaColorFilter(const DlSrgbToLinearGammaColorFilter *filter)
std::shared_ptr< DlColorFilter > shared() const override
DlColorFilterType type() const override
DlSrgbToLinearGammaColorFilter()
size_t size() const override
bool can_commute_with_opacity() const override
DlSrgbToLinearGammaColorFilter(const DlSrgbToLinearGammaColorFilter &filter)
bool equals_(const DlColorFilter &other) const override
#define FML_DCHECK(condition)