Skip to content

Commit 54ce3d6

Browse files
authored
Merge branch 'master' into PARCHG---Electron-Density-Volume-Renderer
2 parents ccb3f06 + 303d2ce commit 54ce3d6

17 files changed

+553
-398
lines changed

Assets/3rdparty/openDicom/Registry/DataElementDictionary.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,25 @@ public void LoadFrom(string fileName, DictionaryFileFormat fileFormat)
434434
if (global == null) Global = this;
435435
}
436436

437+
public void LoadFromMemory(MemoryStream memStream, DictionaryFileFormat fileFormat)
438+
{
439+
if (!IsEmpty) Clear();
440+
StreamReader streamReader = new StreamReader(memStream);
441+
switch (fileFormat)
442+
{
443+
case DictionaryFileFormat.BinaryFile:
444+
LoadFromBinary(streamReader); break;
445+
case DictionaryFileFormat.PropertyFile:
446+
LoadFromProperty(streamReader); break;
447+
case DictionaryFileFormat.CsvFile:
448+
LoadFromCsv(streamReader); break;
449+
case DictionaryFileFormat.XmlFile:
450+
LoadFromXml(streamReader); break;
451+
}
452+
streamReader.Close();
453+
if (global == null) Global = this;
454+
}
455+
437456
private void SaveAsBinary(StreamWriter streamWriter,
438457
DataElementDictionaryEntry[] entryArray)
439458
{

Assets/3rdparty/openDicom/Registry/UidDictionary.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,25 @@ public void LoadFrom(string fileName, DictionaryFileFormat fileFormat)
308308
if (global == null) Global = this;
309309
}
310310

311+
public void LoadFromMemory(MemoryStream memStream, DictionaryFileFormat fileFormat)
312+
{
313+
if (!IsEmpty) Clear();
314+
StreamReader streamReader = new StreamReader(memStream);
315+
switch (fileFormat)
316+
{
317+
case DictionaryFileFormat.BinaryFile:
318+
LoadFromBinary(streamReader); break;
319+
case DictionaryFileFormat.PropertyFile:
320+
LoadFromProperty(streamReader); break;
321+
case DictionaryFileFormat.CsvFile:
322+
LoadFromCsv(streamReader); break;
323+
case DictionaryFileFormat.XmlFile:
324+
LoadFromXml(streamReader); break;
325+
}
326+
streamReader.Close();
327+
if (global == null) Global = this;
328+
}
329+
311330
private void SaveAsBinary(StreamWriter streamWriter,
312331
UidDictionaryEntry[] entryArray)
313332
{
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using UnityEditor;
2+
using UnityEngine;
3+
4+
namespace UnityVolumeRendering
5+
{
6+
public class ImportSettingsEditorWindow : EditorWindow
7+
{
8+
public static void ShowWindow()
9+
{
10+
ImportSettingsEditorWindow wnd = new ImportSettingsEditorWindow();
11+
wnd.Show();
12+
}
13+
14+
private void OnGUI()
15+
{
16+
EditorGUILayout.LabelField("Show promt asking if you want to downscale the dataset on import?");
17+
bool showDownscalePrompt = EditorGUILayout.Toggle("Show downscale prompt", EditorPrefs.GetBool("DownscaleDatasetPrompt"));
18+
EditorPrefs.SetBool("DownscaleDatasetPrompt", showDownscalePrompt);
19+
}
20+
}
21+
}

Assets/Editor/ImportSettingsEditorWindow.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Editor/RAWDatasetImporterEditorWIndow.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,19 @@ public RAWDatasetImporterEditorWindow(string filePath)
4343

4444
private void ImportDataset()
4545
{
46-
RawDatasetImporter importer = new RawDatasetImporter(fileToImport, dimX, dimY, dimZ, dataFormat, endianness, bytesToSkip);
47-
46+
RawDatasetImporter importer = new RawDatasetImporter(fileToImport, dimX, dimY, dimZ, dataFormat, endianness, bytesToSkip);
4847
VolumeDataset dataset = importer.Import();
4948

5049
if (dataset != null)
5150
{
51+
if (EditorPrefs.GetBool("DownscaleDatasetPrompt"))
52+
{
53+
if (EditorUtility.DisplayDialog("Optional DownScaling",
54+
$"Do you want to downscale the dataset? The dataset's dimension is: {dataset.dimX} x {dataset.dimY} x {dataset.dimZ}", "Yes", "No"))
55+
{
56+
dataset.DownScaleData();
57+
}
58+
}
5259
VolumeRenderedObject obj = VolumeObjectFactory.CreateObject(dataset);
5360
}
5461
else

Assets/Editor/TransferFunction2DEditorWindow.cs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ private void OnGUI()
9393
TransferFunction2D.TF2DBox box = tf2d.boxes[selectedBoxIndex];
9494
float oldX = box.rect.x;
9595
float oldY = box.rect.y;
96-
box.rect.x = EditorGUI.Slider(new Rect(startX, startY, 200.0f, 20.0f), "x", box.rect.x, 0.0f, 0.99f);
97-
box.rect.width = EditorGUI.Slider(new Rect(startX + 220.0f, startY, 200.0f, 20.0f), "width", oldX + box.rect.width, box.rect.x + 0.01f, 1.0f) - box.rect.x;
98-
box.rect.y = EditorGUI.Slider(new Rect(startX, startY + 50, 200.0f, 20.0f), "y", box.rect.y, 0.0f, 1.0f);
99-
box.rect.height = EditorGUI.Slider(new Rect(startX + 220.0f, startY + 50, 200.0f, 20.0f), "height", oldY + box.rect.height, box.rect.y + 0.01f, 1.0f) - box.rect.y;
96+
box.rect.x = EditorGUI.Slider(new Rect(startX, startY, 200.0f, 20.0f), "min x", box.rect.x, 0.0f, 0.99f);
97+
box.rect.width = EditorGUI.Slider(new Rect(startX + 220.0f, startY, 200.0f, 20.0f), "max x", oldX + box.rect.width, box.rect.x + 0.01f, 1.0f) - box.rect.x;
98+
box.rect.y = EditorGUI.Slider(new Rect(startX, startY + 50, 200.0f, 20.0f), "min y", box.rect.y, 0.0f, 1.0f);
99+
box.rect.height = EditorGUI.Slider(new Rect(startX + 220.0f, startY + 50, 200.0f, 20.0f), "max y", oldY + box.rect.height, box.rect.y + 0.01f, 1.0f) - box.rect.y;
100100
box.colour = EditorGUI.ColorField(new Rect(startX + 450.0f, startY + 10, 100.0f, 20.0f), box.colour);
101101
box.minAlpha = EditorGUI.Slider(new Rect(startX + 450.0f, startY + 30, 200.0f, 20.0f), "min alpha", box.minAlpha, 0.0f, 1.0f);
102102
box.alpha = EditorGUI.Slider(new Rect(startX + 450.0f, startY + 60, 200.0f, 20.0f), "max alpha", box.alpha, 0.0f, 1.0f);
@@ -110,28 +110,29 @@ private void OnGUI()
110110
}
111111

112112
// Add new rectangle
113-
if (GUI.Button(new Rect(startX, startY + 100, 110.0f, 30.0f), "Add rectangle"))
113+
if (GUI.Button(new Rect(startX, startY + 100, 150.0f, 30.0f), "Add rectangle"))
114114
{
115115
tf2d.AddBox(0.1f, 0.1f, 0.8f, 0.8f, Color.white, 0.5f);
116116
needsRegenTexture = true;
117117
}
118118
// Remove selected shape
119119
if (selectedBoxIndex != -1)
120120
{
121-
if (GUI.Button(new Rect(startX, startY + 140, 110.0f, 30.0f), "Remove selected shape"))
121+
if (GUI.Button(new Rect(startX, startY + 140, 150.0f, 30.0f), "Remove selected shape"))
122122
{
123123
tf2d.boxes.RemoveAt(selectedBoxIndex);
124+
selectedBoxIndex = -1;
124125
needsRegenTexture = true;
125126
}
126127
}
127128

128-
if(GUI.Button(new Rect(startX, startY + 180, 110.0f, 30.0f), "Save"))
129+
if(GUI.Button(new Rect(startX, startY + 180, 150.0f, 30.0f), "Save"))
129130
{
130131
string filepath = EditorUtility.SaveFilePanel("Save transfer function", "", "default.tf2d", "tf2d");
131132
if(filepath != "")
132133
TransferFunctionDatabase.SaveTransferFunction2D(tf2d, filepath);
133134
}
134-
if(GUI.Button(new Rect(startX, startY + 220, 110.0f, 30.0f), "Load"))
135+
if(GUI.Button(new Rect(startX, startY + 220, 150.0f, 30.0f), "Load"))
135136
{
136137
string filepath = EditorUtility.OpenFilePanel("Save transfer function", "", "tf2d");
137138
if(filepath != "")
@@ -151,8 +152,6 @@ private void OnGUI()
151152
tf2d.GenerateTexture();
152153
needsRegenTexture = false;
153154
}
154-
155-
return;
156155
}
157156

158157
private void OnSelectionChange()

Assets/Editor/VolumeRendererEditorFunctions.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,21 @@ static void ShowDICOMImporter()
6565
DICOMImporter importer = new DICOMImporter(fileCandidates, Path.GetFileName(dir));
6666
List<DICOMImporter.DICOMSeries> seriesList = importer.LoadDICOMSeries();
6767
float numVolumesCreated = 0;
68+
6869
foreach (DICOMImporter.DICOMSeries series in seriesList)
6970
{
7071
VolumeDataset dataset = importer.ImportDICOMSeries(series);
7172
if (dataset != null)
7273
{
74+
if (EditorPrefs.GetBool("DownscaleDatasetPrompt"))
75+
{
76+
if (EditorUtility.DisplayDialog("Optional DownScaling",
77+
$"Do you want to downscale the dataset? The dataset's dimension is: {dataset.dimX} x {dataset.dimY} x {dataset.dimZ}", "Yes", "No"))
78+
{
79+
dataset.DownScaleData();
80+
}
81+
}
82+
7383
VolumeRenderedObject obj = VolumeObjectFactory.CreateObject(dataset);
7484
obj.transform.position = new Vector3(numVolumesCreated, 0, 0);
7585
numVolumesCreated++;
@@ -91,12 +101,24 @@ static void ShowDICOMImporter()
91101
static void ShowSequenceImporter()
92102
{
93103
string dir = EditorUtility.OpenFolderPanel("Select a folder to load", "", "");
104+
94105
if (Directory.Exists(dir))
95106
{
96107
ImageSequenceImporter importer = new ImageSequenceImporter(dir);
108+
97109
VolumeDataset dataset = importer.Import();
98110
if (dataset != null)
111+
{
112+
if (EditorPrefs.GetBool("DownscaleDatasetPrompt"))
113+
{
114+
if (EditorUtility.DisplayDialog("Optional DownScaling",
115+
$"Do you want to downscale the dataset? The dataset's dimension is: {dataset.dimX} x {dataset.dimY} x {dataset.dimZ}", "Yes", "No"))
116+
{
117+
dataset.DownScaleData();
118+
}
119+
}
99120
VolumeObjectFactory.CreateObject(dataset);
121+
}
100122
}
101123
else
102124
{
@@ -148,5 +170,11 @@ static void ShowValueRangeWindow()
148170
{
149171
ValueRangeEditorWindow.ShowWindow();
150172
}
173+
174+
[MenuItem("Volume Rendering/Settigs")]
175+
static void ShowSettingsWindow()
176+
{
177+
ImportSettingsEditorWindow.ShowWindow();
178+
}
151179
}
152180
}

Assets/StreamingAssets/dicom-elements-2007.dic.meta renamed to Assets/Resources/dicom-elements-2007.dic.bytes.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)