/*************************************************************************/ /* */ /* Copyright (c) 1994 Stanford University */ /* */ /* All rights reserved. */ /* */ /* Permission is given to use, copy, and modify this software for any */ /* non-commercial purpose as long as this copyright notice is not */ /* removed. All other uses, including redistribution in whole or in */ /* part, are forbidden without prior written permission. */ /* */ /* This software is provided with absolutely no warranty and no */ /* support. */ /* */ /*************************************************************************/ /****************************************************************************** * * * map.c: Loads 3D density map. * * * ******************************************************************************/ #include #include "incl.h" /* The following declarations show the layout of the .den file. */ /* If changed, the version number must be incremented and code */ /* written to handle loading of both old and current versions. */ /* Version for new .den files: */ #define MAP_CUR_VERSION 1 /* Initial release */ short map_version; /* Version of this .den file */ short orig_min[NM], /* Dimensions of original data file */ orig_max[NM], /* (CT: from .header file */ orig_len[NM]; /* ED: from .mi file) */ short extr_min[NM], /* Portion of file extracted for this map */ extr_max[NM], /* (mins and maxes will be subset of */ extr_len[NM]; /* orig and lengths will be <= orig) */ short map_min[NM], /* Dimensions of this map */ map_max[NM], /* (mins will be 0 in this program and */ map_len[NM]; /* lens may be != extr if warps > 0) */ short map_warps; /* Number of warps since extraction */ /* (0 = none) */ int map_length; /* Total number of densities in map */ /* (= product of lens) */ DENSITY *map_address; /* Pointer to map */ /* End of layout of .den file. */ EXTERN_ENV void Load_Map(filename) char filename[]; { char local_filename[FILENAME_STRING_SIZE]; int fd; strcpy(local_filename,filename); strcat(local_filename,".den"); fd = Open_File(local_filename); Read_Shorts(fd,(unsigned char *)&map_version, (long)sizeof(map_version)); if (map_version != MAP_CUR_VERSION) Error(" Can't load version %d file\n",map_version); Read_Shorts(fd,(unsigned char *)orig_min,(long)sizeof(orig_min)); Read_Shorts(fd,(unsigned char *)orig_max,(long)sizeof(orig_max)); Read_Shorts(fd,(unsigned char *)orig_len,(long)sizeof(orig_len)); Read_Shorts(fd,(unsigned char *)extr_min,(long)sizeof(extr_min)); Read_Shorts(fd,(unsigned char *)extr_max,(long)sizeof(extr_max)); Read_Shorts(fd,(unsigned char *)extr_len,(long)sizeof(extr_len)); Read_Shorts(fd,(unsigned char *)map_min,(long)sizeof(map_min)); Read_Shorts(fd,(unsigned char *)map_max,(long)sizeof(map_max)); Read_Shorts(fd,(unsigned char *)map_len,(long)sizeof(map_len)); Read_Shorts(fd,(unsigned char *)&map_warps,(long)sizeof(map_warps)); Read_Longs(fd,(unsigned char *)&map_length,(long)sizeof(map_length)); Allocate_Map(&map_address,map_length); printf(" Loading map from .den file...\n"); Read_Bytes(fd,(unsigned char *)map_address,(long)(map_length*sizeof(DENSITY))); Close_File(fd); } void Allocate_Map(address, length) DENSITY **address; long length; { long i; printf(" Allocating density map of %ld bytes...\n", length*sizeof(DENSITY)); *address = (DENSITY *)NU_MALLOC(length*sizeof(DENSITY),0); if (*address == NULL) Error(" No space available for map.\n"); else for (i=0; i