#ifdef __STDC__
# define	P(s) s
#else
# define P(s) ()
#endif


/* ppm_comment.c */
void add_comment P((PPM *the_ppm , char *the_comment ));

/* ppm_error.c */
void ppm_handle_error P((enum ppm_error the_error ));

/* ppm_io.c */
void read_non_whitespace P((FILE *f , byte *buff ));
enum file_types read_magic_no P((FILE *f ));
enum ppm_error read_ppm P((FILE *ppm_file , PPM **ppm_data , enum file_types ppm_type ));
void write_header P((FILE *outfile , PPM *im1 ));
enum ppm_error write_ppm P((FILE *outfile , PPM *im1 , enum file_types ppm_type ));
enum ppm_error write_ppm_plane P((FILE *outfile , PPM *im1 , enum file_types ppm_type , int plane ));

/* ppm_memory.c */
PPM *new_ppm P((void ));
void destroy_ppm P((PPM **the_ppm ));

/* ppm_normalize.c */
double *ppm_local_normalize P((PPM *im_input , int window_size , double (*variance_transformer )(double )));
PPM *ppm_double_to_byte P((double *dbl_image , int width , int height ));
PPM *ppm_norm_contrast P((PPM *im_input ));
PPM *ppm_local_norm_contrast P((PPM *im_input , int window_size ));

/* ppm_plane.c */
PPM *ppm_plane P((PPM *im_input , int plane_wanted ));

/* ppm_subimage.c */
PPM *ppm_subimage P((PPM *source_image , int top_left_x , int top_left_y , int width , int height ));

#undef P
