Blender V4.3
math_interp.cc File Reference
#include <cmath>
#include <cstring>
#include "BLI_math_base.h"
#include "BLI_math_base.hh"
#include "BLI_math_interp.hh"
#include "BLI_math_vector.h"
#include "BLI_math_vector_types.hh"
#include "BLI_simd.hh"
#include "BLI_strict_flags.h"

Go to the source code of this file.

Namespaces

namespace  blender
 
namespace  blender::math
 

Macros

#define EWA_MAXIDX   255
 

Enumerations

enum class  blender::math::eCubicFilter { blender::math::BSpline , blender::math::Mitchell }
 

Functions

template<enum eCubicFilter filter>
static float4 blender::math::cubic_filter_coefficients (float f)
 
template<typename T , eCubicFilter filter>
static void blender::math::bicubic_interpolation (const T *src_buffer, T *output, int width, int height, int components, float u, float v)
 
template<bool border>
BLI_INLINE void blender::math::bilinear_fl_impl (const float *buffer, float *output, int width, int height, int components, float u, float v, bool wrap_x=false, bool wrap_y=false)
 
template<bool border>
BLI_INLINE uchar4 blender::math::bilinear_byte_impl (const uchar *buffer, int width, int height, float u, float v)
 
uchar4 blender::math::interpolate_bilinear_border_byte (const uchar *buffer, int width, int height, float u, float v)
 
uchar4 blender::math::interpolate_bilinear_byte (const uchar *buffer, int width, int height, float u, float v)
 
float4 blender::math::interpolate_bilinear_border_fl (const float *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_bilinear_border_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
 
float4 blender::math::interpolate_bilinear_fl (const float *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_bilinear_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
 
void blender::math::interpolate_bilinear_wrap_fl (const float *buffer, float *output, int width, int height, int components, float u, float v, bool wrap_x, bool wrap_y)
 
uchar4 blender::math::interpolate_bilinear_wrap_byte (const uchar *buffer, int width, int height, float u, float v)
 
float4 blender::math::interpolate_bilinear_wrap_fl (const float *buffer, int width, int height, float u, float v)
 
uchar4 blender::math::interpolate_cubic_bspline_byte (const uchar *buffer, int width, int height, float u, float v)
 
float4 blender::math::interpolate_cubic_bspline_fl (const float *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_cubic_bspline_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
 
uchar4 blender::math::interpolate_cubic_mitchell_byte (const uchar *buffer, int width, int height, float u, float v)
 
float4 blender::math::interpolate_cubic_mitchell_fl (const float *buffer, int width, int height, float u, float v)
 
void blender::math::interpolate_cubic_mitchell_fl (const float *buffer, float *output, int width, int height, int components, float u, float v)
 
static void radangle2imp (float a2, float b2, float th, float *A, float *B, float *C, float *F)
 
void BLI_ewa_imp2radangle (float A, float B, float C, float F, float *a, float *b, float *th, float *ecc)
 
void BLI_ewa_filter (const int width, const int height, const bool intpol, const bool use_alpha, const float uv[2], const float du[2], const float dv[2], ewa_filter_read_pixel_cb read_pixel_cb, void *userdata, float result[4])
 

Variables

const float EWA_WTS [EWA_MAXIDX+1]
 

Macro Definition Documentation

◆ EWA_MAXIDX

#define EWA_MAXIDX   255

Definition at line 628 of file math_interp.cc.

Referenced by BLI_ewa_filter().

Function Documentation

◆ BLI_ewa_filter()

void BLI_ewa_filter ( int width,
int height,
bool intpol,
bool use_alpha,
const float uv[2],
const float du[2],
const float dv[2],
ewa_filter_read_pixel_cb read_pixel_cb,
void * userdata,
float result[4] )

TODO(sergey): Consider making this function inlined, so the pixel read callback could also be inlined in order to avoid per-pixel function calls.

Definition at line 710 of file math_interp.cc.

References A, B, b, BLI_ewa_imp2radangle(), C, ceilf, EWA_MAXIDX, EWA_WTS, float, floorf, int, madd_v3_v3fl(), mul_v3_fl(), radangle2imp(), sqrtf, U, UNUSED_VARS, V, v, v2, and zero_v4().

Referenced by ewa_eval(), and blender::compositor::MemoryBuffer::read_elem_filtered().

◆ BLI_ewa_imp2radangle()

void BLI_ewa_imp2radangle ( float A,
float B,
float C,
float F,
float * a,
float * b,
float * th,
float * ecc )

Definition at line 680 of file math_interp.cc.

References atan2f, B, b, C, float, M_PI, and sqrtf.

Referenced by BLI_ewa_filter(), and imagewraposa_aniso().

◆ radangle2imp()

static void radangle2imp ( float a2,
float b2,
float th,
float * A,
float * B,
float * C,
float * F )
static

Definition at line 669 of file math_interp.cc.

References B, cosf, and sinf.

Referenced by BLI_ewa_filter().

Variable Documentation

◆ EWA_WTS

const float EWA_WTS[EWA_MAXIDX+1]

Definition at line 629 of file math_interp.cc.

Referenced by BLI_ewa_filter(), and feline_eval().