Blender  V2.93
Classes | Functions
imageprocess.c File Reference
#include <math.h>
#include <stdlib.h>
#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"

Go to the source code of this file.

Classes

struct  ScanlineGlobalData
 

Functions

void IMB_convert_rgba_to_abgr (struct ImBuf *ibuf)
 
static void pixel_from_buffer (struct ImBuf *ibuf, unsigned char **outI, float **outF, int x, int y)
 
Bi-Cubic Interpolation
void bicubic_interpolation_color (struct ImBuf *in, unsigned char outI[4], float outF[4], float u, float v)
 
void bicubic_interpolation (ImBuf *in, ImBuf *out, float u, float v, int xout, int yout)
 
Bi-Linear Interpolation
void bilinear_interpolation_color (struct ImBuf *in, unsigned char outI[4], float outF[4], float u, float v)
 
void bilinear_interpolation_color_wrap (struct ImBuf *in, unsigned char outI[4], float outF[4], float u, float v)
 
void bilinear_interpolation (ImBuf *in, ImBuf *out, float u, float v, int xout, int yout)
 
Nearest Interpolation
void nearest_interpolation_color (struct ImBuf *in, unsigned char outI[4], float outF[4], float u, float v)
 
void nearest_interpolation_color_wrap (struct ImBuf *in, unsigned char outI[4], float outF[4], float u, float v)
 
void nearest_interpolation (ImBuf *in, ImBuf *out, float u, float v, int xout, int yout)
 
Alpha-under
void IMB_alpha_under_color_float (float *rect_float, int x, int y, float backcol[3])
 
void IMB_alpha_under_color_byte (unsigned char *rect, int x, int y, const float backcol[3])
 
Sample Pixel
void IMB_sampleImageAtLocation (ImBuf *ibuf, float x, float y, bool make_linear_rgb, float color[4])
 

Threaded Image Processing

typedef struct ScanlineGlobalData ScanlineGlobalData
 
static void processor_apply_func (TaskPool *__restrict pool, void *taskdata)
 
void IMB_processor_apply_threaded (int buffer_lines, int handle_size, void *init_customdata, void(init_handle)(void *handle, int start_line, int tot_line, void *customdata), void *(do_thread)(void *))
 
static void processor_apply_scanline_func (TaskPool *__restrict pool, void *taskdata)
 
void IMB_processor_apply_threaded_scanlines (int total_scanlines, ScanlineThreadFunc do_thread, void *custom_data)
 

Detailed Description

This file was moved here from the src/ directory. It is meant to deal with endianness. It resided in a general blending lib. The other functions were only used during rendering. This single function remained. It should probably move to imbuf/intern/util.c, but we'll keep it here for the time being. (nzc)

Definition in file imageprocess.c.

Typedef Documentation

◆ ScanlineGlobalData

Function Documentation

◆ bicubic_interpolation()

void bicubic_interpolation ( struct ImBuf in,
struct ImBuf out,
float  u,
float  v,
int  xout,
int  yout 
)
Attention
defined in imageprocess.c

Definition at line 109 of file imageprocess.c.

References bicubic_interpolation_color(), NULL, pixel_from_buffer(), ImBuf::rect, ImBuf::rect_float, and v.

◆ bicubic_interpolation_color()

void bicubic_interpolation_color ( struct ImBuf in,
unsigned char  outI[4],
float  outF[4],
float  u,
float  v 
)

◆ bilinear_interpolation()

void bilinear_interpolation ( ImBuf in,
ImBuf out,
float  u,
float  v,
int  xout,
int  yout 
)

◆ bilinear_interpolation_color()

void bilinear_interpolation_color ( struct ImBuf in,
unsigned char  outI[4],
float  outF[4],
float  u,
float  v 
)

◆ bilinear_interpolation_color_wrap()

void bilinear_interpolation_color_wrap ( struct ImBuf in,
unsigned char  outI[4],
float  outF[4],
float  u,
float  v 
)

◆ IMB_alpha_under_color_byte()

void IMB_alpha_under_color_byte ( unsigned char *  rect,
int  x,
int  y,
const float  backcol[3] 
)

Definition at line 469 of file imageprocess.c.

References Freestyle::a, alpha, mul(), x, and y.

Referenced by IMB_colormanagement_imbuf_for_write().

◆ IMB_alpha_under_color_float()

void IMB_alpha_under_color_float ( float rect_float,
int  x,
int  y,
float  backcol[3] 
)

Definition at line 455 of file imageprocess.c.

References Freestyle::a, madd_v3_v3fl(), mul(), x, and y.

Referenced by IMB_colormanagement_imbuf_for_write().

◆ IMB_convert_rgba_to_abgr()

void IMB_convert_rgba_to_abgr ( struct ImBuf ibuf)

Change the ordering of the color bytes pointed to by rect from rgba to abgr. size * 4 color bytes are reordered.

Attention
Defined in imageprocess.c

Definition at line 45 of file imageprocess.c.

References if(), ImBuf::rect, ImBuf::rect_float, size(), ImBuf::x, and ImBuf::y.

Referenced by IMB_anim_absolute(), imb_loadiris(), imb_loadtarga(), imb_read_tiff_pixels(), and imb_saveiris().

◆ IMB_processor_apply_threaded()

void IMB_processor_apply_threaded ( int  buffer_lines,
int  handle_size,
void *  init_customdata,
void(init_handle)(void *handle, int start_line, int tot_line, void *customdata)  ,
void *  do_thread)(void * 
)

◆ IMB_processor_apply_threaded_scanlines()

void IMB_processor_apply_threaded_scanlines ( int  total_scanlines,
ScanlineThreadFunc  do_thread,
void *  custom_data 
)

◆ IMB_sampleImageAtLocation()

void IMB_sampleImageAtLocation ( ImBuf ibuf,
float  x,
float  y,
bool  make_linear_rgb,
float  color[4] 
)

◆ nearest_interpolation()

void nearest_interpolation ( ImBuf in,
ImBuf out,
float  u,
float  v,
int  xout,
int  yout 
)

◆ nearest_interpolation_color()

void nearest_interpolation_color ( struct ImBuf in,
unsigned char  outI[4],
float  outF[4],
float  u,
float  v 
)

◆ nearest_interpolation_color_wrap()

void nearest_interpolation_color_wrap ( struct ImBuf in,
unsigned char  outI[4],
float  outF[4],
float  u,
float  v 
)

Definition at line 298 of file imageprocess.c.

References floor(), ImBuf::rect, ImBuf::rect_float, v, x, ImBuf::x, y, and ImBuf::y.

Referenced by studiolight_calculate_radiance().

◆ pixel_from_buffer()

static void pixel_from_buffer ( struct ImBuf ibuf,
unsigned char **  outI,
float **  outF,
int  x,
int  y 
)
static

◆ processor_apply_func()

static void processor_apply_func ( TaskPool *__restrict  pool,
void *  taskdata 
)
static

Definition at line 356 of file imageprocess.c.

References BLI_task_pool_user_data(), and blender::compositor::pool.

Referenced by IMB_processor_apply_threaded().

◆ processor_apply_scanline_func()

static void processor_apply_scanline_func ( TaskPool *__restrict  pool,
void *  taskdata 
)
static