- Timestamp:
- Jan 16, 2014, 3:34:10 AM (11 years ago)
- Location:
- trunk/gui
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/scripts/field.tcl
r4120 r4126 948 948 continue; # Ignore this component 949 949 } 950 set vtkdata [DicomToVtk $cname $contents]951 950 set viewer [$_field get "about.view"] 952 951 if { $viewer != "" } { 953 952 set _viewer $viewer 954 953 } 954 set vtkdata [DicomToVtk $cname $contents] 955 955 if { $_viewer == "" } { 956 956 set _viewer [expr {($_dim == 3) ? "vtkvolume" : "vtkimage"}] … … 1742 1742 } 1743 1743 } 1744 array set data [Rappture::DicomToVtk files $files] 1745 #array set data [Rappture::DicomToVtk dir $path] 1744 1745 #array set data [Rappture::DicomToVtk files $files] 1746 array set data [Rappture::DicomToVtk dir $path] 1746 1747 } else { 1747 1748 array set data [Rappture::DicomToVtk files [list $path]] … … 1760 1761 } 1761 1762 } 1762 1763 1764 # Save viewer choice 1765 set viewer $_viewer 1763 1766 ReadVtkDataSet $cname $data(vtkdata) 1767 # Restore viewer choice (ReadVtkDataSet wants to set it to contour/isosurface) 1768 set _viewer $viewer 1764 1769 return $data(vtkdata) 1765 1770 } -
trunk/gui/src/RpDicomToVtk.cc
r4112 r4126 11 11 * ====================================================================== 12 12 */ 13 14 #define USE_VTK_DICOM_PACKAGE15 13 16 14 #include <vtkSmartPointer.h> … … 46 44 47 45 char *dirName = NULL; 48 vtkSmartPointer<vtkStringArray> pathArray ;46 vtkSmartPointer<vtkStringArray> pathArray = vtkSmartPointer<vtkStringArray>::New(); 49 47 if (isDir) { 50 48 dirName = Tcl_GetString(objv[2]); 51 49 } else { 52 pathArray = vtkSmartPointer<vtkStringArray>::New();53 50 // Get path array from Tcl list 54 51 int pathListc; … … 63 60 } 64 61 62 vtkSmartPointer<vtkDICOMReader> reader = vtkSmartPointer<vtkDICOMReader>::New(); 65 63 #ifdef USE_VTK_DICOM_PACKAGE 66 64 vtkSmartPointer<vtkDICOMSorter> sorter = vtkSmartPointer<vtkDICOMSorter>::New(); … … 70 68 return TCL_ERROR; 71 69 } 72 // FIXME: dir->GetFiles() returns names, not full paths 73 sorter->SetInputFileNames(dir->GetFiles()); 74 sorter->Update(); 75 } else { 76 sorter->SetInputFileNames(pathArray); 77 sorter->Update(); 78 } 70 71 int numFiles = dir->GetNumberOfFiles(); 72 for (int i = 0; i < numFiles; i++) { 73 if (dir->GetFile(i)[0] == '.') { 74 continue; 75 } 76 77 std::string path(dirName); 78 path += "/"; 79 path += dir->GetFile(i); 80 81 if (!dir->FileIsDirectory(path.c_str()) && 82 reader->CanReadFile(path.c_str())) { 83 pathArray->InsertNextValue(path); 84 } else { 85 fprintf(stderr, "Skipping file %s\n", path.c_str()); 86 } 87 } 88 } 89 90 sorter->SetInputFileNames(pathArray); 91 sorter->Update(); 79 92 80 93 int numStudies = sorter->GetNumberOfStudies(); … … 114 127 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(series)); 115 128 116 vtkSmartPointer<vtkDICOMReader> reader = vtkSmartPointer<vtkDICOMReader>::New();117 129 reader->SetFileNames(files); 118 130 #else … … 136 148 } 137 149 vtkIntArray *fidxArray = reader->GetFileIndexArray(); 150 vtkDICOMMetaData *md = reader->GetMetaData(); 151 int numComp = fidxArray->GetNumberOfComponents(); 152 #if 0 138 153 for (int i = 0; i < fidxArray->GetNumberOfTuples(); i++) { 139 154 fprintf(stderr, "%d:", i); 140 155 for (int j = 0; j < fidxArray->GetNumberOfComponents(); j++) { 141 fprintf(stderr, " %d", (int)fidxArray->GetComponent(i, j)); 156 int idx = (int)fidxArray->GetComponent(i, j); 157 fprintf(stderr, " %d", idx); 142 158 } 143 159 fprintf(stderr, "\n"); 144 160 } 161 #endif 162 fprintf(stderr, "Number of data elements: %d\n", md->GetNumberOfDataElements()); 163 164 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("num_components", -1)); 165 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(numComp)); 166 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("modality", -1)); 167 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::Modality).AsString().c_str(), -1)); 168 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("patient_name", -1)); 169 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::PatientName).AsString().c_str(), -1)); 170 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("transfer_syntax_uid", -1)); 171 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::TransferSyntaxUID).AsString().c_str(), -1)); 172 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("study_uid", -1)); 173 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::StudyInstanceUID).AsString().c_str(), -1)); 174 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("study_id", -1)); 175 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::StudyID).AsString().c_str(), -1)); 176 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("series_number", -1)); 177 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetAttributeValue(DC::SeriesNumber).AsInt())); 178 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("series_in_study", -1)); 179 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetAttributeValue(DC::SeriesInStudy).AsInt())); 180 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("series_uid", -1)); 181 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::SeriesInstanceUID).AsString().c_str(), -1)); 182 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("bits_allocated", -1)); 183 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetAttributeValue(DC::BitsAllocated).AsInt())); 184 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("bits_stored", -1)); 185 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(md->GetAttributeValue(DC::BitsStored).AsInt())); 186 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("pixel_representation", -1)); 187 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(md->GetAttributeValue(DC::PixelRepresentation).AsString().c_str(), -1)); 188 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("rescale_slope", -1)); 189 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(md->GetAttributeValue(DC::RescaleSlope).AsDouble())); 190 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("rescale_intercept", -1)); 191 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(md->GetAttributeValue(DC::RescaleIntercept).AsDouble())); 145 192 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("time_dimension", -1)); 146 193 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(reader->GetTimeDimension())); … … 149 196 150 197 fprintf(stderr, "Time dim: %d, spacing: %g\n", reader->GetTimeDimension(), reader->GetTimeSpacing()); 151 vtkDICOMMetaData *md = reader->GetMetaData();152 198 fprintf(stderr, "Number of files: %d\n", md->GetNumberOfInstances()); 153 199 #else 154 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("descriptive_name", -1));155 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(reader->GetDescriptiveName(), -1));156 200 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("patient_name", -1)); 157 201 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(reader->GetPatientName(), -1)); … … 162 206 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("study_id", -1)); 163 207 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj(reader->GetStudyID(), -1)); 208 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("num_components", -1)); 209 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(reader->GetNumberOfComponents())); 164 210 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("bits_allocated", -1)); 165 211 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewIntObj(reader->GetBitsAllocated())); … … 169 215 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("rescale_slope", -1)); 170 216 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(reader->GetRescaleSlope())); 217 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("rescale_offset", -1)); 218 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(reader->GetRescaleOffset())); 171 219 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewStringObj("gantry_angle", -1)); 172 220 Tcl_ListObjAppendElement(interp, metaDataObj, Tcl_NewDoubleObj(reader->GetGantryAngle())); 173 221 174 fprintf(stderr, "Descriptive name: %s\n", reader->GetDescriptiveName());175 222 fprintf(stderr, "Patient name: %s\n", reader->GetPatientName()); 176 223 fprintf(stderr, "Transfer Syntax UID: %s\n", reader->GetTransferSyntaxUID());
Note: See TracChangeset
for help on using the changeset viewer.