00001 //-------------------------------------------------- 00012 //--------------------------------------------------- 00013 00014 #include "meta_volume_pixel_view.h" 00015 #include "meta_volume_pixel_data_viewer.h" 00016 00017 namespace imedgine 00018 { 00019 MetaVolumePixelView::MetaVolumePixelView() 00020 : VolumePixelView(META_VOLUME_PIXEL_VIEW) 00021 { 00022 } 00023 00024 //--------------------------------------------------- 00025 00026 MetaVolumePixelView::MetaVolumePixelView(MetaVolumePixelView const& src) 00027 : VolumePixelView(src) 00028 { 00029 } 00030 00031 //--------------------------------------------------- 00032 00033 MetaVolumePixelView::~MetaVolumePixelView() 00034 { 00035 #ifdef DEBUG 00036 std::cout << "Deleting META_VOLUME_PIXEL_VIEW" << std::endl; 00037 #endif 00038 } 00039 00040 //-------------------------------------------------- 00041 00042 view_pointer_type MetaVolumePixelView::clone() const 00043 { 00044 return(view_pointer_type(new MetaVolumePixelView(*this))); 00045 } 00046 00047 //-------------------------------------------------- 00048 00049 void MetaVolumePixelView::setParent(QWidget* view_parent) 00050 throw(NullPointerException) 00051 { 00052 if (view_parent == 0) 00053 { 00054 throw(NullPointerException("SlicePixelView::setParent")); 00055 } 00056 00057 viewer_ = new MetaVolumePixelDataViewer(this, view_parent_); 00058 } 00059 00060 //--------------------------------------------------- 00061 00062 void MetaVolumePixelView::onDataChangedEvent(dataset_attribute_type changed_attribute) 00063 { 00064 if ((volume_dataset_.get() == 0) || (volume_dataset_->isDataSet() == false)) 00065 { 00066 return; 00067 } 00068 00069 switch (changed_attribute) 00070 { 00071 case DATASET_ATTRIBUTE_FOCUS_POINT : 00072 { 00073 // TODO: Visualization of Focus Point 00074 break; 00075 } 00076 case DATASET_ATTRIBUTE_INTENSITY : 00077 { 00078 viewer_->setIntensityInGui( 00079 static_cast<unsigned int>(volume_dataset_->getIntensityWindow()), 00080 static_cast<int>(volume_dataset_->getIntensityLevel())); 00081 break; 00082 } 00083 case DATASET_ATTRIBUTE_TRANSFORMATION : 00084 { 00085 viewer_->setAffineTransformationMatrixInGui( 00086 volume_dataset_->getTransformationMatrix()); 00087 break; 00088 00089 } 00090 case DATASET_ATTRIBUTE_TRANSLATION : 00091 { 00092 viewer_->setOffsetVectorInGui(volume_dataset_->getOffsetVector()); 00093 break; 00094 } 00095 default : 00096 {} 00097 } 00098 } 00099 00100 //--------------------------------------------------- 00101 00102 void MetaVolumePixelView::updateView() 00103 throw(NullPointerException) 00104 { 00105 if ((volume_dataset_.get() == 0) || (volume_dataset_->isDataSet() == false)) 00106 { 00107 return; 00108 } 00109 00110 viewer_->setIntensityInGui( 00111 static_cast<unsigned int>(volume_dataset_->getIntensityWindow()), 00112 static_cast<int>(volume_dataset_->getIntensityLevel())); 00113 viewer_->setAffineTransformationMatrixInGui( 00114 volume_dataset_->getTransformationMatrix()); 00115 viewer_->setOffsetVectorInGui(volume_dataset_->getOffsetVector()); 00116 } 00117 00118 //-------------------------------------------------- 00119 00120 void MetaVolumePixelView::setFocusPointXDimension(index_type x_index) 00121 { 00122 if ((volume_dataset_.get() == 0) || (volume_dataset_->isDataSet() == false)) 00123 { 00124 return; 00125 } 00126 00127 try 00128 { 00129 volume_dataset_->setFocusPointAt(X_DIMENSION, x_index); 00130 } 00131 catch (IndexOutOfBoundsException const&) 00132 { 00133 volume_dataset_->setFocusPointAt( 00134 X_DIMENSION, volume_dataset_->getSize()[X_DIMENSION] - 1); 00135 } 00136 00137 notifyDataChangedEvent(DATASET_ATTRIBUTE_FOCUS_POINT); 00138 } 00139 00140 //-------------------------------------------------- 00141 00142 void MetaVolumePixelView::setFocusPointYDimension(index_type y_index) 00143 { 00144 if ((volume_dataset_.get() == 0) || (volume_dataset_->isDataSet() == false)) 00145 { 00146 return; 00147 } 00148 00149 try 00150 { 00151 volume_dataset_->setFocusPointAt(Y_DIMENSION, y_index); 00152 } 00153 catch (IndexOutOfBoundsException const&) 00154 { 00155 volume_dataset_->setFocusPointAt( 00156 Y_DIMENSION, volume_dataset_->getSize()[Y_DIMENSION] - 1); 00157 } 00158 00159 notifyDataChangedEvent(DATASET_ATTRIBUTE_FOCUS_POINT); 00160 } 00161 00162 //-------------------------------------------------- 00163 00164 void MetaVolumePixelView::setFocusPointZDimension(index_type z_index) 00165 { 00166 if ((volume_dataset_.get() == 0) || (volume_dataset_->isDataSet() == false)) 00167 { 00168 return; 00169 } 00170 00171 try 00172 { 00173 volume_dataset_->setFocusPointAt(Z_DIMENSION, z_index); 00174 } 00175 catch (IndexOutOfBoundsException const&) 00176 { 00177 volume_dataset_->setFocusPointAt( 00178 Z_DIMENSION, volume_dataset_->getSize()[Z_DIMENSION] - 1); 00179 } 00180 00181 notifyDataChangedEvent(DATASET_ATTRIBUTE_FOCUS_POINT); 00182 } 00183 00184 //-------------------------------------------------- 00185 00186 QWidget* MetaVolumePixelView::getViewer() 00187 { 00188 return(viewer_); 00189 00190 } 00191 00192 //-------------------------------------------------- 00193 dataset_position_type MetaVolumePixelView::getSizeOfDataset() const 00194 { 00195 if (volume_dataset_.get() == 0) 00196 { 00197 return(dataset_position_type()); 00198 } 00199 return volume_dataset_->getSize(); 00200 } 00201 00202 }