GimpMath

GimpMath — Mathematical definitions and macros.

Functions

#define RINT()
#define ROUND()
#define SIGNED_ROUND()
#define SQR()
#define MAX255()
#define CLAMP0255()
#define SAFE_CLAMP()
#define gimp_deg_to_rad()
#define gimp_rad_to_deg()

Description

Mathematical definitions and macros for use both by the GIMP application and plug-ins. These macros should be used rather than the ones from <math.h> for enhanced portability.

Functions

RINT()

#define RINT(x) rint(x)

This macro rounds its argument x to an integer value in floating point format. Use RINT() instead of rint().

Parameters

x

the value to be rounded

 

ROUND()

#define ROUND(x) ((int) ((x) + 0.5))

This macro rounds its positive argument x to the nearest integer.

Parameters

x

the value to be rounded.

 

SIGNED_ROUND()

#define SIGNED_ROUND(x) ((int) RINT (x))

This macro rounds its argument x to the nearest integer.

Parameters

x

the value to be rounded.

 

SQR()

#define SQR(x) ((x) * (x))

This macro squares its argument x .

Parameters

x

the value to be squared.

 

MAX255()

#define MAX255(a)  ((a) | (((a) & 256) - (((a) & 256) >> 8)))

This macro limits it argument a , an (0-511) int, to 255.

Parameters

a

the value to be limited.

 

CLAMP0255()

#define CLAMP0255(a)  CLAMP(a,0,255)

This macro clamps its argument a , an int32-range int, between 0 and 255 inclusive.

Parameters

a

the value to be clamped.

 

SAFE_CLAMP()

#define SAFE_CLAMP(x, low, high)  ((x) > (low) ? (x) < (high) ? (x) : (high) : (low))

Ensures that x is between the limits set by low and high , even if x is NaN. If low is greater than high , or if either of them is NaN, the result is undefined.

Parameters

x

the value to be limited.

 

low

the lower limit.

 

high

the upper limit.

 

Since: 2.10


gimp_deg_to_rad()

#define gimp_deg_to_rad(angle) ((angle) * (2.0 * G_PI) / 360.0)

This macro converts its argument angle from degree to radian.

Parameters

angle

the angle to be converted.

 

gimp_rad_to_deg()

#define gimp_rad_to_deg(angle) ((angle) * 360.0 / (2.0 * G_PI))

This macro converts its argument angle from radian to degree.

Parameters

angle

the angle to be converted.