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