BLI_math: inline clamp functions

These are used in some per-pixel operations such as image sampling and
color conversion, where replacing existing macro use could add overhead.
This commit is contained in:
Campbell Barton 2020-03-04 11:23:00 +11:00
parent a37dceb139
commit 89b10b8d42
3 changed files with 53 additions and 48 deletions

@ -440,12 +440,12 @@ void dist_ensure_v2_v2fl(float v1[2], const float v2[2], const float dist);
void axis_sort_v3(const float axis_values[3], int r_axis_order[3]);
void clamp_v2(float vec[2], const float min, const float max);
void clamp_v3(float vec[3], const float min, const float max);
void clamp_v4(float vec[4], const float min, const float max);
void clamp_v2_v2v2(float vec[2], const float min[2], const float max[2]);
void clamp_v3_v3v3(float vec[3], const float min[3], const float max[3]);
void clamp_v4_v4v4(float vec[4], const float min[4], const float max[4]);
MINLINE void clamp_v2(float vec[2], const float min, const float max);
MINLINE void clamp_v3(float vec[3], const float min, const float max);
MINLINE void clamp_v4(float vec[4], const float min, const float max);
MINLINE void clamp_v2_v2v2(float vec[2], const float min[2], const float max[2]);
MINLINE void clamp_v3_v3v3(float vec[3], const float min[3], const float max[3]);
MINLINE void clamp_v4_v4v4(float vec[4], const float min[4], const float max[4]);
/***************************** Array Functions *******************************/
/* follow fixed length vector function conventions. */

@ -1051,48 +1051,6 @@ void axis_sort_v3(const float axis_values[3], int r_axis_order[3])
#undef SWAP_AXIS
}
void clamp_v2(float vec[2], const float min, const float max)
{
CLAMP(vec[0], min, max);
CLAMP(vec[1], min, max);
}
void clamp_v3(float vec[3], const float min, const float max)
{
CLAMP(vec[0], min, max);
CLAMP(vec[1], min, max);
CLAMP(vec[2], min, max);
}
void clamp_v4(float vec[4], const float min, const float max)
{
CLAMP(vec[0], min, max);
CLAMP(vec[1], min, max);
CLAMP(vec[2], min, max);
CLAMP(vec[3], min, max);
}
void clamp_v2_v2v2(float vec[2], const float min[2], const float max[2])
{
CLAMP(vec[0], min[0], max[0]);
CLAMP(vec[1], min[1], max[1]);
}
void clamp_v3_v3v3(float vec[3], const float min[3], const float max[3])
{
CLAMP(vec[0], min[0], max[0]);
CLAMP(vec[1], min[1], max[1]);
CLAMP(vec[2], min[2], max[2]);
}
void clamp_v4_v4v4(float vec[4], const float min[4], const float max[4])
{
CLAMP(vec[0], min[0], max[0]);
CLAMP(vec[1], min[1], max[1]);
CLAMP(vec[2], min[2], max[2]);
CLAMP(vec[3], min[3], max[3]);
}
/***************************** Array Functions *******************************/
MINLINE double sqr_db(double f)

@ -1291,6 +1291,53 @@ MINLINE bool compare_len_v3v3(const float v1[3], const float v2[3], const float
return (dot_v3v3(d, d) <= (limit * limit));
}
/** \name Vector Clamping
* \{ */
MINLINE void clamp_v2(float vec[2], const float min, const float max)
{
CLAMP(vec[0], min, max);
CLAMP(vec[1], min, max);
}
MINLINE void clamp_v3(float vec[3], const float min, const float max)
{
CLAMP(vec[0], min, max);
CLAMP(vec[1], min, max);
CLAMP(vec[2], min, max);
}
MINLINE void clamp_v4(float vec[4], const float min, const float max)
{
CLAMP(vec[0], min, max);
CLAMP(vec[1], min, max);
CLAMP(vec[2], min, max);
CLAMP(vec[3], min, max);
}
MINLINE void clamp_v2_v2v2(float vec[2], const float min[2], const float max[2])
{
CLAMP(vec[0], min[0], max[0]);
CLAMP(vec[1], min[1], max[1]);
}
MINLINE void clamp_v3_v3v3(float vec[3], const float min[3], const float max[3])
{
CLAMP(vec[0], min[0], max[0]);
CLAMP(vec[1], min[1], max[1]);
CLAMP(vec[2], min[2], max[2]);
}
MINLINE void clamp_v4_v4v4(float vec[4], const float min[4], const float max[4])
{
CLAMP(vec[0], min[0], max[0]);
CLAMP(vec[1], min[1], max[1]);
CLAMP(vec[2], min[2], max[2]);
CLAMP(vec[3], min[3], max[3]);
}
/** \} */
/**
* <pre>
* + l1