00001 #ifndef __PRJMGRFUNCS_H__
00002 #define __PRJMGRFUNCS_H__
00003
00004
00005
00006
00007
00008
00009 #include "configure.h"
00010 #include "imagerw.h"
00011
00012
00013 typedef enum
00014 {
00015 vPROJ_X,
00016 vPROJ_Y,
00017 vPROJ_Z
00018 }
00019 vPROJ_TYPE;
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 vSIZE GetProjectionWidth( vSIZE *dimensions, vPROJ_TYPE projType );
00040 vSIZE GetProjectionHeight( vSIZE *dimensions, vPROJ_TYPE projType );
00041
00042
00043
00044
00045 typedef enum
00046 {
00047 vPROJ_CODE_GRAYSCALE_UCHAR = vPIXEL_CODE_GRAYSCALE_UCHAR,
00048 vPROJ_CODE_GRAYSCALE_USHORT12 = vPIXEL_CODE_GRAYSCALE_USHORT12,
00049 vPROJ_CODE_GRAYSCALE_USHORT16 = vPIXEL_CODE_GRAYSCALE_USHORT16
00050 }
00051 vPROJ_CODE_TYPE;
00052
00053
00054 typedef struct tagProjectionBuffers
00055 {
00056 vVOID *X;
00057 vVOID *Y;
00058 vVOID *Z;
00059 vVOID *lockX;
00060 vSIZE widthX;
00061 vSIZE heightX;
00062 vVOID *lockY;
00063 vSIZE widthY;
00064 vSIZE heightY;
00065 vSIZE widthZ;
00066 vSIZE heightZ;
00067 vSIZE dimensions[ 3 ];
00068
00069 vPROJ_CODE_TYPE projCode;
00070 }
00071 ProjectionBuffers;
00072
00073
00074
00075
00076
00077 vBOOL CreateProjectionBuffers( ProjectionBuffers *buffers );
00078
00079 vVOID DestroyProjectionBuffers( ProjectionBuffers *buffers );
00080
00081
00082
00083
00084 typedef vVOID ( *ProjectionFunction_t )( ProjectionBuffers*, Image_t* );
00085
00086
00087
00088
00089
00090 typedef vVOID ( *RGB24_Function_t )( vVOID *source, vSIZE width, vSIZE height, vVOID *dest );
00091
00092
00093
00094
00095 typedef vVOID ( *RGBA32_Function_t )( vVOID *source, vSIZE width, vSIZE height, vVOID *dest );
00096
00097
00098
00099
00100 typedef vVOID ( *Gamma_Function_t )( vVOID *source, vSIZE width, vSIZE height, vDOUBLE gamma );
00101
00102
00103 #define V_BRIGHTNESS_CONTRAST_MIN -100
00104 #define V_BRIGHTNESS_CONTRAST_MAX 100
00105 typedef void ( *VBrightnessContrastFunc )
00106 ( vpointer pixels, vsize width, vsize height, vint brightness, vint contrast );
00107
00108
00109
00110
00111 #define AlignBytes( bytes )\
00112 ( ( bytes + ( sizeof( vLONG ) - 1 ) ) & ( ~( sizeof( vLONG ) - 1 ) ) )
00113
00114
00115
00116
00117 ProjectionFunction_t GetProjectionFunction( vPROJ_CODE_TYPE projCode );
00118
00119
00120 RGB24_Function_t GetRGB24_Function( vPROJ_CODE_TYPE projCode );
00121
00122 RGBA32_Function_t GetRGBA32_Function( vPROJ_CODE_TYPE projCode );
00123
00124
00125 Gamma_Function_t GetGammaFunction( vPROJ_CODE_TYPE projCode );
00126
00127 VBrightnessContrastFunc v_brightness_constrast_func( vPROJ_CODE_TYPE proj_code );
00128
00129
00130
00131
00132
00133 typedef enum
00134 {
00135 PALETTE_STANDARD,
00136 PALETTE_INVERSE,
00137 PALETTE_SOLAR_FLARE
00138 }
00139 PaletteType;
00140
00141 void palettes_init( void );
00142
00143
00144 #endif
00145