Cleanup: remove unused image buffer code
This commit is contained in:
@@ -478,11 +478,6 @@ bool IMB_isfloat(struct ImBuf *ibuf);
|
|||||||
|
|
||||||
/* create char buffer, color corrected if necessary, for ImBufs that lack one */
|
/* create char buffer, color corrected if necessary, for ImBufs that lack one */
|
||||||
void IMB_rect_from_float(struct ImBuf *ibuf);
|
void IMB_rect_from_float(struct ImBuf *ibuf);
|
||||||
/* Create char buffer for part of the image, color corrected if necessary,
|
|
||||||
* Changed part will be stored in buffer.
|
|
||||||
* This is expected to be used for texture painting updates */
|
|
||||||
void IMB_partial_rect_from_float(
|
|
||||||
struct ImBuf *ibuf, float *buffer, int x, int y, int w, int h, bool is_data);
|
|
||||||
void IMB_float_from_rect(struct ImBuf *ibuf);
|
void IMB_float_from_rect(struct ImBuf *ibuf);
|
||||||
void IMB_color_to_bw(struct ImBuf *ibuf);
|
void IMB_color_to_bw(struct ImBuf *ibuf);
|
||||||
void IMB_saturation(struct ImBuf *ibuf, float sat);
|
void IMB_saturation(struct ImBuf *ibuf, float sat);
|
||||||
@@ -555,7 +550,6 @@ void IMB_buffer_byte_from_byte(unsigned char *rect_to,
|
|||||||
int height,
|
int height,
|
||||||
int stride_to,
|
int stride_to,
|
||||||
int stride_from);
|
int stride_from);
|
||||||
void IMB_buffer_float_clamp(float *buf, int width, int height);
|
|
||||||
void IMB_buffer_float_unpremultiply(float *buf, int width, int height);
|
void IMB_buffer_float_unpremultiply(float *buf, int width, int height);
|
||||||
void IMB_buffer_float_premultiply(float *buf, int width, int height);
|
void IMB_buffer_float_premultiply(float *buf, int width, int height);
|
||||||
|
|
||||||
|
@@ -758,118 +758,6 @@ void IMB_rect_from_float(ImBuf *ibuf)
|
|||||||
ibuf->userflags &= ~IB_RECT_INVALID;
|
ibuf->userflags &= ~IB_RECT_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct PartialThreadData {
|
|
||||||
ImBuf *ibuf;
|
|
||||||
float *buffer;
|
|
||||||
uchar *rect_byte;
|
|
||||||
const float *rect_float;
|
|
||||||
int width;
|
|
||||||
bool is_data;
|
|
||||||
} PartialThreadData;
|
|
||||||
|
|
||||||
static void partial_rect_from_float_slice(float *buffer,
|
|
||||||
uchar *rect_byte,
|
|
||||||
ImBuf *ibuf,
|
|
||||||
const float *rect_float,
|
|
||||||
const int w,
|
|
||||||
const int h,
|
|
||||||
const bool is_data)
|
|
||||||
{
|
|
||||||
const int profile_from = IB_PROFILE_LINEAR_RGB;
|
|
||||||
if (is_data) {
|
|
||||||
/* exception for non-color data, just copy float */
|
|
||||||
IMB_buffer_float_from_float(buffer,
|
|
||||||
rect_float,
|
|
||||||
ibuf->channels,
|
|
||||||
IB_PROFILE_LINEAR_RGB,
|
|
||||||
IB_PROFILE_LINEAR_RGB,
|
|
||||||
0,
|
|
||||||
w,
|
|
||||||
h,
|
|
||||||
w,
|
|
||||||
ibuf->x);
|
|
||||||
|
|
||||||
/* and do color space conversion to byte */
|
|
||||||
IMB_buffer_byte_from_float(rect_byte,
|
|
||||||
rect_float,
|
|
||||||
4,
|
|
||||||
ibuf->dither,
|
|
||||||
IB_PROFILE_SRGB,
|
|
||||||
profile_from,
|
|
||||||
true,
|
|
||||||
w,
|
|
||||||
h,
|
|
||||||
ibuf->x,
|
|
||||||
w);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
IMB_buffer_float_from_float(
|
|
||||||
buffer, rect_float, ibuf->channels, IB_PROFILE_SRGB, profile_from, true, w, h, w, ibuf->x);
|
|
||||||
|
|
||||||
IMB_buffer_float_unpremultiply(buffer, w, h);
|
|
||||||
/* XXX: need to convert to image buffer's rect space */
|
|
||||||
IMB_buffer_byte_from_float(
|
|
||||||
rect_byte, buffer, 4, ibuf->dither, IB_PROFILE_SRGB, IB_PROFILE_SRGB, 0, w, h, ibuf->x, w);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void partial_rect_from_float_thread_do(void *data_v, int start_scanline, int num_scanlines)
|
|
||||||
{
|
|
||||||
PartialThreadData *data = (PartialThreadData *)data_v;
|
|
||||||
ImBuf *ibuf = data->ibuf;
|
|
||||||
size_t global_offset = ((size_t)ibuf->x) * start_scanline;
|
|
||||||
size_t local_offset = ((size_t)data->width) * start_scanline;
|
|
||||||
partial_rect_from_float_slice(data->buffer + local_offset * ibuf->channels,
|
|
||||||
data->rect_byte + global_offset * 4,
|
|
||||||
ibuf,
|
|
||||||
data->rect_float + global_offset * ibuf->channels,
|
|
||||||
data->width,
|
|
||||||
num_scanlines,
|
|
||||||
data->is_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts from linear float to sRGB byte for part of the texture,
|
|
||||||
* buffer will hold the changed part.
|
|
||||||
*/
|
|
||||||
void IMB_partial_rect_from_float(
|
|
||||||
ImBuf *ibuf, float *buffer, int x, int y, int w, int h, bool is_data)
|
|
||||||
{
|
|
||||||
const float *rect_float;
|
|
||||||
uchar *rect_byte;
|
|
||||||
|
|
||||||
/* verify we have a float buffer */
|
|
||||||
if (ibuf->rect_float == NULL || buffer == NULL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create byte rect if it didn't exist yet */
|
|
||||||
if (ibuf->rect == NULL) {
|
|
||||||
imb_addrectImBuf(ibuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* do conversion */
|
|
||||||
rect_float = ibuf->rect_float + (x + ((size_t)y) * ibuf->x) * ibuf->channels;
|
|
||||||
rect_byte = (uchar *)ibuf->rect + (x + ((size_t)y) * ibuf->x) * 4;
|
|
||||||
|
|
||||||
if (((size_t)w) * h < 64 * 64) {
|
|
||||||
partial_rect_from_float_slice(buffer, rect_byte, ibuf, rect_float, w, h, is_data);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
PartialThreadData data;
|
|
||||||
data.ibuf = ibuf;
|
|
||||||
data.buffer = buffer;
|
|
||||||
data.rect_byte = rect_byte;
|
|
||||||
data.rect_float = rect_float;
|
|
||||||
data.width = w;
|
|
||||||
data.is_data = is_data;
|
|
||||||
IMB_processor_apply_threaded_scanlines(h, partial_rect_from_float_thread_do, &data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ensure user flag is reset */
|
|
||||||
ibuf->userflags &= ~IB_RECT_INVALID;
|
|
||||||
}
|
|
||||||
|
|
||||||
void IMB_float_from_rect(ImBuf *ibuf)
|
void IMB_float_from_rect(ImBuf *ibuf)
|
||||||
{
|
{
|
||||||
float *rect_float;
|
float *rect_float;
|
||||||
@@ -945,14 +833,6 @@ void IMB_color_to_bw(ImBuf *ibuf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IMB_buffer_float_clamp(float *buf, int width, int height)
|
|
||||||
{
|
|
||||||
size_t i, total = ((size_t)width) * height * 4;
|
|
||||||
for (i = 0; i < total; i++) {
|
|
||||||
buf[i] = min_ff(1.0, buf[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void IMB_buffer_float_unpremultiply(float *buf, int width, int height)
|
void IMB_buffer_float_unpremultiply(float *buf, int width, int height)
|
||||||
{
|
{
|
||||||
size_t total = ((size_t)width) * height;
|
size_t total = ((size_t)width) * height;
|
||||||
|
Reference in New Issue
Block a user