00001 #ifndef __INTEGRATE_H__
00002 #define __INTEGRATE_H__
00003
00004
00005
00006
00007
00008
00009 #include <process.h>
00010 #include <limits.h>
00011 #include "configure.h"
00012 #include "workspace.h"
00013 #include "imagerw.h"
00014 #include "progress.h"
00015
00016
00017
00018
00019
00020
00021
00022
00023 typedef enum
00024 {
00025 vVI_CODE_GRAYSCALE_UCHAR = vPIXEL_CODE_GRAYSCALE_UCHAR,
00026 vVI_CODE_GRAYSCALE_USHORT12 = vPIXEL_CODE_GRAYSCALE_USHORT12,
00027 vVI_CODE_GRAYSCALE_USHORT16 = vPIXEL_CODE_GRAYSCALE_USHORT16
00028 }
00029 vVI_CODE_TYPE;
00030
00031
00032
00033
00034 typedef enum
00035 {
00036 vVI_FUNC_REPLACE,
00037 vVI_FUNC_MAXIMUM,
00038 vVI_FUNC_AVERAGE,
00039
00040 vVI_FUNC_SENTINEL
00041 }
00042 vVI_FUNC_TYPE;
00043
00044 #define vVI_NUM_FUNC_TYPES ( ( vINT )vVI_FUNC_SENTINEL )
00045
00046 vCHAR* GetVolumeIntegrationFuncStr( vVI_FUNC_TYPE type );
00047 vCHAR* GetVolumeIntegrationDescStr( vVI_FUNC_TYPE type );
00048
00049
00050 typedef enum
00051 {
00052 vVI_NO_ERROR,
00053 vVI_ERROR_OUT_OF_MEMORY,
00054 vVI_ERROR_VI_FUNC,
00055 vVI_ERROR_STACK_CHDIR,
00056 vVI_ERROR_FILE_LIST_HANDLE,
00057 vVI_ERROR_NO_FILES,
00058 vVI_ERROR_INVALID_SPEC,
00059 vVI_ERROR_NUM_FILES,
00060 vVI_ERROR_DEST_CHDIR,
00061 vVI_ERROR_FILE_OPEN,
00062 vVI_ERROR_FILE_READ,
00063 vVI_ERROR_FILE_WRITE,
00064 vVI_ERROR_FILE_INVALID,
00065 vVI_ERROR_FILE_TYPE,
00066 vVI_ERROR_UNSUPPORTED,
00067 vVI_ERROR_MAX_DIMENSIONS,
00068 vVI_ERROR_PATH_LENGTH,
00069 vVI_ERROR_IMAGE_PIXEL_TYPE,
00070 vVI_ERROR_IMAGE_DIMENSIONS,
00071 vVI_WARNING_LOG_FILE,
00072
00073 vVI_ERROR_SENTINEL
00074 }
00075 vVI_ERROR_CODE;
00076
00077 #define vNUM_VI_ERROR_CODES ( ( vINT )vVI_ERROR_SENTINEL )
00078 #define vVI_PROGRESS_CANCEL vVI_ERROR_SENTINEL
00079
00080 vSTRING GetVolumeIntegrationErrorStr( vVI_ERROR_CODE errorCode );
00081
00082
00083
00084
00085 #define vMAX_INTEGRATION_WIDTH ( UINT_MAX >> 17 )
00086 #define vMAX_INTEGRATION_HEIGHT vMAX_INTEGRATION_WIDTH
00087
00088
00089
00090
00091
00092
00093 DERIVE_PROGRESSPROCARGS( VOLUMEINTEGRATIONARGS,
00094 Workspace *workspace;
00095 vCHAR destDir[ vMAX_PATH ];
00096 vCHAR prefix[ vMAX_PATH ];
00097 vFILE_TYPE destType;
00098 vVI_FUNC_TYPE funcType;
00099 vUNITS_TYPE unitsType;
00100 Color3ub bkgrndColor;
00101 vBOOL doPadNumber;
00102 vFLOAT voxelX;
00103 vFLOAT voxelY;
00104 vFLOAT voxelZ;
00105 );
00106
00107 vVOID VolumeIntegration( vVOID *volumeIntegrationArgs );
00108
00109
00110
00111
00112
00113 vVI_ERROR_CODE CheckIntegrationOverwrite( VOLUMEINTEGRATIONARGS *args, vBOOL *willOverwrite );
00114
00115
00116
00117
00118
00119 vSIZE GetNumIntegratedFiles( Workspace *workspace );
00120
00121
00122
00123
00124 vBOOL MakeIntegrationFileName
00125 (
00126 vSTRING prefix,
00127 vSTRING extension,
00128 vBOOL doPadNumber,
00129 vINT fileNumber,
00130 vINT maxFileNumber,
00131 vSTRING fileName
00132 );
00133
00134
00135 #endif
00136