/* GLP library interface v0.1 by Antoine Mine 4/07/98

   Find any help in glp.html.
 */

#ifndef GLP_H
#define GLP_H
#ifdef __cplusplus
extern "C" {
#endif
  
#include <GL/gl.h>
#include <GL/glu.h>
  
  
extern void glpInit(void);
  
extern GLboolean glpQueryExtension(const char *extName);
  
extern void glpDrawNoise(GLuint list);

extern void glpFinalize();

extern void glpFLush();

/* Parameters
 */

#define GLP_DIMENSION   100
#define GLP_MODE_3D       0
#define GLP_MODE_2D       1

#define GLP_COMPONENT    101
#define GLP_MODE_RGB      0
#define GLP_MODE_L        1

#define GLP_FUN_MODE       102
#define GLP_MODE_RAMP        0
#define GLP_MODE_TRIANGULAR  1
#define GLP_MODE_SINUSOIDAL  2

#define GLP_FREQ_MULT     200 
#define GLP_AMP_DIV       201
#define GLP_OCTAVE        202
#define GLP_FUN_SIZE      203
#define GLP_NOISE_SIZE    204 
#define GLP_NOISE_AMP     205
#define GLP_NOISE_BEGIN   206
#define GLP_NOISE_END     207
#define GLP_FUN_AMP       208
#define GLP_GAMMA         209

extern void glpSetParameteri(GLenum param,GLuint value);
extern void glpSetParameterf(GLenum param,GLfloat value);
extern void glpGetParameteri(GLenum param,GLuint* value);
extern void glpGetParameterf(GLenum param,GLfloat* value);


/* Error gestion */

#define GLP_FIRST_ERROR_CODE  20000
#define GLP_LAST_ERROR_CODE   (GLP_FIRST_ERROR_CODE+1)

#define GLP_NO_ERROR          0
#define GLP_OUT_OF_MEMORY     (GLP_FIRST_ERROR_CODE+0)
#define GLP_BAD_PARAMETER     (GLP_FIRST_ERROR_CODE+1)
#define GLP_BAD_VALUE         (GLP_FIRST_ERROR_CODE+2)
#define GLP_HARD              (GLP_FIRST_ERROR_CODE+3)
#define GLP_NOT_SUPPORTED     (GLP_FIRST_ERROR_CODE+4)


extern GLenum glpGetError(void);

extern const GLubyte* glpErrorString(GLenum error);


/* Colormap */

#define GLP_NORM   0

extern void glpSetColormap(GLuint sizetab,GLuint nbtab,GLenum mode,
                           GLuint size,float* tab);

extern void glResetColormap();
  
extern void glpDoColormap();


/* Pattern functions */


#define GLP_FUNC_GRADIENT  1
#define GLP_FUNC_CYLINDER  2
#define GLP_FUNC_SPHERE    3

void glpDrawPattern(GLuint scene,GLenum func);


#ifdef __cplusplus
}
#endif
#endif