1 /* -*- Mode: C; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // -------------------------------------------------------------------------*/
16 #ifndef SQUIRRELJME_FIXED_H
17 #define SQUIRRELJME_FIXED_H
19 #include "sjme/stdTypes.h"
23 #ifndef SJME_CXX_IS_EXTERNED
24 #define SJME_CXX_IS_EXTERNED
25 #define SJME_CXX_SQUIRRELJME_FIXED_H
27 #endif /* #ifdef SJME_CXX_IS_EXTERNED */
28 #endif /* #ifdef __cplusplus */
30 /*--------------------------------------------------------------------------*/
33 * Ceiling a fixed point number, removing any fractional value.
35 * @param v The value to ceiling.
36 * @return The resultant ceiling value.
39 sjme_fixed
sjme_fixed_ceil(
40 sjme_attrInValue sjme_jint v
);
43 * Divides two fixed values.
45 * @param num The numerator.
46 * @param den The denominator.
47 * @return The resultant fixed value.
50 sjme_fixed
sjme_fixed_div(
51 sjme_attrInValue sjme_fixed num
,
52 sjme_attrInValue sjme_fixed den
);
55 * Floors a fixed point number, removing any fractional value.
57 * @param v The value to floor.
58 * @return The resultant floored value.
61 sjme_fixed
sjme_fixed_floor(
62 sjme_attrInValue sjme_jint v
);
65 * Calculates a fraction from two integers.
67 * @param num The numerator.
68 * @param den The denominator.
69 * @return The resultant fixed value.
72 sjme_fixed
sjme_fixed_fraction(
73 sjme_attrInValue sjme_jint num
,
74 sjme_attrInValue sjme_jint den
);
77 * Converts an integer to a fixed value.
79 * @param val The input value to convert.
80 * @return The resultant fixed value.
83 sjme_fixed
sjme_fixed_hi(
84 sjme_attrInValue sjme_jint val
);
87 * Converts a fixed to an integer value.
89 * @param val The input value to convert.
90 * @return The resultant integer value.
93 sjme_jint
sjme_fixed_int(
94 sjme_attrInValue sjme_fixed val
);
97 * Multiplies two fixed values.
99 * @param a The first value.
100 * @param b The second value.
101 * @return The resultant fixed value.
104 sjme_fixed
sjme_fixed_mul(
105 sjme_attrInValue sjme_fixed a
,
106 sjme_attrInValue sjme_fixed b
);
109 * Rounds a fixed point number, removing any fractional value.
111 * @param v The value to round.
112 * @return The resultant rounded value.
115 sjme_fixed
sjme_fixed_round(
116 sjme_attrInValue sjme_jint v
);
118 /*--------------------------------------------------------------------------*/
122 #ifdef SJME_CXX_SQUIRRELJME_FIXED_H
124 #undef SJME_CXX_SQUIRRELJME_FIXED_H
125 #undef SJME_CXX_IS_EXTERNED
126 #endif /* #ifdef SJME_CXX_SQUIRRELJME_FIXED_H */
127 #endif /* #ifdef __cplusplus */
129 #endif /* SQUIRRELJME_FIXED_H */