#include <slice.h>
Public Types | |
| enum | { XY, XZ, YZ } |
Public Methods | |
| Slice () | |
| ~Slice () | |
| bool | SetType (int tp) |
| int | GetType () |
| int | GetSliceNumber (Data *dat=NULL) |
| void | SetTransferfunction (Transfunc *transferfunction) |
| bool | SetPixels (Data *dat, int dp) |
| void | SetZoom (bool zoom) |
| bool | GetZoom () |
| void | SetTransfer (bool transfer) |
| bool | GetTransfer () |
| bool | SetPixels (Transfunc *tf, Data *dat, int dp) |
| bool | DrawSlice (int width, int height) |
| void | GetImageInfo (int &width, int &height, int &x, int &y, int &plane, int &depth) |
| rgb * | GetScreenShotImage (int &width, int &height) |
Private Attributes | |
| int | m_depth |
| int | m_type |
| int | m_x |
| int | m_y |
| int | m_width |
| int | m_height |
| rgb * | slice_data |
| bool | m_bZoom |
| bool | m_bUseTransfer |
| int | m_dSliceNumber |
| Transfunc * | m_tTransferfunction |
|
|
Definition at line 27 of file slice.h.
|
|
|
Definition at line 4 of file slice.cpp. References m_bUseTransfer, m_bZoom, m_depth, m_dSliceNumber, m_height, m_tTransferfunction, m_type, m_width, and slice_data.
00005 {
00006 m_depth=0;
00007 m_height=0;
00008 m_width=0;
00009 m_type=0; // xy Plane as default value
00010 slice_data = NULL;
00011 m_dSliceNumber = -1;
00012 m_bZoom = false;
00013 m_bUseTransfer = false;
00014 m_tTransferfunction = NULL;
00015 }
|
|
|
Definition at line 18 of file slice.cpp. References slice_data.
00019 {
00020 if(slice_data != NULL) delete slice_data;
00021 }
|
|
||||||||||||
|
Definition at line 157 of file slice.cpp. References m_bZoom, m_height, m_width, m_x, m_y, and slice_data. Referenced by CMy3dvisView::RenderScene().
00158 {
00159 float zoomx = (float)width / (float)m_width;
00160 float zoomy = (float)height / (float)m_height;
00161 float zoom;
00162
00163
00164 if (zoomx < zoomy) {
00165 zoom = zoomx;
00166 m_x = 0;
00167 m_y = height / 2 - (m_height * zoom) / 2;
00168 }
00169 else {
00170 zoom = zoomy;
00171 m_y = 0;
00172 m_x = width / 2 - (m_width * zoom) / 2;
00173 }
00174
00175
00176 if (!m_bZoom) {
00177 zoom = 1.0f;
00178 m_x = width / 2 - m_width / 2;
00179 m_y = height / 2 - m_height / 2;
00180 }
00181
00182
00183 if(slice_data == NULL) return false;
00184 glRasterPos2i(m_x, m_y);
00185 glPixelStorei(GL_UNPACK_ALIGNMENT,1);
00186 glPixelZoom(zoom, zoom);
00187 glDrawPixels(m_width, m_height, GL_RGB, GL_UNSIGNED_BYTE, slice_data);
00188 return true;
00189 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 194 of file slice.cpp. References m_depth, m_height, m_type, m_width, m_x, and m_y.
|
|
||||||||||||
|
Definition at line 48 of file slice.h. Referenced by CMy3dvisView::OnFileSaveImage().
00048 { width = m_width;
00049 height = m_height;
00050 return slice_data; };
|
|
|
Definition at line 38 of file slice.cpp. References Data::GetXDim(), Data::GetYDim(), Data::GetZDim(), m_dSliceNumber, XY, XZ, and YZ. Referenced by dialogbar::OnShowWindow().
00038 {
00039 if (dat == NULL)
00040 return m_dSliceNumber;
00041
00042 switch (m_type) {
00043 case XY:
00044 m_dSliceNumber = dat->GetZDim() - 1;
00045 break;
00046 case XZ:
00047 m_dSliceNumber = dat->GetYDim() - 1;
00048 break;
00049 case YZ:
00050 m_dSliceNumber = dat->GetXDim() - 1;
00051 break;
00052 }
00053 return m_dSliceNumber;
00054 }
|
|
|
Definition at line 43 of file slice.h. Referenced by dialogbar::OnCheckUseTransfer().
00043 { return m_bUseTransfer; }
|
|
|
Definition at line 32 of file slice.cpp. References m_type.
00033 {
00034 return m_type;
00035 }
|
|
|
Definition at line 40 of file slice.h. Referenced by dialogbar::OnCheckZoom().
00040 { return m_bZoom; }
|
|
||||||||||||||||
|
Definition at line 58 of file slice.cpp. References rgb::b, CLAMP0255, rgb::g, Data::GetDensity(), Data::GetXDim(), Data::GetYDim(), Data::GetZDim(), m_bUseTransfer, m_depth, m_height, m_type, m_width, rgb::r, slice_data, XY, XZ, and YZ.
00059 {
00060 if (m_bUseTransfer && tf == NULL)
00061 m_bUseTransfer = false;
00062
00063 int size = 0;
00064 if(slice_data != NULL) delete slice_data;
00065 m_depth = dp;
00066 int density;
00067
00068 if(m_type == XY)
00069 { // XY Plane
00070 m_width = (int)dat->GetXDim();
00071 m_height = (int)dat->GetYDim();
00072 size = m_width*m_height;
00073 slice_data = new rgb[size];
00074 for(int i = 0; i < m_height; i++)
00075 {
00076 for(int j = 0; j < m_width; j++)
00077 {
00078 if (m_bUseTransfer) {
00079 density = dat->GetDensity(j,i,m_depth);
00080 slice_data[i*m_width+j] = tf->GetDensityColor(density);
00081 }
00082 else {
00083 density = dat->GetDensity(j, i, m_depth) / 16;
00084 density = CLAMP0255(density);
00085 rgb col;
00086 col.r = density;
00087 col.g = density;
00088 col.b = density;
00089 slice_data[i * m_width + j] = col;
00090 }
00091 }
00092 }
00093 }
00094
00095 if(m_type == XZ)
00096 { // XZ Plane
00097 m_width = dat->GetXDim();
00098 m_height = dat->GetZDim();
00099 size = m_width*m_height;
00100 slice_data = new rgb[size];
00101 for(int i = 0; i < m_height; i++)
00102 {
00103 for(int j = 0; j < m_width; j++)
00104 {
00105 if (m_bUseTransfer) {
00106 density = dat->GetDensity(j,m_depth,i);
00107 slice_data[i*m_width+j] = tf->GetDensityColor(density);
00108 }
00109 else {
00110 density = dat->GetDensity(j, m_depth, i) / 16;
00111 density = CLAMP0255(density);
00112 rgb col;
00113 col.r = density;
00114 col.g = density;
00115 col.b = density;
00116 slice_data[i * m_width + j] = col;
00117 }
00118 }
00119 }
00120 }
00121
00122 if(m_type == YZ)
00123 { //YZ Plane
00124 m_width = dat->GetYDim();
00125 m_height = dat->GetZDim();
00126 size = m_width*m_height;
00127 slice_data = new rgb[size];
00128 for(int i = 0; i < m_height; i++)
00129 {
00130 for(int j = 0; j < m_width; j++)
00131 {
00132 if (m_bUseTransfer) {
00133 density = dat->GetDensity(m_depth,j,i);
00134 slice_data[i*m_width+j] = tf->GetDensityColor(density);
00135 }
00136 else {
00137 density = dat->GetDensity(m_depth, j, i) / 16;
00138 density = CLAMP0255(density);
00139 rgb col;
00140 col.r = density;
00141 col.g = density;
00142 col.b = density;
00143 slice_data[i * m_width + j] = col;
00144 }
00145 }
00146 }
00147 }
00148
00149 return true;
00150 }
|
|
||||||||||||
|
Definition at line 37 of file slice.h. Referenced by ON_BN_CLICKED(), dialogbar::OnCheckUseTransfer(), dialogbar::OnHScroll(), dialogbar::OnRadioXz(), dialogbar::OnRadioYz(), and dialogbar::OnShowWindow().
00037 { return SetPixels(m_tTransferfunction, dat, dp == -1 ? m_depth : dp); }
|
|
|
Definition at line 42 of file slice.h. Referenced by dialogbar::OnCheckUseTransfer().
00042 { m_bUseTransfer = transfer; }
|
|
|
Definition at line 36 of file slice.h.
00036 { m_tTransferfunction = transferfunction; }
|
|
|
Definition at line 24 of file slice.cpp. References m_type. Referenced by ON_BN_CLICKED(), dialogbar::OnRadioXz(), and dialogbar::OnRadioYz().
00025 {
00026 if ((tp < 0)||(tp > 2)) return false;
00027 m_type = tp;
00028 return true;
00029 }
|
|
|
Definition at line 39 of file slice.h. Referenced by dialogbar::OnCheckZoom().
00039 { m_bZoom = zoom; }
|
|
|
Definition at line 20 of file slice.h. Referenced by SetPixels(), and Slice(). |
|
|
Definition at line 19 of file slice.h. Referenced by DrawSlice(), and Slice(). |
|
|
Definition at line 13 of file slice.h. Referenced by GetImageInfo(), SetPixels(), and Slice(). |
|
|
Definition at line 21 of file slice.h. Referenced by GetSliceNumber(), and Slice(). |
|
|
Definition at line 16 of file slice.h. Referenced by DrawSlice(), GetImageInfo(), SetPixels(), and Slice(). |
|
|
Definition at line 22 of file slice.h. Referenced by Slice(). |
|
|
Definition at line 14 of file slice.h. Referenced by GetImageInfo(), GetType(), SetPixels(), SetType(), and Slice(). |
|
|
Definition at line 16 of file slice.h. Referenced by DrawSlice(), GetImageInfo(), SetPixels(), and Slice(). |
|
|
Definition at line 15 of file slice.h. Referenced by DrawSlice(), and GetImageInfo(). |
|
|
Definition at line 15 of file slice.h. Referenced by DrawSlice(), and GetImageInfo(). |
|
|
Definition at line 17 of file slice.h. Referenced by DrawSlice(), SetPixels(), Slice(), and ~Slice(). |
1.3-rc2