2.3. Macro

Le macro qui elencate sono utilizzabili direttamente dopo l'inclusione dell'header senza che Imel sia linkata in fase di compilazione.

2.3.1. Conversione da Gradi a Radianti e da Radianti a Gradi


#define DEG_TO_RAD(val) (0.017453292 * (val))
#define RAD_TO_DEG(val) (57.29577951 * (val))

Queste due macro sono state realizzare per facilitare la conversione da gradi a radianti e viceversa, in quanto tutte le funzioni che ricevono un "grado" in Imel operano in radianti.

2.3.2. Recupero valori dei singoli canali da variabile RGBA


#define RGBA_R_MASK(val) (((val) & 0xff000000) >> 24)
#define RGBA_G_MASK(val) (((val) & 0x00ff0000) >> 16)
#define RGBA_B_MASK(val) (((val) & 0x0000ff00) >> 8)
#define RGBA_A_MASK(val)  ((val) & 0x000000ff)

Queste macro consentono il recupero dei valori del singolo canale di una variabile a 32 bit contenente valori RGBA in cui ogni valore occupa 8 bit.

2.3.3. Ritorno da funzioni in caso di condizioni fallite


#define return_var_if_fail(condition, var) \
        if ( !(condition) ) { \
             imel_printf_debug (NULL, NULL, "warning", "condition failed.\n"); \
             return (var); \
        }

Questa macro fa uscire dalla funzione in cui la si usa ritornando var nel caso la condizione specifica in condition non sia vera.


#define return_if_fail(condition) \
        if ( !(condition) ) { \
             imel_printf_debug (NULL, NULL, "warning", "condition failed.\n"); \
             return; \
        }

Come la macro return_var_if_fail tranne per il fatto che uscendo dalla funzione in cui è usata non ritorna nulla.