www.pudn.com > src.rar > mymono_file.c
/**@(#) **/ /* mono_file.c * * Modification: 16-Sep-99 by IH, DICOM added * * file handling for mono_tool.c */ #include#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define AIFF_FILE 0 #define PGM_FILE 1 #define RAD_FILE 2 #define EDGE_FILE 3 #define POLY_FILE 4 #define CAMERA 5 #define WISP 6 //#define RAS 7 #define GIF 8 #define DICOM_FILE 9 #define BMP 7 extern Imrect *pgm_read_image(char *pathname); extern int pgm_write_image(Imrect *im, char *pathname); extern Imrect *ReadGIF(char *pn, int imageNumber); extern void gif_write_file(Imrect *opm, char *pn); /* extern Imrect *dicom_read_image(char *pathname); */ void mono_input(char *directory_name, char *base_name, int file_type) { Imrect *im; char pathname[MAXPATHLEN]; if (directory_name != NULL) { (void) strip_spaces(base_name); (void) strip_spaces(directory_name); (void) string_append(pathname, directory_name, "/", base_name, NULL); } else { (void) strip_spaces(base_name); (void) string_append(pathname, base_name, NULL); } switch (file_type) { case AIFF_FILE: (void) strcat(pathname, ".aiff"); if ((im = (Imrect *) aiff_read_image(pathname))) mono_image_set(im); else error("mono_input: null mono aiff image", warning); break; case PGM_FILE: (void) strcat(pathname, ".pgm"); mono_image_set(pgm_read_image(pathname)); break; case RAD_FILE: (void) strcat(pathname, ".rad"); if ((im = (Imrect *) rad_read_image(pathname))) mono_image_set(im); else error("mono_input: null mono raw image", warning); break; case EDGE_FILE: { Imregion *region = NULL; int height = 256, width = 256; (void) strcat(pathname, ".edges"); if ((im = mono_image())) { height = im->height; width = im->width; region = im->region; } if (im = edges_read_file(pathname, height, width, region)) mono_edges_set(im); else error("mono_input: null mono edges", warning); er_find_edge_strings(im); break; } case POLY_FILE: (void) strcat(pathname, ".poly"); mono_geom_set(geom2_read(pathname)); break; case CAMERA: mono_camera_set(input_camera_file(pathname, "")); break; /* case RAS: if ((im = (Imrect *) ras_read_image(pathname, uchar_v))) mono_image_set(im); else error("mono_input: null mono ras image", warning); break; */ case BMP: (void) strcat(pathname, ".bmp"); mono_image_set(BmpToImrect(pathname)); break; case GIF: (void) strcat(pathname, ".gif"); mono_image_set(ReadGIF(pathname, 1)); break; case DICOM_FILE: if ((im = (Imrect *) dicom_read_image(pathname))) mono_image_set(im); else error("mono_input: null mono dicom image", warning); break; default: error("file type not available", non_fatal); return; } /* Input camera */ switch (file_type) { case AIFF_FILE: if (im) mono_camera_set(input_camera_file(pathname, "")); break; } } void mono_output(char *directory_name, char *base_name, int file_type) { char pathname[MAXPATHLEN]; Imrect *temp_image; (void) strip_spaces(base_name); (void) strip_spaces(directory_name); (void) string_append(pathname, directory_name, "/", base_name, NULL); switch (file_type) { case AIFF_FILE: (void) strcat(pathname, ".aiff"); aiff_write_image(mono_image(), pathname); break; case PGM_FILE: (void) strcat(pathname, ".pgm"); pgm_write_image(mono_image(), pathname); break; case RAD_FILE: (void) strcat(pathname, ".rad"); rad_write_image(mono_image(), pathname); break; case EDGE_FILE: (void) strcat(pathname, ".edges"); edges_write_file(pathname, mono_edges()); break; case POLY_FILE: /* to be updated */ (void) strcat(pathname, ".poly"); geom2_write(pathname, mono_geom_get()); break; case CAMERA: (void) strcat(pathname, ".cam"); cam_write(pathname, mono_camera(), rdist_write_fp); break; case WISP: (void) strcat(pathname, ".wisp"); wisp_write_edges(pathname, mono_edges(), mono_camera()); break; case BMP: (void) strcat(pathname, ".bmp"); ImrectToBMP8(mono_image(), pathname); break; /* case GIF: (void) strcat(pathname, ".gif"); temp_image = im_copy(mono_image()); im_shift(temp_image, -temp_image->region->ly, -temp_image->region->lx); gif_write_file(temp_image, pathname); im_free(temp_image); */ break; default: error("file type not available for output", non_fatal); return; } }