LibGd 2.4.0-dev
GD Graphics library
Loading...
Searching...
No Matches
gd_fixed.h
1//
2// Created by pierr on 7/21/2021.
3//
4
5#ifndef GD_GD_FIXED_H
6#define GD_GD_FIXED_H
7/* Add *BSD and co for inttypes.h */
8#if defined(_MSC_VER) && _MSC_VER < 1600
9#include "msinttypes/stdint.h"
10#else
11#include <stdint.h>
12#endif
13/* only used here, let do a generic fixed point integers later if required by other
14 part of GD */
15typedef uint32_t gdFixed;
16typedef int32_t gd_fixed_16_16;
17typedef gd_fixed_16_16 gd_fixed_t;
18#define gd_fixed_e ((gd_fixed_t)1)
19#define gd_fixed_1 (gd_int_to_fixed(1))
20#define gd_fixed_1_minus_e (gd_fixed_1 - gd_fixed_e)
21#define gd_fixed_minus_1 (pixman_int_to_fixed(-1))
22#define gd_fixed_to_int(f) ((int)((f) >> 16))
23#define gd_int_to_fixed(i) ((gd_fixed_t)(i) * (gd_fixed_t)65536)
24#define gd_fixed_to_double(f) (double)((f) / (double)gd_fixed_1)
25#define gd_double_to_fixed(d) ((gd_fixed_t)((d) * 65536.0))
26#define gd_fixed_frac(f) ((f) & gd_fixed_1_minus_e)
27#define gd_fixed_floor(f) ((f) & ~gd_fixed_1_minus_e)
28#define gd_fixed_ceil(f) gd_fixed_floor((f) + gd_fixed_1_minus_e)
29#define gd_fixed_fraction(f) ((f) & gd_fixed_1_minus_e)
30#define gd_fixed_mod_2(f) ((f) & (gd_fixed1 | gd_fixed_1_minus_e))
31
32#endif // GD_GD_FIXED_H