15static inline int fcmp(
double a,
double b) {
26static inline int imax(
int a,
int b) {
return a > b ? a : b; }
29static inline size_t zmax(
size_t a,
size_t b) {
return a > b ? a : b; }
32static inline size_t zmin(
size_t a,
size_t b) {
return a < b ? a : b; }
35static inline int imin(
int a,
int b) {
return a < b ? a : b; }
50 return memcmp(&a, &b,
sizeof(a)) == 0;
76 assert(original >= 0);
86 return (
int)(original *
scale);
108static inline void argb2rgba(
size_t width,
size_t height,
unsigned char *data) {
109 assert(data !=
NULL || (width == 0 && height == 0));
112 enum { Ba = 0, Ga = 1, Ra = 2, Aa = 3 };
113 enum { Rb = 0, Gb = 1, Bb = 2, Ab = 3 };
115 for (
size_t y = 0; y < height; ++y) {
116 for (
size_t x = 0; x < width; ++x) {
117 const unsigned char red = data[Ra];
118 const unsigned char blue = data[Ba];
137 (void)((a) == (b)); \
142 char tmp_[sizeof(*(a))]; \
143 memcpy(tmp_, (a), sizeof(*(a))); \
145 memcpy((b), tmp_, sizeof(*(b))); \
155static inline int d2i(
double v) {
174static inline float d2f(
double v) {
static WUR pointf scale(double c, pointf p)
static int scale_clamp(int original, double scale)
scale up or down a non-negative integer, clamping to [0, INT_MAX]
static size_t zmin(size_t a, size_t b)
minimum of two sizes
static bool is_exactly_equal(double a, double b)
are two values precisely the same?
static int imin(int a, int b)
minimum of two integers
static bool is_exactly_pos_zero(double v)
is a value precisely +0.0?
static int fcmp(double a, double b)
comparator for doubles
static size_t zmax(size_t a, size_t b)
maximum of two sizes
static void argb2rgba(size_t width, size_t height, unsigned char *data)
static int imax(int a, int b)
maximum of two integers
static float d2f(double v)