00001 #ifndef __IMAGESTACKMGR_H__
00002 #define __IMAGESTACKMGR_H__
00003
00004
00005
00006
00007
00008
00009 #include "configure.h"
00010 #include "resourcemgr.h"
00011 #include "handle.h"
00012 #include "projectionmgr.h"
00013 #include "vectori.h"
00014 #include "imagerw.h"
00015
00016
00017 #define vPROJECTION_FILETYPE vFILE_TYPE_TIFF
00018 #define vPROJECTION_PREFIX_MAX 32
00019 #define vPROJECTION_EXTENSION_MAX 15
00020 #define vPROJECTION_FILENAME_MAX ( vPROJECTION_PREFIX_MAX + vPROJECTION_EXTENSION_MAX )
00021 #define vIMAGESTACK_DESC_MAX 63
00022
00023
00024
00025
00026
00027 typedef struct tagImageStack
00028 {
00029
00030
00031
00032 Vector3i oldPosition;
00033 Vector3i currentPosition;
00034
00035
00036
00037 vSIZE oldCropCube[ 6 ];
00038 vSIZE currentCropCube[ 6 ];
00039
00040
00041 vSIZE dimensions[ 3 ];
00042
00043
00044 vSTATES states;
00045
00046 vFLAGS flags;
00047
00048
00049 vHPROJCUBE hCube;
00050
00051
00052
00053
00054 vCHAR nameX[ vPROJECTION_FILENAME_MAX + 1 ];
00055 vCHAR nameY[ vPROJECTION_FILENAME_MAX + 1 ];
00056 vCHAR nameZ[ vPROJECTION_FILENAME_MAX + 1 ];
00057
00058
00059
00060 vCHAR source[ vMAX_PATH + 1 ];
00061 vCHAR filter[ vMAX_PATH + 1 ];
00062
00063
00064 vRECTANGLE client;
00065
00066
00067 vUINT alpha;
00068
00069
00070 vCHAR description[ vIMAGESTACK_DESC_MAX + 1 ];
00071
00072 GImageInfo image_info;
00073 gboolean use_image_info;
00074
00075 gboolean is_inverted;
00076 }
00077 ImageStack;
00078
00079
00080
00081 #define vSTACK_STATE_VISIBLE vBIT_0
00082 #define vSTACK_STATE_POSITION_LOCKED vBIT_1
00083 #define vSTACK_STATE_SELECTED vBIT_2
00084
00085
00086 #define vSTACK_FLAG_CROP_STACK vBIT_0
00087
00088 #define vSTACK_FLAG_DELETED vBIT_2
00089
00090 #define vSTACK_FLAG_ON_FILE vBIT_3
00091
00092
00093 #define vALPHA_FULLY_OPAQUE 255
00094 #define vALPHA_FULLY_TRANSPARENT 0
00095
00096
00097
00098
00099
00100 #define vALPHA_TO_PERCENT( alpha ) ( ( vUINT )( ( ( ( vFLOAT )alpha ) / vALPHA_FULLY_OPAQUE ) * 100 + .5f ) )
00101 #define vPERCENT_TO_ALPHA( percent ) ( ( vUINT )( ( ( ( vFLOAT )percent ) / 100 ) * vALPHA_FULLY_OPAQUE + .5f ) )
00102
00103
00104 typedef struct tagImageStackProjection
00105 {
00106 vUINT hProjection;
00107 vSIZE cropLeft;
00108 vSIZE cropTop;
00109 vSIZE cropWidth;
00110 vSIZE cropHeight;
00111 vSIZE uncropWidth;
00112 vSIZE uncropHeight;
00113 Vector2i cropPosition;
00114 Vector2i uncropPosition;
00115 }
00116 ImageStackProjection;
00117
00118
00119 typedef vHANDLE vHIMAGESTACK;
00120 typedef ResourceManager ImageStackManager;
00121
00122
00123
00124
00125
00126
00127 ImageStackManager* CreateImageStackManager( vUINT initialCapacity );
00128
00129 vVOID DestroyImageStackManager( ImageStackManager **manager );
00130
00131
00132 #endif
00133