37template<
void (*pixel_processor)(
float dst[3], const
float src[3])>
47 pixel_processor(rgb, rgb);
51 pixel_processor(rgba, rgba);
56 if (rgba[3] == 1.0f || rgba[3] == 0.0f) {
57 pixel_processor(rgba, rgba);
61 const float alpha = rgba[3];
62 const float inv_alpha = 1.0f / alpha;
68 pixel_processor(rgba, rgba);
86 float *pixels =
static_cast<float *
>(image.
get_data());
88 for (
size_t y = 0;
y < height;
y++) {
89 for (
size_t x = 0;
x < width;
x++) {
90 float *pixel = pixels + num_channels * (
y * width +
x);
91 pixel_processor(pixel, pixel);
104 if (num_channels < 4) {
112 float *pixels =
static_cast<float *
>(image.
get_data());
114 for (
size_t y = 0;
y < height;
y++) {
115 for (
size_t x = 0;
x < width;
x++) {
116 float *pixel = pixels + num_channels * (
y * width +
x);
void apply_rgba_predivide(float rgba[4]) const override
void apply(const PackedImage &image) const override
void apply_predivide(const PackedImage &image) const override
void apply_rgb(float rgb[3]) const override
void apply_rgba(float rgba[4]) const override
bool is_noop() const override
void apply_rgba(float[4]) const override
bool is_noop() const override
void apply(const PackedImage &) const override
void apply_rgb(float[3]) const override
void apply_predivide(const PackedImage &) const override
void apply_rgba_predivide(float[4]) const override
size_t get_num_channels() const
size_t get_height() const
BitDepth get_bit_depth() const
FallbackCustomCPUProcessor< linearrgb_to_srgb_v3_v3 > FallbackLinearRGBToSRGBCPUProcessor
FallbackCustomCPUProcessor< srgb_to_linearrgb_v3_v3 > FallbackSRGBToLinearRGBCPUProcessor