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


/* filter.c */
int comp_int P((const void *int1 , const void *int2 ));
enum ppm_error median_filter_pgm P((PPM *im_in , PPM **im_out ));
enum ppm_error mode_filter_pgm P((PPM *im_in , PPM **im_out ));

/* rgb2hsv_utils.c */
double max3 P((double v1 , double v2 , double v3 ));
double min3 P((double v1 , double v2 , double v3 ));
void count_to_coords P((int *coords , int c , int *r , int d ));
int coords_to_count P((int *coords , int *r , int d ));
void rgb2hsv P((double R , double G , double B , double *H , double *S , double *V ));
void hsv2rgb P((double H , double S , double V , double *R , double *G , double *B ));
enum ppm_error rgb2hsv_ppm P((PPM *im_rgb , PPM **im_hsv ));
enum ppm_error hsv2rgb_ppm P((PPM *im_hsv , PPM **im_rgb ));
void polar_to_hsv P((double x , double y , int dim , double *H , double *S ));
PPM *hsv_test_pattern P((int dim , double V ));

/* quantize.c */
enum ppm_error hsv_quantize_ppm P((PPM *im_hsv , PPM **im_quant , int **colmap , int numH , int numS , int numV , int numG ));
enum ppm_error colmap2rgb_ppm P((PPM *im_quant , int *colmap , int num_bins , PPM **im_rgb ));

/* hsv2rgb.c */
void main P((int argc , char *argv []));

#undef P
