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; }
52 return memcmp(&a, &b,
sizeof(a)) == 0;
80 assert(original >= 0);
90 return (
int)(original *
scale);
112static inline void argb2rgba(
size_t width,
size_t height,
unsigned char *data) {
113 assert(data !=
NULL || (width == 0 && height == 0));
116 enum { Ba = 0, Ga = 1, Ra = 2, Aa = 3 };
117 enum { Rb = 0, Gb = 1, Bb = 2, Ab = 3 };
119 for (
size_t y = 0; y < height; ++y) {
120 for (
size_t x = 0; x < width; ++x) {
121 const unsigned char red = data[Ra];
122 const unsigned char blue = data[Ba];
141 (void)((a) == (b)); \
146 char tmp_[sizeof(*(a))]; \
147 memcpy(tmp_, (a), sizeof(*(a))); \
149 memcpy((b), tmp_, sizeof(*(b))); \
159static inline int d2i(
double v) {
178static 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 bool is_exactly_zero(double v)
is a value precisely 0.0?
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 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)