Add Chromium-only Blender WebEngine parity work
This commit is contained in:
64
blender-5.2.0/source/blender/imbuf/intern/imageprocess.cc
Normal file
64
blender-5.2.0/source/blender/imbuf/intern/imageprocess.cc
Normal file
@@ -0,0 +1,64 @@
|
||||
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
|
||||
* SPDX-FileCopyrightText: 2024 Blender Authors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
/** \file
|
||||
* \ingroup imbuf
|
||||
*/
|
||||
|
||||
#include "BLI_math_vector.h"
|
||||
#include "BLI_task.hh"
|
||||
|
||||
#include "IMB_imbuf.hh"
|
||||
#include "IMB_imbuf_types.hh"
|
||||
|
||||
namespace blender {
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Alpha-under
|
||||
* \{ */
|
||||
|
||||
void IMB_alpha_under_color_float(float *rect_float, int x, int y, float backcol[3])
|
||||
{
|
||||
threading::parallel_for(IndexRange(int64_t(x) * y), 32 * 1024, [&](const IndexRange i_range) {
|
||||
float *pix = rect_float + i_range.first() * 4;
|
||||
for ([[maybe_unused]] const int i : i_range) {
|
||||
const float mul = 1.0f - pix[3];
|
||||
madd_v3_v3fl(pix, backcol, mul);
|
||||
pix[3] = 1.0f;
|
||||
pix += 4;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void IMB_alpha_under_color_byte(uchar *rect, int x, int y, const float backcol[3])
|
||||
{
|
||||
threading::parallel_for(IndexRange(int64_t(x) * y), 32 * 1024, [&](const IndexRange i_range) {
|
||||
uchar *pix = rect + i_range.first() * 4;
|
||||
for ([[maybe_unused]] const int i : i_range) {
|
||||
if (pix[3] == 255) {
|
||||
/* pass */
|
||||
}
|
||||
else if (pix[3] == 0) {
|
||||
pix[0] = backcol[0] * 255;
|
||||
pix[1] = backcol[1] * 255;
|
||||
pix[2] = backcol[2] * 255;
|
||||
}
|
||||
else {
|
||||
float alpha = pix[3] / 255.0;
|
||||
float mul = 1.0f - alpha;
|
||||
|
||||
pix[0] = (pix[0] * alpha) + mul * backcol[0];
|
||||
pix[1] = (pix[1] * alpha) + mul * backcol[1];
|
||||
pix[2] = (pix[2] * alpha) + mul * backcol[2];
|
||||
}
|
||||
pix[3] = 255;
|
||||
pix += 4;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
||||
} // namespace blender
|
||||
Reference in New Issue
Block a user