Blender V4.3
filter.cc File Reference
#include <cmath>
#include "MEM_guardedalloc.h"
#include "BLI_math_base.h"
#include "BLI_utildefines.h"
#include "IMB_filter.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "imbuf.hh"

Go to the source code of this file.

Functions

static void filtcolum (uchar *point, int y, int skip)
 
static void filtcolumf (float *point, int y, int skip)
 
void IMB_filtery (ImBuf *ibuf)
 
static void imb_filterN (ImBuf *out, ImBuf *in)
 
void IMB_mask_filter_extend (char *mask, int width, int height)
 
void IMB_mask_clear (ImBuf *ibuf, const char *mask, int val)
 
static int filter_make_index (const int x, const int y, const int w, const int h)
 
static int check_pixel_assigned (const void *buffer, const char *mask, const int index, const int depth, const bool is_float)
 
void IMB_filter_extend (ImBuf *ibuf, char *mask, int filter)
 
void IMB_remakemipmap (ImBuf *ibuf, int use_filter)
 
void IMB_makemipmap (ImBuf *ibuf, int use_filter)
 
ImBufIMB_getmipmap (ImBuf *ibuf, int level)
 
void IMB_premultiply_rect (uint8_t *rect, char planes, int w, int h)
 
void IMB_premultiply_rect_float (float *rect_float, int channels, int w, int h)
 
void IMB_premultiply_alpha (ImBuf *ibuf)
 
void IMB_unpremultiply_rect (uint8_t *rect, char planes, int w, int h)
 
void IMB_unpremultiply_rect_float (float *rect_float, int channels, int w, int h)
 
void IMB_unpremultiply_alpha (ImBuf *ibuf)
 

Function Documentation

◆ check_pixel_assigned()

static int check_pixel_assigned ( const void * buffer,
const char * mask,
const int index,
const int depth,
const bool is_float )
static

Definition at line 298 of file filter.cc.

Referenced by IMB_filter_extend().

◆ filtcolum()

static void filtcolum ( uchar * point,
int y,
int skip )
static

Definition at line 22 of file filter.cc.

References error(), and point.

Referenced by IMB_filtery().

◆ filtcolumf()

static void filtcolumf ( float * point,
int y,
int skip )
static

Definition at line 45 of file filter.cc.

References point.

Referenced by IMB_filtery().

◆ filter_make_index()

static int filter_make_index ( const int x,
const int y,
const int w,
const int h )
static

Definition at line 289 of file filter.cc.

References w(), x, and y.

Referenced by IMB_filter_extend().

◆ IMB_filter_extend()

void IMB_filter_extend ( ImBuf * ibuf,
char * mask,
int filter )

If alpha is zero, it checks surrounding pixels and averages color. sets new alphas to 1.0 When a mask is given, the mask will be used instead of the alpha channel, where only pixels with a mask value of 0 will be written to, and only pixels with a mask value of 1 will be used for the average. The mask will be set to one for the pixels which were written.

Definition at line 319 of file filter.cc.

References ImBuf::byte_buffer, check_pixel_assigned(), ImBufByteBuffer::data, ImBufFloatBuffer::data, filter(), filter_make_index(), FILTER_MASK_MARGIN, float, ImBuf::float_buffer, mask(), MEM_dupallocN, MEM_freeN(), sqrt(), ImBuf::x, x, ImBuf::y, and y.

Referenced by bake_ibuf_filter(), blender::render::texturemargin::generate_margin(), and RE_bake_margin().

◆ imb_filterN()

static void imb_filterN ( ImBuf * out,
ImBuf * in )
static

Definition at line 102 of file filter.cc.

References BLI_assert, and channels().

Referenced by IMB_makemipmap(), and IMB_remakemipmap().

◆ IMB_filtery()

◆ IMB_getmipmap()

ImBuf * IMB_getmipmap ( ImBuf * ibuf,
int level )

Definition at line 527 of file filter.cc.

References CLAMP, ImBuf::mipmap, and ImBuf::miptot.

◆ IMB_makemipmap()

void IMB_makemipmap ( ImBuf * ibuf,
int use_filter )

◆ IMB_mask_clear()

void IMB_mask_clear ( ImBuf * ibuf,
const char * mask,
int val )

◆ IMB_mask_filter_extend()

void IMB_mask_filter_extend ( char * mask,
int width,
int height )

Definition at line 219 of file filter.cc.

References FILTER_MASK_MARGIN, MEM_dupallocN, MEM_freeN(), x, and y.

◆ IMB_premultiply_alpha()

◆ IMB_premultiply_rect()

void IMB_premultiply_rect ( uint8_t * rect,
char planes,
int w,
int h )

Definition at line 533 of file filter.cc.

References w(), x, and y.

Referenced by IMB_premultiply_alpha().

◆ IMB_premultiply_rect_float()

void IMB_premultiply_rect_float ( float * rect_float,
int channels,
int w,
int h )

Definition at line 561 of file filter.cc.

References w(), x, and y.

Referenced by do_processor_transform_thread(), IMB_float_from_rect_ex(), and IMB_premultiply_alpha().

◆ IMB_remakemipmap()

void IMB_remakemipmap ( ImBuf * ibuf,
int use_filter )

Thread-safe version, only recreates existing maps.

Definition at line 454 of file filter.cc.

References ImBuf::flags, IMB_allocImBuf(), imb_filterN(), IMB_freeImBuf(), IMB_MIPMAP_LEVELS, imb_onehalf_no_alloc(), ImBuf::miplevel, ImBuf::mipmap, ImBuf::miptot, ImBuf::planes, ImBuf::x, and ImBuf::y.

Referenced by image_mipmap_test().

◆ IMB_unpremultiply_alpha()

◆ IMB_unpremultiply_rect()

void IMB_unpremultiply_rect ( uint8_t * rect,
char planes,
int w,
int h )

Definition at line 594 of file filter.cc.

References float, unit_float_to_uchar_clamp, w(), x, and y.

Referenced by IMB_unpremultiply_alpha().

◆ IMB_unpremultiply_rect_float()

void IMB_unpremultiply_rect_float ( float * rect_float,
int channels,
int w,
int h )

Definition at line 623 of file filter.cc.

References w(), x, and y.

Referenced by IMB_rect_from_float(), and IMB_unpremultiply_alpha().