#ifndef __CEMENT_H
#define __CEMENT_H

/* This is the default - can also be entered 
 * as a command line arg.
 */
#define EXPONENT 2.2

#define JPEG_QUALITY 95

#define NUMBER_PIXELS_PER_READ 2048
#define CHANNELS_PER_PIXEL 3
#define ARRAY_SIZE (NUMBER_PIXELS_PER_READ*CHANNELS_PER_PIXEL)

/*#define GET_TIME_MEASUREMENTS*/

#define GET_RUN_TIME 1

#define MAX_STRING_LENGTH 1024
#define MAX_FILE_NAME_LENGTH MAX_STRING_LENGTH

#define SILENT_RUN
int cementinit(char *input_filename,
               char *dest_filename,
               double R,
               double G,
               double B,
               char* command,
               void (*status)(char *action, char *filename, double R,double G, double B, double complete)
              );

/* set one of the status functions to NULL when calling */
int cementinit_lut(char *input_filename,
               char *dest_filename,
               char *lut_filename,
               double R,
               double G,
               double B,
               char* command,
               void (*status)(char *action, char *filename, double R,double G, double B, double complete),
               void (*lutstatus)(char *action, char *filename, char*lut, double R,double G, double B, double complete)
              );

int cementi(char *input_filenameA,
            char *input_filenameB,
            double R,
            double G,
            double B,
            double yR,
            double yG,
            double yB,
            char* command,
            void (*status)(char *action, char *filename, double R,double G, double B, double complete)
           );

int cemento(char *input_filenameA,
            char *input_filenameB,
            double R,
            double G,
            double B,
            double yR,
            double yG,
            double yB,
            char* command,
            void (*status)(char *action, char *filename, double R,double G, double B, double complete)
           );

int plm2pnm(char *input_filename,
            char *dest_filename,
            char *command,
            void (*status)(char *action, char *filename, double R,double G, double B, double complete)
           );

/* set one of the status functions to NULL when calling */
int plm2pnm_lut(char *input_filename,
            char *dest_filename,
            char *lut_filename,
            char *command,
            void (*status)(char *action, char *filename, double R,double G, double B, double complete),
            void (*status_lut)(char *action, char *filename, char *lut, double R,double G, double B, double complete)
           );

#endif

