From 1065c86824cfcad250ebf693ffbb92f67e2c5c88 Mon Sep 17 00:00:00 2001 From: iambossTC Date: Sun, 6 Apr 2025 19:55:34 +0800 Subject: [PATCH] init --- .gitignore | 268 ++++++++++++++++++++++ AssemblyInfo.cs | 10 + Disp/RenderingCanvas.cs | 394 +++++++++++++++++++++++++++++++++ Disp/RenderingWindow.cs | 63 ++++++ Hi.Wpf.csproj | 40 ++++ Program.cs | 19 ++ Properties/launchSettings.json | 10 + techcoordinate.ico | Bin 0 -> 52436 bytes 8 files changed, 804 insertions(+) create mode 100644 .gitignore create mode 100644 AssemblyInfo.cs create mode 100644 Disp/RenderingCanvas.cs create mode 100644 Disp/RenderingWindow.cs create mode 100644 Hi.Wpf.csproj create mode 100644 Program.cs create mode 100644 Properties/launchSettings.json create mode 100644 techcoordinate.ico diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d95f9c --- /dev/null +++ b/.gitignore @@ -0,0 +1,268 @@ +!*.lib + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +#*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +!hasp*.exe +!hasp*.dll +!HiLock.dll +!Aladdin*.dll diff --git a/AssemblyInfo.cs b/AssemblyInfo.cs new file mode 100644 index 0000000..b0ec827 --- /dev/null +++ b/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[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) +)] diff --git a/Disp/RenderingCanvas.cs b/Disp/RenderingCanvas.cs new file mode 100644 index 0000000..6045689 --- /dev/null +++ b/Disp/RenderingCanvas.cs @@ -0,0 +1,394 @@ +using Hi.Disp; +using Hi.Native; +using Hi.PanelModels; +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Collections.Generic; +using Hi.Geom; + +namespace Hi.Wpf.Disp +{ + #region WPF Rendering Canvas + public class RenderingCanvas : UserControl, IDisposable + { + #region Core_Properties + /// + /// The DispEngine instance that handles rendering and user interactions + /// + public DispEngine DispEngine { get; } = new DispEngine(); + + /// + /// Internal container for rendering content + /// + private UserControl DisplayerPane { get; } + + /// + /// Dictionary to store touch point information + /// + private Dictionary TouchingPointsMap { get; } = new Dictionary(); + + /// + /// Dictionary to store previous positions of touch points + /// + private Dictionary PreviousTouchingPointsMap { get; } = new Dictionary(); + #endregion + + #region Initialization + /// + /// Initializes a new instance of the RenderingCanvas + /// + public RenderingCanvas() + { + DispEngine.BackgroundColor = new Vec3d(0.1, 0.1, 0.5); + DispEngine.BackgroundOpacity = 0.1; + + // Configure the main control properties + HorizontalAlignment = HorizontalAlignment.Stretch; + VerticalAlignment = VerticalAlignment.Stretch; + Focusable = true; + KeyboardNavigation.SetDirectionalNavigation(this, KeyboardNavigationMode.Cycle); + DataContextChanged += CanvasDataContextChanged; + + // Create and configure the display pane + DisplayerPane = new UserControl(); + DisplayerPane.HorizontalAlignment = HorizontalAlignment.Stretch; + DisplayerPane.VerticalAlignment = VerticalAlignment.Stretch; + DisplayerPane.Focusable = true; + DisplayerPane.IsTabStop = true; + + // Connect event handlers for user input and window events + DisplayerPane.SizeChanged += RenderingCanvas_SizeChanged; + DisplayerPane.MouseMove += RenderingCanvas_MouseMove; + DisplayerPane.MouseDown += RenderingCanvas_MouseDown; + DisplayerPane.MouseUp += RenderingCanvas_MouseUp; + DisplayerPane.MouseWheel += RenderingCanvas_MouseWheel; + DisplayerPane.KeyDown += RenderingCanvas_KeyDown; + DisplayerPane.KeyUp += RenderingCanvas_KeyUp; + DisplayerPane.Loaded += RenderingCanvas_Loaded; + DisplayerPane.Unloaded += RenderingCanvas_Unloaded; + DisplayerPane.IsVisibleChanged += DisplayerPane_IsVisibleChanged; + + // Add touch event handlers + DisplayerPane.TouchDown += RenderingCanvas_TouchDown; + DisplayerPane.TouchMove += RenderingCanvas_TouchMove; + DisplayerPane.TouchUp += RenderingCanvas_TouchUp; + + // Enable touch support + this.IsManipulationEnabled = true; + + // Add the display pane to this control's content + Content = DisplayerPane; + } + #endregion + + #region Touch_Events + /// + /// Handles the touch down event + /// + private void RenderingCanvas_TouchDown(object sender, TouchEventArgs e) + { + // Add touch point to dictionary + Point touchPoint = e.GetTouchPoint(DisplayerPane).Position; + DispEngine.TouchDown(e.TouchDevice.Id, + (int)touchPoint.X, (int)touchPoint.Y); + + // Ensure control gets focus + DisplayerPane.Focus(); + e.TouchDevice.Capture(DisplayerPane); + + e.Handled = true; + } + + /// + /// Handles the touch move event + /// + private void RenderingCanvas_TouchMove(object sender, TouchEventArgs e) + { + Point touchPoint = e.GetTouchPoint(DisplayerPane).Position; + DispEngine.TouchMove(e.TouchDevice.Id, + (int)touchPoint.X, (int)touchPoint.Y); + e.Handled = true; + } + + /// + /// Handles the touch up event + /// + private void RenderingCanvas_TouchUp(object sender, TouchEventArgs e) + { + DispEngine.TouchUp(e.TouchDevice.Id); + e.Handled = true; + } + #endregion + + #region Window_Events + /// + /// Handles window state changes (maximize, minimize, etc.) + /// + private unsafe void RenderingCanvas_StateChanged(object sender, EventArgs e) + { + switch ((sender as Window).WindowState) + { + case WindowState.Maximized: + DispEngine.IsVisible = true; + break; + case WindowState.Minimized: + DispEngine.IsVisible = false; + break; + case WindowState.Normal: + DispEngine.IsVisible = true; + break; + } + } + + /// + /// Handles data context changes + /// + private unsafe void CanvasDataContextChanged(object sender, DependencyPropertyChangedEventArgs e) + { + DispEngine pre = e.OldValue as DispEngine; + DispEngine cur = e.NewValue as DispEngine; + + //child's binding event is triggered after IsVisible event and Load event. + if (pre != null) //this section will never occur if the datacontext not set twice. + { + pre.Terminate(); + pre.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; + } + if (cur != null) + { + cur.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped; + cur.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); + + cur.IsVisible = IsVisible; + } + } + + /// + /// Reference to the current window containing this control + /// + private Window currentWindow; + + /// + /// Gets or sets the current window, connecting or disconnecting state change events + /// + Window CurrentWindow + { + get => currentWindow; set + { + if (currentWindow != null) + currentWindow.StateChanged -= RenderingCanvas_StateChanged; + currentWindow = value; + if (currentWindow != null) + currentWindow.StateChanged += RenderingCanvas_StateChanged; + } + } + + /// + /// Handles the loaded event + /// + private unsafe void RenderingCanvas_Loaded(object sender, RoutedEventArgs e) + { + // Get the window containing this control + CurrentWindow = Window.GetWindow(this); + + // Set up DispEngine rendering + DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; + DispEngine.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped; + DispEngine.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); + DispEngine.IsVisible = IsVisible; + } + + /// + /// Handles the unloaded event + /// + private unsafe void RenderingCanvas_Unloaded(object sender, RoutedEventArgs e) + { + DispEngine.IsVisible = IsVisible; + DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped; + CurrentWindow = null; + } + #endregion + + #region DispEngine_Rendering + /// + /// Handles the buffer swapped event from DispEngine + /// + private unsafe void RenderingCanvas_BufferSwapped(byte* data, int w, int h) + { + if (data == null) + return; + + // Copy pixel data from DispEngine + int n = w * h * 4; + byte[] arr = new byte[n]; + for (int i = 0; i < n; i++) + arr[i] = data[i]; + + // Update UI on the UI thread + DisplayerPane.Dispatcher.InvokeAsync(() => + { + BitmapSource bitmap = BitmapSource.Create(w, h, 1, 1, PixelFormats.Bgra32, null, arr, w * 4); + DisplayerPane.Background = new ImageBrush(bitmap); + }); + } + + /// + /// Handles the size changed event + /// + private void RenderingCanvas_SizeChanged(object sender, SizeChangedEventArgs e) + { + // Notify DispEngine of size changes + DispEngine.Resize((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height); + } + + /// + /// Handles visibility changes + /// + private unsafe void DisplayerPane_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) + { + // Update visibility state in DispEngine + DispEngine.IsVisible = IsVisible; + } + #endregion + + #region Keyboard_Events + /// + /// Handles the key up event + /// + private void RenderingCanvas_KeyUp(object sender, KeyEventArgs e) + { + DispEngine.KeyUp((long)e.Key); + } + + /// + /// Handles the key down event + /// + private void RenderingCanvas_KeyDown(object sender, KeyEventArgs e) + { + DispEngine.KeyDown((long)e.Key); + + // Map specific keys for view transformation + long key = (long)e.Key; + if (key == (long)Key.RightShift) + key = (long)Key.LeftShift; + + DispEngine.KeyDownTransform(key, new key_table__transform_view_by_key_pressing_t() + { + HOME = (long)Key.Home, + PAGE_UP = (long)Key.PageUp, + PAGE_DOWN = (long)Key.PageDown, + F1 = (long)Key.F1, + F2 = (long)Key.F2, + F3 = (long)Key.F3, + F4 = (long)Key.F4, + SHIFT = (long)Key.LeftShift, + ARROW_LEFT = (long)Key.Left, + ARROW_RIGHT = (long)Key.Right, + ARROW_DOWN = (long)Key.Down, + ARROW_UP = (long)Key.Up + }); + } + #endregion + + #region Mouse_Events + /// + /// Helper method to get mouse button mask + /// + internal static HiMouseButtonMask GetMouseButtonMask(MouseDevice device) + { + HiMouseButtonMask mouseButtonMask = 0; + mouseButtonMask.SetLeftPressed(device.LeftButton == MouseButtonState.Pressed); + mouseButtonMask.SetMiddlePressed(device.MiddleButton == MouseButtonState.Pressed); + mouseButtonMask.SetRightPressed(device.RightButton == MouseButtonState.Pressed); + mouseButtonMask.SetXButton1Pressed(device.XButton1 == MouseButtonState.Pressed); + mouseButtonMask.SetXButton2Pressed(device.XButton2 == MouseButtonState.Pressed); + return mouseButtonMask; + } + + /// + /// Handles the mouse wheel event + /// + private void RenderingCanvas_MouseWheel(object sender, MouseWheelEventArgs e) + { + // Handle mouse wheel for zoom operations + DispEngine.MouseWheel(0, e.Delta / 120); + DispEngine.MouseWheelTransform(0, e.Delta / 120); + } + + /// + /// Handles the mouse up event + /// + private void RenderingCanvas_MouseUp(object sender, MouseButtonEventArgs e) + { + // Handle mouse button release + DispEngine.MouseButtonUp((long)e.ChangedButton); + (sender as UIElement)?.ReleaseMouseCapture(); + } + + /// + /// Handles the mouse down event + /// + private void RenderingCanvas_MouseDown(object sender, MouseButtonEventArgs e) + { + // Handle mouse button press + DispEngine.MouseButtonDown((long)e.ChangedButton); + DisplayerPane.Focus(); + (sender as UIElement)?.CaptureMouse(); + } + + /// + /// Handles the mouse move event + /// + private void RenderingCanvas_MouseMove(object sender, MouseEventArgs e) + { + // Update mouse position and handle drag transforms + Point p = e.GetPosition(DisplayerPane); + DispEngine.MouseMove((int)p.X, (int)p.Y); + DispEngine.MouseDragTransform((int)p.X, (int)p.Y, + new mouse_button_table__transform_view_by_mouse_drag_t() + { + LEFT_BUTTON = (long)MouseButton.Left, + RIGHT_BUTTON = (long)MouseButton.Right + }); + } + #endregion + + #region Cleanup + /// + /// Flag to track disposed state + /// + private bool disposedValue; + + /// + /// Disposes managed resources + /// + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + // Dispose the DispEngine to free resources + DispEngine.Dispose(); + } + disposedValue = true; + } + } + + /// + /// Public dispose method to free resources + /// + public void Dispose() + { + // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + #endregion + } + #endregion +} diff --git a/Disp/RenderingWindow.cs b/Disp/RenderingWindow.cs new file mode 100644 index 0000000..2af8d94 --- /dev/null +++ b/Disp/RenderingWindow.cs @@ -0,0 +1,63 @@ +using Hi.Disp; +using Hi.Licenses; +using System; +using System.Windows; +using System.Windows.Media; + +namespace Hi.Wpf.Disp +{ + /// + /// Window for 3D rendering. + /// + public class RenderingWindow : Window, IGetDispEngine + { + public RenderingCanvas RenderingCanvas => Content as RenderingCanvas; + + /// + /// Ctor. + /// + public RenderingWindow() + { + Title = nameof(RenderingWindow); + Height = 450; + Width = 800; + StateChanged += RenderingWind_StateChanged; + Content = new RenderingCanvas() + { + BorderThickness = new Thickness(1), + BorderBrush = Brushes.Black + }; + } + private void RenderingWind_StateChanged(object sender, EventArgs e) + { + RenderingCanvas.DispEngine.IsVisible = WindowState != WindowState.Minimized; + } + /// + public DispEngine GetDispEngine() => RenderingCanvas.DispEngine; + /// + /// Run a simple application with given . + /// + /// Title + /// displayees + /// return value of . + public static int RunApplication(string title, params IDisplayee[] displayees) + { + License.LogInAll(); + DispEngine.Init(); + + Application app = new Application + { + ShutdownMode = ShutdownMode.OnMainWindowClose + }; + app.Exit += (o, e) => + { + DispEngine.FinishDisp(); + License.LogOutAll(); + }; + RenderingWindow window = new RenderingWindow() { Title = title }; + window.RenderingCanvas.DispEngine.Displayee = new DispList(displayees); + window.RenderingCanvas.DispEngine.SetViewToHomeView(); + return app.Run(window); + } + } +} diff --git a/Hi.Wpf.csproj b/Hi.Wpf.csproj new file mode 100644 index 0000000..531b216 --- /dev/null +++ b/Hi.Wpf.csproj @@ -0,0 +1,40 @@ + + + true + true + Exe + net9.0-windows + x64 + true + Hi.Wpf + $(AssemblyName) + + HiAPI samples for windows platform. + + Debug;Release + 3 + 1.4.$(VersionBuild) + $(AssemblyName) + techcoordinate.ico + Copyright 2022 Tech Coordinate Co., Ltd. + Tech Coordinate Co., Ltd. + Tech Coordinate Co., Ltd. + bin\$(Platform).$(Configuration)\ + Hi.Wpf.Program + + + + + + + + + true + true + true + true + + + DEBUG;TRACE + + \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..1c7b276 --- /dev/null +++ b/Program.cs @@ -0,0 +1,19 @@ +using Hi.Disp; +using Hi.Disp.Flag; +using Hi.Geom; +using Hi.Wpf.Disp; +using System; + +namespace Hi.Wpf +{ + static class Program + { + [STAThread] + public static void Main(string[] args) + { + DispEngine.Init(); + RenderingWindow.RunApplication("test", + new CoordinateDrawing(), new Stl(Box3d.CenterUnitBox).ToFaceDrawing()); + } + } +} diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json new file mode 100644 index 0000000..dbe55fa --- /dev/null +++ b/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "HiAPI-Demo-WPF": { + "commandName": "Project", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/techcoordinate.ico b/techcoordinate.ico new file mode 100644 index 0000000000000000000000000000000000000000..1aa69cece18e2f058a85c81f418461cb34b48788 GIT binary patch literal 52436 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≪8+WLXbXjL2mA@X>OkW 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 C{~8nk literal 0 HcmV?d00001