blurhash-c-wasm/blurhash/common.h

34 lines
621 B
C
Raw Normal View History

2023-08-12 09:14:14 +00:00
#ifndef __BLURHASH_COMMON_H__
#define __BLURHASH_COMMON_H__
#include <math.h>
2023-08-12 09:14:14 +00:00
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
static inline int linearTosRGB(float value)
{
2023-08-12 09:14:14 +00:00
float v = fmaxf(0, fminf(1, value));
if (v <= 0.0031308)
return v * 12.92 * 255 + 0.5;
else
return (1.055 * powf(v, 1 / 2.4) - 0.055) * 255 + 0.5;
2023-08-12 09:14:14 +00:00
}
static inline float sRGBToLinear(int value)
{
2023-08-12 09:14:14 +00:00
float v = (float)value / 255;
if (v <= 0.04045)
return v / 12.92;
else
return powf((v + 0.055) / 1.055, 2.4);
2023-08-12 09:14:14 +00:00
}
static inline float signPow(float value, float exp)
{
2023-08-12 09:14:14 +00:00
return copysignf(powf(fabsf(value), exp), value);
}
#endif