#ifndef _TCOD_PERLIN_H
#define _TCOD_PERLIN_H
#include "libtcod_portability.h"
#include "mersenne_types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef void *TCOD_noise_t;
typedef enum {
TCOD_NOISE_PERLIN = 1,
TCOD_NOISE_SIMPLEX = 2,
TCOD_NOISE_WAVELET = 4,
TCOD_NOISE_DEFAULT = 0
} TCOD_noise_type_t;
#include "noise_defaults.h"
TCODLIB_API TCOD_noise_t TCOD_noise_new(int dimensions, float hurst, float lacunarity, TCOD_random_t random);
TCODLIB_API void TCOD_noise_set_type (TCOD_noise_t noise, TCOD_noise_type_t type);
TCODLIB_API float TCOD_noise_get_ex (TCOD_noise_t noise, float *f, TCOD_noise_type_t type);
TCODLIB_API float TCOD_noise_get_fbm_ex (TCOD_noise_t noise, float *f, float octaves, TCOD_noise_type_t type);
TCODLIB_API float TCOD_noise_get_turbulence_ex (TCOD_noise_t noise, float *f, float octaves, TCOD_noise_type_t type);
TCODLIB_API float TCOD_noise_get (TCOD_noise_t noise, float *f);
TCODLIB_API float TCOD_noise_get_fbm (TCOD_noise_t noise, float *f, float octaves);
TCODLIB_API float TCOD_noise_get_turbulence (TCOD_noise_t noise, float *f, float octaves);
TCODLIB_API void TCOD_noise_delete(TCOD_noise_t noise);
#ifdef __cplusplus
}
#endif
#endif