diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..c40a136
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,79 @@
+# CLAUDE.md
+
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
+
+## Project Overview
+
+MprIsocurveMvvm is a WPF application demonstrating 3D medical image rendering with isocurve (contour) generation. It uses MPR (Multiplanar Reconstruction) to extract 2D slices from 3D image volumes.
+
+**Tech Stack:** Mixed C#/F# on .NET 8, WPF, Prism MVVM Framework, Unity DI Container
+
+## Build Commands
+
+```bash
+# Build solution (from MprIsocurveMvvm directory)
+dotnet build MprIsocurveGeneration.sln
+
+# Build release
+dotnet build MprIsocurveGeneration.sln -c Release
+
+# Run application (Windows only - WPF)
+dotnet run --project MprIsocurveGeneration/MprIsocurveMvvmViewer.csproj
+```
+
+Note: Cross-compiling on macOS/Linux is enabled via `Directory.Build.props` with `EnableWindowsTargeting=true`, but the WPF application can only run on Windows.
+
+## Architecture
+
+### Module System (Prism-based)
+
+The application uses Prism's modular architecture with four main modules:
+
+1. **MprIsocurveGeneration** (Main App) - Shell window, region definitions, Prism bootstrapper
+2. **DataLoaderModule** - Volume data loading/generation, ModelRepository for 3D data storage
+3. **RenderModule** (C#) - ViewModels for rendering, FrameUpdateManager for async UI updates
+4. **FsRenderModule** (F#) - Core algorithms: MPR slice extraction, isocurve generation (marching squares)
+
+### Dependency Flow
+```
+MprIsocurveGeneration → DataLoaderModule, RenderModule, Infrastructure
+RenderModule → FsRenderModule, Infrastructure
+DataLoaderModule → Infrastructure
+FsRenderModule → Infrastructure
+```
+
+### Key Patterns
+
+- **Event Aggregator**: Cross-module communication via events (SetIsocurveLevelEvent, NavigationPointUpdateEvent, ImageDataLoadedEvent, VolumeUpdatedEvent)
+- **Repository Pattern**: IModelRepository provides thread-safe access to 3D volume data (singleton via Unity)
+- **Frame Update Queue**: FrameUpdateManager batches async computation results by timestamp to prevent UI thread contention
+- **Hybrid F#/C#**: Complex algorithms in F# for correctness, UI wrappers in C#
+
+### Volume Orientation System
+
+Three standard medical imaging orientations:
+- **Transverse**: XY plane slice, varying Z (top-down)
+- **Sagittal**: YZ plane slice, varying X (side view)
+- **Coronal**: XZ plane slice, varying Y (front view)
+
+### Core Data Structures
+
+- **UniformImageVolumeModel**: 3D byte array `byte[depth, height, width]` with voxel spacing
+- **MprImageViewModel** (F#): Base class managing async slice generation from volume
+- **IsocurveFunction**: Marching squares algorithm with 16-case lookup table, parallel processing
+
+### UI Regions (Shell.xaml)
+
+- **BlockLayoutRegion**: Main image rendering area
+- **SidebarRegion**: Controls (isocurve level, data loader)
+
+## Project Structure
+
+```
+MprIsocurveMvvm/
+├── Infrastructure/ # Shared interfaces and events
+├── DataLoaderModule/ # Volume loading, ModelRepository
+├── RenderModule/ # C# ViewModels, views, FrameUpdateManager
+├── FsRenderModule/ # F# algorithms (MprGeneration.fs, IsocurveGeneration.fs)
+└── MprIsocurveGeneration/ # Main app, Shell, module registration
+```
diff --git a/MprIsocurveMvvm/DataLoaderModule/DataLoaderModule.csproj b/MprIsocurveMvvm/DataLoaderModule/DataLoaderModule.csproj
index 5403a86..4ffea44 100644
--- a/MprIsocurveMvvm/DataLoaderModule/DataLoaderModule.csproj
+++ b/MprIsocurveMvvm/DataLoaderModule/DataLoaderModule.csproj
@@ -1,187 +1,20 @@
-
-
-
+
+
- Debug
- AnyCPU
- {0DF35AB2-800A-4148-8052-7723B9F348A1}
- Library
- Properties
- DataLoaderModule
- DataLoaderModule
- v4.8
- 512
-
-
-
+ net8.0-windows
+ true
+ disable
+ disable
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- ..\packages\CommonServiceLocator.2.0.6\lib\net48\CommonServiceLocator.dll
-
-
- ..\packages\fo-dicom.Desktop.4.0.8\lib\net45\Dicom.Core.dll
-
-
- ..\packages\fo-dicom.5.0.3\lib\netstandard2.0\fo-dicom.core.dll
-
-
- ..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll
-
-
- ..\packages\Microsoft.Bcl.HashCode.1.1.1\lib\net461\Microsoft.Bcl.HashCode.dll
-
-
- ..\packages\Microsoft.Extensions.DependencyInjection.6.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.dll
-
-
- ..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.6.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.Abstractions.dll
-
-
- ..\packages\Microsoft.Extensions.Options.6.0.0\lib\net461\Microsoft.Extensions.Options.dll
-
-
- ..\packages\Microsoft.Extensions.Primitives.6.0.0\lib\net461\Microsoft.Extensions.Primitives.dll
-
-
- ..\packages\Microsoft.Toolkit.HighPerformance.7.1.2\lib\netstandard2.0\Microsoft.Toolkit.HighPerformance.dll
-
-
- ..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.39\lib\net45\Microsoft.Xaml.Behaviors.dll
-
-
-
-
- ..\packages\Prism.Core.8.1.97\lib\net47\Prism.dll
-
-
- ..\packages\Prism.Unity.8.1.97\lib\net47\Prism.Unity.Wpf.dll
-
-
- ..\packages\Prism.Wpf.8.1.97\lib\net47\Prism.Wpf.dll
-
-
-
- ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
-
-
- ..\packages\System.ComponentModel.Annotations.5.0.0\lib\net461\System.ComponentModel.Annotations.dll
-
-
-
-
-
- ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
-
-
-
- ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
-
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
-
-
- ..\packages\System.Text.Encoding.CodePages.6.0.0\lib\net461\System.Text.Encoding.CodePages.dll
-
-
- ..\packages\System.Text.Encodings.Web.6.0.0\lib\net461\System.Text.Encodings.Web.dll
-
-
- ..\packages\System.Text.Json.6.0.5\lib\net461\System.Text.Json.dll
-
-
- ..\packages\System.Threading.Channels.6.0.0\lib\net461\System.Threading.Channels.dll
-
-
- ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
-
-
- ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
-
-
-
-
-
-
-
-
-
- ..\packages\Unity.Abstractions.5.11.7\lib\net48\Unity.Abstractions.dll
-
-
- ..\packages\Unity.Container.5.11.11\lib\net48\Unity.Container.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- DataGenerateView.xaml
-
-
- DataLoaderView.xaml
-
-
-
-
- {4d934733-e2ba-4ce3-90ae-d41321420bf9}
- Infrastructure
-
-
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
+
-
+
+
+
+
-
-
+
-
-
-
-
- This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
-
-
-
\ No newline at end of file
+
+
diff --git a/MprIsocurveMvvm/DataLoaderModule/Properties/AssemblyInfo.cs b/MprIsocurveMvvm/DataLoaderModule/Properties/AssemblyInfo.cs
deleted file mode 100644
index 41c43c4..0000000
--- a/MprIsocurveMvvm/DataLoaderModule/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("DataLoaderModule")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("DataLoaderModule")]
-[assembly: AssemblyCopyright("Copyright © 2018")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("0df35ab2-800a-4148-8052-7723b9f348a1")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/MprIsocurveMvvm/DataLoaderModule/Services/DicomImageVolumeLoadService.cs b/MprIsocurveMvvm/DataLoaderModule/Services/DicomImageVolumeLoadService.cs
index 679ceb4..0f2f389 100644
--- a/MprIsocurveMvvm/DataLoaderModule/Services/DicomImageVolumeLoadService.cs
+++ b/MprIsocurveMvvm/DataLoaderModule/Services/DicomImageVolumeLoadService.cs
@@ -5,10 +5,10 @@
using System.Threading;
using System.IO;
-using Dicom;
-using Dicom.Imaging;
-using Dicom.Imaging.LUT;
-using Dicom.Imaging.Render;
+using FellowOakDicom;
+using FellowOakDicom.Imaging;
+using FellowOakDicom.Imaging.LUT;
+using FellowOakDicom.Imaging.Render;
using Infrastructure.Interfaces;
using DataLoaderModule.Interfaces;
@@ -26,37 +26,36 @@ public class DicomImageVolumeLoadService : IDicomImageVolumeLoadService
///
///
///
- public IEnumerable
- LoadUniformImageVolumeFromDicom(string directory,
+ public IEnumerable
+ LoadUniformImageVolumeFromDicom(string directory,
Func allocator)
{
var dcmFileNames = Directory.EnumerateFiles(directory, "*.dcm").ToList();
- var dcmFiles = from name in dcmFileNames select DicomFile.Open(name, Encoding.Default);
- var dcmImages = from file in dcmFiles select new DicomImage(file.Dataset);
+ var dcmFiles = (from name in dcmFileNames select DicomFile.Open(name, Encoding.Default)).ToList();
int slice = 0;
- List allImages = new List();
- foreach (var image in dcmImages)
+ List<(DicomFile file, DicomImage image)> allImages = new List<(DicomFile, DicomImage)>();
+ foreach (var file in dcmFiles)
{
- allImages.Add(image);
+ allImages.Add((file, new DicomImage(file.Dataset)));
yield return new DicomImageVolumeLoadStatus()
{
Progress = 30 * slice++ / dcmFileNames.Count()
};
}
- var width = allImages.Max(di => di.Width);
- var height = allImages.Max(di => di.Height);
+ var width = allImages.Max(di => di.image.Width);
+ var height = allImages.Max(di => di.image.Height);
var depth = allImages.Count();
- Func getSliceLocation =
- di => -di.Dataset.Get(DicomTag.SliceLocation);
+ Func<(DicomFile file, DicomImage image), decimal> getSliceLocation =
+ di => -di.file.Dataset.GetValue(DicomTag.SliceLocation, 0);
slice = 0;
List allPixelsSorted = new List();
- foreach (var image in allImages.OrderBy(getSliceLocation))
+ foreach (var item in allImages.OrderBy(getSliceLocation))
{
- allPixelsSorted.Add(GetIntPixels(image));
+ allPixelsSorted.Add(GetIntPixels(item.file.Dataset, item.image));
yield return new DicomImageVolumeLoadStatus()
{
Progress = 30 + 30 * slice++ / allImages.Count()
@@ -64,8 +63,8 @@ public IEnumerable
}
#if USE_DICOM_WINDOW_LEVEL
- int windowCenter = (int) allImages.First().Dataset.Get(DicomTag.WindowCenter);
- int windowWidth = (int) allImages.First().Dataset.Get(DicomTag.WindowWidth);
+ int windowCenter = (int) allImages.First().file.Dataset.GetValue(DicomTag.WindowCenter, 0);
+ int windowWidth = (int) allImages.First().file.Dataset.GetValue(DicomTag.WindowWidth, 0);
int minVoxelValue = windowCenter - windowWidth / 2;
int maxVoxelValue = windowCenter + windowWidth / 2;
@@ -112,16 +111,18 @@ public IEnumerable
}
///
- ///
+ ///
///
+ ///
///
///
- private static int[] GetIntPixels(DicomImage image)
+ private static int[] GetIntPixels(DicomDataset dataset, DicomImage image)
{
- var gro = GrayscaleRenderOptions.FromDataset(image.Dataset);
+ var gro = GrayscaleRenderOptions.FromDataset(dataset);
var voilut = VOILUT.Create(gro);
- var ipd = PixelDataFactory.Create(image.PixelData, 0);
+ var pixelData = DicomPixelData.Create(dataset);
+ var ipd = PixelDataFactory.Create(pixelData, 0);
int[] outPixelsInt = new int[image.Width * image.Height];
ipd.Render(voilut, outPixelsInt);
return outPixelsInt;
diff --git a/MprIsocurveMvvm/DataLoaderModule/packages.config b/MprIsocurveMvvm/DataLoaderModule/packages.config
deleted file mode 100644
index fcccc09..0000000
--- a/MprIsocurveMvvm/DataLoaderModule/packages.config
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MprIsocurveMvvm/Directory.Build.props b/MprIsocurveMvvm/Directory.Build.props
new file mode 100644
index 0000000..ad4a2f7
--- /dev/null
+++ b/MprIsocurveMvvm/Directory.Build.props
@@ -0,0 +1,5 @@
+
+
+ true
+
+
diff --git a/MprIsocurveMvvm/FsRenderModule/AssemblyInfo.fs b/MprIsocurveMvvm/FsRenderModule/AssemblyInfo.fs
deleted file mode 100644
index e0e6d98..0000000
--- a/MprIsocurveMvvm/FsRenderModule/AssemblyInfo.fs
+++ /dev/null
@@ -1,41 +0,0 @@
-namespace FsRenderModule.AssemblyInfo
-
-open System.Reflection
-open System.Runtime.CompilerServices
-open System.Runtime.InteropServices
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-[]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// []
-[]
-[]
-
-do
- ()
\ No newline at end of file
diff --git a/MprIsocurveMvvm/FsRenderModule/FsRenderModule.fsproj b/MprIsocurveMvvm/FsRenderModule/FsRenderModule.fsproj
index 41308e1..264a7f5 100644
--- a/MprIsocurveMvvm/FsRenderModule/FsRenderModule.fsproj
+++ b/MprIsocurveMvvm/FsRenderModule/FsRenderModule.fsproj
@@ -1,84 +1,24 @@
-
-
-
+
+
- Debug
- AnyCPU
- 2.0
- 3f929fd7-719b-4351-84ab-272b535498ec
- Library
- FsRenderModule
- FsRenderModule
- true
- v4.8
- true
- FsRenderModule
-
+ net8.0-windows
+ true
-
- true
- full
- false
- false
- bin\$(Configuration)\
- DEBUG;TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
- pdbonly
- true
- true
- bin\$(Configuration)\
- TRACE
- 3
- bin\$(Configuration)\$(AssemblyName).XML
-
-
- 11
-
-
- $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets
-
-
+
-
-
+
-
- ..\packages\FSharp.Core.6.0.5\lib\netstandard2.0\FSharp.Core.dll
-
-
-
-
- ..\packages\Prism.Core.8.1.97\lib\net47\Prism.dll
-
-
-
-
-
- True
-
-
+
+
-
- Infrastructure
- {4d934733-e2ba-4ce3-90ae-d41321420bf9}
- True
-
+
-
-
\ No newline at end of file
+
+
diff --git a/MprIsocurveMvvm/FsRenderModule/packages.config b/MprIsocurveMvvm/FsRenderModule/packages.config
deleted file mode 100644
index 89ce943..0000000
--- a/MprIsocurveMvvm/FsRenderModule/packages.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MprIsocurveMvvm/Infrastructure/Infrastructure.csproj b/MprIsocurveMvvm/Infrastructure/Infrastructure.csproj
index 9a19735..69acad6 100644
--- a/MprIsocurveMvvm/Infrastructure/Infrastructure.csproj
+++ b/MprIsocurveMvvm/Infrastructure/Infrastructure.csproj
@@ -1,73 +1,14 @@
-
-
-
+
+
- Debug
- AnyCPU
- {4D934733-E2BA-4CE3-90AE-D41321420BF9}
- Library
- Properties
- Infrastructure
- Infrastructure
- v4.8
- 512
-
+ net8.0-windows
+ true
+ disable
+ disable
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- ..\packages\CommonServiceLocator.2.0.6\lib\net48\CommonServiceLocator.dll
-
-
- ..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.39\lib\net45\Microsoft.Xaml.Behaviors.dll
-
-
-
-
- ..\packages\Prism.Core.8.1.97\lib\net47\Prism.dll
-
-
- ..\packages\Prism.Wpf.8.1.97\lib\net47\Prism.Wpf.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
\ No newline at end of file
+
+
diff --git a/MprIsocurveMvvm/Infrastructure/Properties/AssemblyInfo.cs b/MprIsocurveMvvm/Infrastructure/Properties/AssemblyInfo.cs
deleted file mode 100644
index 7d404a9..0000000
--- a/MprIsocurveMvvm/Infrastructure/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Infrastructure")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Infrastructure")]
-[assembly: AssemblyCopyright("Copyright © 2018")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("4d934733-e2ba-4ce3-90ae-d41321420bf9")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/MprIsocurveMvvm/Infrastructure/packages.config b/MprIsocurveMvvm/Infrastructure/packages.config
deleted file mode 100644
index cdefd26..0000000
--- a/MprIsocurveMvvm/Infrastructure/packages.config
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MprIsocurveMvvm/MprIsocurveGeneration/MprIsocurveMvvmViewer.csproj b/MprIsocurveMvvm/MprIsocurveGeneration/MprIsocurveMvvmViewer.csproj
index 4a674b1..33fa104 100644
--- a/MprIsocurveMvvm/MprIsocurveGeneration/MprIsocurveMvvmViewer.csproj
+++ b/MprIsocurveMvvm/MprIsocurveGeneration/MprIsocurveMvvmViewer.csproj
@@ -1,197 +1,27 @@
-
-
-
+
+
- Debug
- AnyCPU
- {657C931C-2A60-47E2-8389-818DFAB095F8}
WinExe
- Properties
- MprIsocurveGeneration
- MprIsocurveGeneration
- v4.8
- 512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 4
- false
- ..\
- true
-
-
-
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- x64
- pdbonly
- true
- bin\Release\
- TRACE;USE_DICOM_WINDOW_LEVEL_NOT
- prompt
- 4
- false
+ net8.0-windows
+ true
+ disable
+ disable
true
+
-
- ..\packages\AutoMapper.7.0.1\lib\net45\AutoMapper.dll
-
-
- ..\packages\CommonServiceLocator.2.0.6\lib\net48\CommonServiceLocator.dll
-
-
- ..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.39\lib\net45\Microsoft.Xaml.Behaviors.dll
-
-
- ..\packages\Prism.Core.8.1.97\lib\net47\Prism.dll
-
-
- ..\packages\Prism.Unity.8.1.97\lib\net47\Prism.Unity.Wpf.dll
-
-
- ..\packages\Prism.Wpf.8.1.97\lib\net47\Prism.Wpf.dll
-
-
-
-
-
- ..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll
-
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
-
-
-
- ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
-
-
- ..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll
-
-
-
-
-
-
-
- 4.0
-
-
- ..\packages\Unity.Abstractions.5.11.7\lib\net48\Unity.Abstractions.dll
-
-
- ..\packages\Unity.Container.5.11.11\lib\net48\Unity.Container.dll
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
-
-
-
- IsocurveControlView.xaml
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- App.xaml
- Code
-
-
- Shell.xaml
- Code
-
-
- MSBuild:Compile
- Designer
-
-
-
-
- Code
-
-
- True
- True
- Resources.resx
-
-
- True
- Settings.settings
- True
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
-
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
+
+
+
-
+
+
+
+
-
-
- {0df35ab2-800a-4148-8052-7723b9f348a1}
- DataLoaderModule
-
-
- {4D934733-E2BA-4CE3-90AE-D41321420BF9}
- Infrastructure
-
-
- {e04209a3-2e38-4df9-846c-99c86d8a5b5f}
- RenderModule
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
diff --git a/MprIsocurveMvvm/MprIsocurveGeneration/Properties/AssemblyInfo.cs b/MprIsocurveMvvm/MprIsocurveGeneration/Properties/AssemblyInfo.cs
deleted file mode 100644
index 32b4fa0..0000000
--- a/MprIsocurveMvvm/MprIsocurveGeneration/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Windows;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("MprIsocurveGeneration")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Microsoft")]
-[assembly: AssemblyProduct("MprIsocurveGeneration")]
-[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-//In order to begin building localizable applications, set
-//CultureYouAreCodingWith in your .csproj file
-//inside a . For example, if you are using US english
-//in your source files, set the to en-US. Then uncomment
-//the NeutralResourceLanguage attribute below. Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
-)]
-
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/MprIsocurveMvvm/MprIsocurveGeneration/ViewModels/LayoutViewModel.cs b/MprIsocurveMvvm/MprIsocurveGeneration/ViewModels/LayoutViewModel.cs
index 3796628..b0edadc 100644
--- a/MprIsocurveMvvm/MprIsocurveGeneration/ViewModels/LayoutViewModel.cs
+++ b/MprIsocurveMvvm/MprIsocurveGeneration/ViewModels/LayoutViewModel.cs
@@ -6,13 +6,13 @@
using System.Threading.Tasks;
using System.Windows.Input;
-using Microsoft.Practices.Unity;
+using Unity;
using Prism.Events;
using Prism.Mvvm;
-using MprIsocurveGeneration.Events;
-using MprIsocurveGeneration.Models;
+using DataLoaderModule.ViewModels;
+using RenderModule.ViewModels;
namespace MprIsocurveGeneration.ViewModels
{
diff --git a/MprIsocurveMvvm/MprIsocurveGeneration/packages.config b/MprIsocurveMvvm/MprIsocurveGeneration/packages.config
deleted file mode 100644
index acb1c9b..0000000
--- a/MprIsocurveMvvm/MprIsocurveGeneration/packages.config
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MprIsocurveMvvm/RenderModule/Module.cs b/MprIsocurveMvvm/RenderModule/Module.cs
index 05611ed..7e62b09 100644
--- a/MprIsocurveMvvm/RenderModule/Module.cs
+++ b/MprIsocurveMvvm/RenderModule/Module.cs
@@ -1,5 +1,4 @@
-using AutoMapper;
-using Unity;
+using Unity;
using Unity.Lifetime;
using Prism.Events;
@@ -8,10 +7,8 @@
using RenderModule.Interfaces;
using FsRenderModule.Interfaces;
-using RenderModule.Models;
using RenderModule.Services;
using FsRenderModule.Services;
-using RenderModule.ViewModels;
using RenderModule.Views;
using Prism.Ioc;
@@ -44,10 +41,6 @@ public void RegisterTypes(IContainerRegistry containerRegistry)
new TransientLifetimeManager());
_container.RegisterType(
new ContainerControlledLifetimeManager());
-
- Mapper.Initialize(cfg => {
- cfg.CreateMap();
- });
}
}
}
diff --git a/MprIsocurveMvvm/RenderModule/Properties/AssemblyInfo.cs b/MprIsocurveMvvm/RenderModule/Properties/AssemblyInfo.cs
deleted file mode 100644
index 4d90bfc..0000000
--- a/MprIsocurveMvvm/RenderModule/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("RenderModule")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("RenderModule")]
-[assembly: AssemblyCopyright("Copyright © 2018")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("e04209a3-2e38-4df9-846c-99c86d8a5b5f")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/MprIsocurveMvvm/RenderModule/RenderModule.csproj b/MprIsocurveMvvm/RenderModule/RenderModule.csproj
index b5b51fa..e81a116 100644
--- a/MprIsocurveMvvm/RenderModule/RenderModule.csproj
+++ b/MprIsocurveMvvm/RenderModule/RenderModule.csproj
@@ -1,154 +1,19 @@
-
-
-
+
+
- Debug
- AnyCPU
- {E04209A3-2E38-4DF9-846C-99C86D8A5B5F}
- Library
- Properties
- RenderModule
- RenderModule
- v4.8
- 512
-
+ net8.0-windows
+ true
+ disable
+ disable
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- ..\packages\AutoMapper.7.0.1\lib\net45\AutoMapper.dll
-
-
- ..\packages\CommonServiceLocator.2.0.6\lib\net48\CommonServiceLocator.dll
-
-
- ..\packages\FSharp.Core.6.0.5\lib\netstandard2.0\FSharp.Core.dll
-
-
- ..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.39\lib\net45\Microsoft.Xaml.Behaviors.dll
-
-
-
-
- ..\packages\Prism.Core.8.1.97\lib\net47\Prism.dll
-
-
- ..\packages\Prism.Unity.8.1.97\lib\net47\Prism.Unity.Wpf.dll
-
-
- ..\packages\Prism.Wpf.8.1.97\lib\net47\Prism.Wpf.dll
-
-
-
-
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
-
-
-
- ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
-
-
- ..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll
-
-
-
-
-
-
-
-
-
- ..\packages\Unity.5.11.10\lib\net48\Unity.Abstractions.dll
-
-
- ..\packages\Unity.5.11.10\lib\net48\Unity.Container.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BlockLayoutView.xaml
-
-
- IsocurveView.xaml
-
-
- LayeredViewView.xaml
-
-
- MprImageView.xaml
-
-
- PresentationStateView.xaml
-
-
-
-
-
-
-
-
-
- {3f929fd7-719b-4351-84ab-272b535498ec}
- FsRenderModule
-
-
- {4d934733-e2ba-4ce3-90ae-d41321420bf9}
- Infrastructure
-
-
+
-
+
+
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
+
+
-
-
\ No newline at end of file
+
+
diff --git a/MprIsocurveMvvm/RenderModule/ViewModels/LayeredViewViewModel.cs b/MprIsocurveMvvm/RenderModule/ViewModels/LayeredViewViewModel.cs
index 842293b..90aeb26 100644
--- a/MprIsocurveMvvm/RenderModule/ViewModels/LayeredViewViewModel.cs
+++ b/MprIsocurveMvvm/RenderModule/ViewModels/LayeredViewViewModel.cs
@@ -11,8 +11,6 @@
using Prism.Events;
using Prism.Mvvm;
-using AutoMapper;
-
using Infrastructure.Utilities;
using Infrastructure.Events;
using Infrastructure.Interfaces;
@@ -216,9 +214,8 @@ private void UpdateSingleLayer(Int64 timeStamp, IEnumerable layer)
foreach (var ro in layer.OfType())
{
// get the task that is producing the update action
- Task uiUpdateAction =
- ro.UpdateRenderedObject(Mapper.Map(PresentationState.ViewOrientation),
+ Task uiUpdateAction =
+ ro.UpdateRenderedObject((Orientation)PresentationState.ViewOrientation,
(int) PresentationState.SlicePosition);
// queue up the task
diff --git a/MprIsocurveMvvm/RenderModule/ViewModels/PresentationStateViewModel.cs b/MprIsocurveMvvm/RenderModule/ViewModels/PresentationStateViewModel.cs
index 8294d16..633d300 100644
--- a/MprIsocurveMvvm/RenderModule/ViewModels/PresentationStateViewModel.cs
+++ b/MprIsocurveMvvm/RenderModule/ViewModels/PresentationStateViewModel.cs
@@ -7,8 +7,6 @@
using Prism.Mvvm;
using Prism.Events;
-using AutoMapper;
-
using Infrastructure.Events;
using RenderModule.Interfaces;
@@ -158,10 +156,10 @@ public Orientation ViewOrientation
///
public string ViewOrientationString
{
- get { return Mapper.Map(_orientation); }
- set
+ get { return _orientation.ToString(); }
+ set
{
- ViewOrientation = Mapper.Map(value);
+ ViewOrientation = (Orientation)Enum.Parse(typeof(Orientation), value);
}
}
}
diff --git a/MprIsocurveMvvm/RenderModule/packages.config b/MprIsocurveMvvm/RenderModule/packages.config
deleted file mode 100644
index 7b6f170..0000000
--- a/MprIsocurveMvvm/RenderModule/packages.config
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file