13
13
<refname>GimpMath</refname>
14
14
<refpurpose>Mathematical definitions and macros.</refpurpose>
15
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
18
17
<refsynopsisdiv id="libgimpmath-GimpMath.synopsis" role="synopsis">
19
18
<title role="synopsis.title">Synopsis</title>
22
#define <link linkend="RINT:CAPS">RINT</link> (x)
23
#define <link linkend="ROUND:CAPS">ROUND</link> (x)
24
#define <link linkend="SQR:CAPS">SQR</link> (x)
25
#define <link linkend="MAX255:CAPS">MAX255</link> (a)
26
#define <link linkend="CLAMP0255:CAPS">CLAMP0255</link> (a)
21
#define <link linkend="RINT--CAPS">RINT</link> (x)
22
#define <link linkend="ROUND--CAPS">ROUND</link> (x)
23
#define <link linkend="SQR--CAPS">SQR</link> (x)
24
#define <link linkend="MAX255--CAPS">MAX255</link> (a)
25
#define <link linkend="CLAMP0255--CAPS">CLAMP0255</link> (a)
27
26
#define <link linkend="gimp-deg-to-rad">gimp_deg_to_rad</link> (angle)
28
27
#define <link linkend="gimp-rad-to-deg">gimp_rad_to_deg</link> (angle)
48
47
<refsect1 id="libgimpmath-GimpMath.details" role="details">
49
48
<title role="details.title">Details</title>
50
<refsect2 id="RINT:CAPS" role="macro">
49
<refsect2 id="RINT--CAPS" role="macro">
51
50
<title>RINT()</title>
52
<indexterm zone="RINT:CAPS"><primary>RINT</primary></indexterm><programlisting>#define RINT(x)</programlisting>
51
<indexterm zone="RINT--CAPS"><primary sortas="RINT">RINT</primary></indexterm><programlisting>#define RINT(x)</programlisting>
54
53
This macro rounds its argument <parameter>x</parameter> to an integer value in floating point
56
55
</para><variablelist role="params">
57
<varlistentry><term><parameter>x</parameter> :</term>
56
<varlistentry><term><parameter>x</parameter> :</term>
58
57
<listitem><simpara>the value to be rounded.
61
58
</simpara></listitem></varlistentry>
62
59
</variablelist></refsect2>
63
<refsect2 id="ROUND:CAPS" role="macro">
60
<refsect2 id="ROUND--CAPS" role="macro">
64
61
<title>ROUND()</title>
65
<indexterm zone="ROUND:CAPS"><primary>ROUND</primary></indexterm><programlisting>#define ROUND(x) ((int) ((x) + 0.5))
62
<indexterm zone="ROUND--CAPS"><primary sortas="ROUND">ROUND</primary></indexterm><programlisting>#define ROUND(x) ((int) ((x) + 0.5))
68
65
This macro rounds its argument <parameter>x</parameter> to the nearest integer.
69
66
</para><variablelist role="params">
70
<varlistentry><term><parameter>x</parameter> :</term>
67
<varlistentry><term><parameter>x</parameter> :</term>
71
68
<listitem><simpara>the value to be rounded.
74
69
</simpara></listitem></varlistentry>
75
70
</variablelist></refsect2>
76
<refsect2 id="SQR:CAPS" role="macro">
71
<refsect2 id="SQR--CAPS" role="macro">
77
72
<title>SQR()</title>
78
<indexterm zone="SQR:CAPS"><primary>SQR</primary></indexterm><programlisting>#define SQR(x) ((x) * (x))
73
<indexterm zone="SQR--CAPS"><primary sortas="SQR">SQR</primary></indexterm><programlisting>#define SQR(x) ((x) * (x))
81
76
This macro squares its argument <parameter>x</parameter>.
82
77
</para><variablelist role="params">
83
<varlistentry><term><parameter>x</parameter> :</term>
78
<varlistentry><term><parameter>x</parameter> :</term>
84
79
<listitem><simpara>the value to be squared.
87
80
</simpara></listitem></varlistentry>
88
81
</variablelist></refsect2>
89
<refsect2 id="MAX255:CAPS" role="macro">
82
<refsect2 id="MAX255--CAPS" role="macro">
90
83
<title>MAX255()</title>
91
<indexterm zone="MAX255:CAPS"><primary>MAX255</primary></indexterm><programlisting>#define MAX255(a) ((a) | (((a) & 256) - (((a) & 256) >> 8)))
84
<indexterm zone="MAX255--CAPS"><primary sortas="MAX255">MAX255</primary></indexterm><programlisting>#define MAX255(a) ((a) | (((a) & 256) - (((a) & 256) >> 8)))
94
87
This macro limits it argument <parameter>a</parameter>, an (0-511) int, to 255.
95
88
</para><variablelist role="params">
96
<varlistentry><term><parameter>a</parameter> :</term>
89
<varlistentry><term><parameter>a</parameter> :</term>
97
90
<listitem><simpara>the value to be limited.
100
91
</simpara></listitem></varlistentry>
101
92
</variablelist></refsect2>
102
<refsect2 id="CLAMP0255:CAPS" role="macro">
93
<refsect2 id="CLAMP0255--CAPS" role="macro">
103
94
<title>CLAMP0255()</title>
104
<indexterm zone="CLAMP0255:CAPS"><primary>CLAMP0255</primary></indexterm><programlisting>#define CLAMP0255(a) CLAMP(a,0,255)
95
<indexterm zone="CLAMP0255--CAPS"><primary sortas="CLAMP0255">CLAMP0255</primary></indexterm><programlisting>#define CLAMP0255(a) CLAMP(a,0,255)
107
98
This macro clamps its argument <parameter>a</parameter>, an int32-range int, between 0 and
109
100
</para><variablelist role="params">
110
<varlistentry><term><parameter>a</parameter> :</term>
101
<varlistentry><term><parameter>a</parameter> :</term>
111
102
<listitem><simpara>the value to be clamped.
114
103
</simpara></listitem></varlistentry>
115
104
</variablelist></refsect2>
116
105
<refsect2 id="gimp-deg-to-rad" role="macro">
117
106
<title>gimp_deg_to_rad()</title>
118
<indexterm zone="gimp-deg-to-rad"><primary>gimp_deg_to_rad</primary></indexterm><programlisting>#define gimp_deg_to_rad(angle) ((angle) * (2.0 * G_PI) / 360.0)
107
<indexterm zone="gimp-deg-to-rad"><primary sortas="gimp_deg_to_rad">gimp_deg_to_rad</primary></indexterm><programlisting>#define gimp_deg_to_rad(angle) ((angle) * (2.0 * G_PI) / 360.0)
119
108
</programlisting>
121
110
This macro converts its argument <parameter>angle</parameter> from degree to radian.
122
111
</para><variablelist role="params">
123
<varlistentry><term><parameter>angle</parameter> :</term>
112
<varlistentry><term><parameter>angle</parameter> :</term>
124
113
<listitem><simpara>the angle to be converted.
127
114
</simpara></listitem></varlistentry>
128
115
</variablelist></refsect2>
129
116
<refsect2 id="gimp-rad-to-deg" role="macro">
130
117
<title>gimp_rad_to_deg()</title>
131
<indexterm zone="gimp-rad-to-deg"><primary>gimp_rad_to_deg</primary></indexterm><programlisting>#define gimp_rad_to_deg(angle) ((angle) * 360.0 / (2.0 * G_PI))
118
<indexterm zone="gimp-rad-to-deg"><primary sortas="gimp_rad_to_deg">gimp_rad_to_deg</primary></indexterm><programlisting>#define gimp_rad_to_deg(angle) ((angle) * 360.0 / (2.0 * G_PI))
132
119
</programlisting>
134
121
This macro converts its argument <parameter>angle</parameter> from radian to degree.
135
122
</para><variablelist role="params">
136
<varlistentry><term><parameter>angle</parameter> :</term>
123
<varlistentry><term><parameter>angle</parameter> :</term>
137
124
<listitem><simpara>the angle to be converted.
140
125
</simpara></listitem></varlistentry>
141
126
</variablelist></refsect2>