From 80802eea3702cdaae8246ac223fc5e087dd7e601 Mon Sep 17 00:00:00 2001 From: Bozo the Builder Date: Wed, 20 Nov 2024 02:35:59 -0800 Subject: [PATCH] Sync changes from upstream repository --- example_brep/example_brep.vcxproj | 126 +++++++++++++++++++ example_convert/example_convert.vcxproj | 130 +++++++++++++++++++ example_read/example_read.vcxproj | 130 +++++++++++++++++++ example_test/example_test.vcxproj | 146 ++++++++++++++++++++++ example_userdata/example_userdata.vcxproj | 130 +++++++++++++++++++ example_write/example_write.vcxproj | 130 +++++++++++++++++++ opennurbs_knot.cpp | 34 +++++ opennurbs_knot.h | 71 +++++++++++ opennurbs_mesh_ngon.cpp | 2 +- opennurbs_nurbscurve.cpp | 9 ++ opennurbs_nurbscurve.h | 44 +++++++ opennurbs_nurbssurface.cpp | 24 +++- opennurbs_nurbssurface.h | 47 +++++++ opennurbs_precompiledheader.cpp | 4 + opennurbs_public.sln | 80 +++++++++++- opennurbs_public.vcxproj | 124 ++++++++++++++++++ opennurbs_public_staticlib.vcxproj | 122 ++++++++++++++++++ opennurbs_public_version.h | 20 +-- opennurbs_system.h | 2 +- opennurbs_system_runtime.h | 6 +- zlib/zlib.vcxproj | 112 +++++++++++++++++ 21 files changed, 1475 insertions(+), 18 deletions(-) diff --git a/example_brep/example_brep.vcxproj b/example_brep/example_brep.vcxproj index a2b825ce..9a6477e7 100644 --- a/example_brep/example_brep.vcxproj +++ b/example_brep/example_brep.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -44,6 +60,18 @@ v142 Unicode + + Application + true + v142 + Unicode + + + Application + true + v142 + Unicode + Application false @@ -51,6 +79,20 @@ true Unicode + + Application + false + v142 + true + Unicode + + + Application + false + v142 + true + Unicode + @@ -68,10 +110,26 @@ + + + + + + + + + + + + + + + + true @@ -79,12 +137,24 @@ true + + true + + + true + false false + + false + + + false + NotUsing @@ -109,6 +179,30 @@ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + NotUsing @@ -141,6 +235,38 @@ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + diff --git a/example_convert/example_convert.vcxproj b/example_convert/example_convert.vcxproj index c70575ba..09e74396 100644 --- a/example_convert/example_convert.vcxproj +++ b/example_convert/example_convert.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -44,6 +60,18 @@ v142 Unicode + + Application + true + v142 + Unicode + + + Application + true + v142 + Unicode + Application false @@ -51,6 +79,20 @@ true Unicode + + Application + false + v142 + true + Unicode + + + Application + false + v142 + true + Unicode + @@ -68,10 +110,26 @@ + + + + + + + + + + + + + + + + true @@ -79,12 +137,24 @@ true + + true + + + true + false false + + false + + + false + NotUsing @@ -111,6 +181,32 @@ setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + NotUsing @@ -145,6 +241,40 @@ setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + diff --git a/example_read/example_read.vcxproj b/example_read/example_read.vcxproj index 7cdbd02d..81ff9f6b 100644 --- a/example_read/example_read.vcxproj +++ b/example_read/example_read.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -44,6 +60,18 @@ v142 Unicode + + Application + true + v142 + Unicode + + + Application + true + v142 + Unicode + Application false @@ -51,6 +79,20 @@ true Unicode + + Application + false + v142 + true + Unicode + + + Application + false + v142 + true + Unicode + @@ -68,10 +110,26 @@ + + + + + + + + + + + + + + + + true @@ -79,12 +137,24 @@ true + + true + + + true + false false + + false + + + false + NotUsing @@ -111,6 +181,32 @@ setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + NotUsing @@ -145,6 +241,40 @@ setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + diff --git a/example_test/example_test.vcxproj b/example_test/example_test.vcxproj index 7ca6b01c..2dc5c6d7 100644 --- a/example_test/example_test.vcxproj +++ b/example_test/example_test.vcxproj @@ -1,10 +1,26 @@ + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -45,6 +61,18 @@ v142 Unicode + + Application + true + v142 + Unicode + + + Application + true + v142 + Unicode + Application false @@ -52,6 +80,20 @@ true Unicode + + Application + false + v142 + true + Unicode + + + Application + false + v142 + true + Unicode + @@ -69,14 +111,36 @@ + + + + + + + + + + + + + + + + true + + true + + + true + true @@ -86,6 +150,12 @@ false + + false + + + false + NotUsing @@ -102,6 +172,40 @@ setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Level4 + + + + + Console + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Level4 + + + + + Console + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + NotUsing @@ -158,6 +262,48 @@ setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Level4 + + + + + Console + true + true + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Level4 + + + + + Console + true + true + true + setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + diff --git a/example_userdata/example_userdata.vcxproj b/example_userdata/example_userdata.vcxproj index 645f3099..0a83c082 100644 --- a/example_userdata/example_userdata.vcxproj +++ b/example_userdata/example_userdata.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -44,6 +60,18 @@ v142 Unicode + + Application + true + v142 + Unicode + + + Application + true + v142 + Unicode + Application false @@ -51,6 +79,20 @@ true Unicode + + Application + false + v142 + true + Unicode + + + Application + false + v142 + true + Unicode + @@ -68,10 +110,26 @@ + + + + + + + + + + + + + + + + true @@ -79,12 +137,24 @@ true + + true + + + true + false false + + false + + + false + NotUsing @@ -111,6 +181,32 @@ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + NotUsing @@ -145,6 +241,40 @@ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + diff --git a/example_write/example_write.vcxproj b/example_write/example_write.vcxproj index 95ebee2f..4204d9a5 100644 --- a/example_write/example_write.vcxproj +++ b/example_write/example_write.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -44,6 +60,18 @@ v142 Unicode + + Application + true + v142 + Unicode + + + Application + true + v142 + Unicode + Application false @@ -51,6 +79,20 @@ true Unicode + + Application + false + v142 + true + Unicode + + + Application + false + v142 + true + Unicode + @@ -68,10 +110,26 @@ + + + + + + + + + + + + + + + + true @@ -79,12 +137,24 @@ true + + true + + + true + false false + + false + + + false + NotUsing @@ -111,6 +181,32 @@ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + Disabled + WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + NotUsing @@ -145,6 +241,40 @@ kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + NotUsing + MaxSpeed + true + true + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + diff --git a/opennurbs_knot.cpp b/opennurbs_knot.cpp index 429d596a..4117806a 100644 --- a/opennurbs_knot.cpp +++ b/opennurbs_knot.cpp @@ -88,6 +88,40 @@ int ON_KnotCount( int order, int cv_count ) return (order+cv_count-2); } +const ON_2dex ON_BsplineControlPointSpans( + int order, + int control_point_count, + int control_point_index +) +{ + for (;;) + { + if (order < 2 || control_point_count < order) + break; + if (control_point_index < 0 || control_point_index >= control_point_count) + break; + const int i0 = control_point_index - order + 1; + const int i1 = control_point_index + 1; + const int span_count = control_point_count - order + 1; + return ON_2dex(i0 >= 0 ? i0 : 0, i1 <= span_count ? i1 : span_count); + } + return ON_2dex(0, 0); +} + +ON_DECL const ON_Interval ON_BsplineControlPointSupport(int order, int control_point_count, const double* knots, int control_point_index) +{ + for (;;) + { + if (nullptr == knots) + break; + const ON_2dex active_spans = ON_BsplineControlPointSpans(order, control_point_count, control_point_index); + if (active_spans.i < active_spans.j) + return ON_Interval(knots[active_spans.i + order - 2], knots[active_spans.j + order - 2]); + break; + } + return ON_Interval::Nan; +} + ///////////////////////////////////////////////////////////////// // // Computes number of knots in knot vector diff --git a/opennurbs_knot.h b/opennurbs_knot.h index 9f282af5..2dd3a0ed 100644 --- a/opennurbs_knot.h +++ b/opennurbs_knot.h @@ -42,6 +42,77 @@ int ON_KnotCount( // returns (order + cv_count - 2) int // cv_count (>=order) ); +/// +/// Get the indices of the B-spline spans where the specified +/// control point is active. +/// Note that a B-spline with n control points has (n-degree) many spans. +/// If 0 <= span_index < (n-degree), then +/// CV(span_index), ..., CV(span_index+degree) +/// and +/// {knot[span_index], ..., knot[span_index+2*degree-1]} +/// are the control points and knots that are active in that span. +/// The domain of the span is +/// [knot[span_index+degree-1], knot[span_index+degree]]. +/// +/// +/// B-spline order. +/// order >= 2 (order = degree + 1) +/// +/// +/// Number of B-spline control points. +/// control_point_count >= order +/// +/// +/// 0 <= control_point_index < control_point_count +/// +/// +/// If the input is valid, +/// then the spans whose index satisfies +/// ON_2dex.i <= span_index < ON_2dex.j +/// use the specified control point. +/// If the iput is not valid, then ON_2dex(0,0) is returned. +/// +ON_DECL +const ON_2dex ON_BsplineControlPointSpans( + int order, + int control_point_count, + int control_point_index +); + +/// +/// Get the interval in the B-spline domain where the control point is active. +/// The domain = [knots[order-2], knots[control_point_count-1]]. +/// The returned interval will be in domain and are the parameters +/// where the control point influnces the value of the B-spline. +/// +/// +/// Order of the B-spline knot vector. +/// order >= 2 (order = degree + 1) +/// +/// +/// Number of B-spline control points. +/// control_point_count >= order +/// +/// +/// knots[] is the B-spline knot vector and is an array of +/// (order + control_point_count - 2) doubles. +/// +/// +/// 0 <= control_point_index < control_point_count +/// +/// +/// The interval in the domain where the control point is active. +/// +ON_DECL +const ON_Interval ON_BsplineControlPointSupport( + int order, + int control_point_count, + const double* knots, + int control_point_index +); + + + ON_DECL int ON_KnotMultiplicity( int, // order (>=2) diff --git a/opennurbs_mesh_ngon.cpp b/opennurbs_mesh_ngon.cpp index 8777a7d5..9207b215 100644 --- a/opennurbs_mesh_ngon.cpp +++ b/opennurbs_mesh_ngon.cpp @@ -2870,7 +2870,7 @@ void ON_MeshVertexFaceMap::Destroy() while ( blk ) { next = blk->m_next; - delete blk; + delete[] blk; blk = next; } } diff --git a/opennurbs_nurbscurve.cpp b/opennurbs_nurbscurve.cpp index ce54c37d..c410190e 100644 --- a/opennurbs_nurbscurve.cpp +++ b/opennurbs_nurbscurve.cpp @@ -2049,6 +2049,15 @@ const ON_4dPoint ON_NurbsCurve::ControlPoint( return cv; } +const ON_2dex ON_NurbsCurve::ControlPointSpans(int control_point_index) const +{ + return ON_BsplineControlPointSpans(m_order, m_cv_count, control_point_index); +} + +const ON_Interval ON_NurbsCurve::ControlPointSupport(int control_point_index) const +{ + return ON_BsplineControlPointSupport(m_order, m_cv_count, m_knot, control_point_index); +} bool ON_NurbsCurve::GetCV( int i, ON_3dPoint& point ) const diff --git a/opennurbs_nurbscurve.h b/opennurbs_nurbscurve.h index b73e9309..498a23e6 100644 --- a/opennurbs_nurbscurve.h +++ b/opennurbs_nurbscurve.h @@ -793,6 +793,50 @@ public: int cv_index ) const; + /// + /// Get the indices of the spans where the specified + /// control point is active. + /// Note that a NURBS curve with n control points has (n-degree) many spans. + /// If 0 <= span_index < (n-degree), then + /// CV(span_index), ..., CV(span_index+degree) + /// and + /// {knot[span_index], ..., knot[span_index+2*degree-1]} + /// are the control points and knots that are active in that span. + /// The domain of the span is + /// [knot[span_index+degree-1], knot[span_index+degree]]. + /// + /// + /// 0 <= control_point_index < control_point_count + /// + /// + /// If the input is valid, + /// then the spans whose index satisfies + /// ON_2dex.i <= span_index < ON_2dex.j + /// use the specified control point. + /// If the iput is not valid, then ON_2dex(0,0) is returned. + /// + const ON_2dex ControlPointSpans( + int control_point_index + ) const; + + /// + /// Get the interval in the curve's domain where the specified + /// control point is active (helps determine the value of the curve). + /// The returned inteval will be contained in the curve's domain. + /// Put another way, if ControlPointSupport(i).Contains(t) is false, + /// then curve->PointAt(t) does not depend on the location of CV(i). + /// + /// + /// Index of the control point. + /// 0 < = control_point_index < CVCount(). + /// + /// + /// The parameter interval where the specified control point is active. + /// + const ON_Interval ControlPointSupport( + int control_point_index + ) const; + /* Description: Returns the style of control vertices in the m_cv array. diff --git a/opennurbs_nurbssurface.cpp b/opennurbs_nurbssurface.cpp index 70c3769a..a7aadbb5 100644 --- a/opennurbs_nurbssurface.cpp +++ b/opennurbs_nurbssurface.cpp @@ -245,12 +245,34 @@ const ON_4dPoint ON_NurbsSurface::ControlPoint( return cv; } +const ON_2dex ON_NurbsSurface::ControlPointSpans(int dir, int control_point_index) const +{ + if (0 == dir || 1 == dir) + return ON_BsplineControlPointSpans( + this->m_order[dir], + this->m_cv_count[dir], + control_point_index + ); + return ON_2dex(0, 0); +} + +const ON_Interval ON_NurbsSurface::ControlPointSupport(int dir, int control_point_index) const +{ + if (0 == dir || 1 == dir) + return ON_BsplineControlPointSupport( + this->m_order[dir], + this->m_cv_count[dir], + this->m_knot[dir], + control_point_index + ); + return ON_Interval::Nan; +} + ON::point_style ON_NurbsSurface::CVStyle() const { return m_is_rat ? ON::homogeneous_rational : ON::not_rational; } - double ON_NurbsSurface::Weight( int i, int j ) const { return (m_cv && m_is_rat) ? m_cv[i*m_cv_stride[0] + j*m_cv_stride[1] + m_dim] : 1.0; diff --git a/opennurbs_nurbssurface.h b/opennurbs_nurbssurface.h index 3977e4cc..84a9f9d1 100644 --- a/opennurbs_nurbssurface.h +++ b/opennurbs_nurbssurface.h @@ -757,6 +757,53 @@ public: int j ) const; + /// + /// Get the indices of the spans where the specified + /// control point is active. + /// + /// + /// 0: first surface paramter + /// 1: second surface parameter + /// + /// + /// 0 <= control_point_index < control_point_count + /// + /// + /// If the input is valid, + /// then the spans in the specified parameter direction whose index satisfies + /// ON_2dex.i <= span_index < ON_2dex.j + /// use the specified control points. + /// If the iput is not valid, then ON_2dex(0,0) is returned. + /// + const ON_2dex ControlPointSpans( + int dir, + int control_point_index + ) const; + + + /// + /// Get the interval in the surface's domain where the specified + /// control point is active (helps determine the value of the surface). + /// Put another way, if + /// ControlPointSupport(0,i).Contains(u) or ControlPointSupport(1,j).Contains(v) + /// is false, then surface->PointAt(u,v) does not depend on the location of CV(i,j). + /// + /// + /// 0: first surface paramter + /// 1: second surface parameter + /// + /// + /// If dir = 0, then this is the first index of the surface control point. + /// If dir = 1, then this is the second index of the surface control point. + /// 0 <= control_point_index < CVCount(dir). + /// + /// + /// The parameter interval where the specified control point is active. + /// + const ON_Interval ControlPointSupport( + int dir, + int control_point_index + ) const; /* Description: diff --git a/opennurbs_precompiledheader.cpp b/opennurbs_precompiledheader.cpp index 8cff2ae4..425b71c4 100644 --- a/opennurbs_precompiledheader.cpp +++ b/opennurbs_precompiledheader.cpp @@ -28,6 +28,7 @@ #error Incorrect _M_... setting for x64 build #endif +#if !defined(_M_ARM64) #if !defined(_M_X64) // This should be automatically defined by the compiler #error _M_X64 should be defined for x64 builds @@ -43,6 +44,7 @@ // This should be automatically defined by the compiler #error _M_AMD64 should be defined for x64 builds #endif +#endif // !defined(_M_ARM64) #endif @@ -104,6 +106,7 @@ #error Incorrect _M_... setting for x64 build #endif +#if !defined(_M_ARM64) #if !defined(_M_X64) // This should be automatically defined by the compiler #error _M_X64 should be defined for x64 builds @@ -119,6 +122,7 @@ // This should be automatically defined by the compiler #error _M_AMD64 should be defined for x64 builds #endif +#endif // !defined(_M_ARM64) #endif diff --git a/opennurbs_public.sln b/opennurbs_public.sln index 6db51cc0..e3d36c93 100644 --- a/opennurbs_public.sln +++ b/opennurbs_public.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2020 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35303.130 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib\zlib.vcxproj", "{7B90C09F-DC78-42B2-AD34-380F6D466B29}" EndProject @@ -55,80 +55,156 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_test", "example_tes EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|ARM64EC = Debug|ARM64EC Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 + Release|ARM64 = Release|ARM64 + Release|ARM64EC = Release|ARM64EC Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Debug|ARM64.Build.0 = Debug|ARM64 + {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Debug|Win32.ActiveCfg = Debug|Win32 {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Debug|Win32.Build.0 = Debug|Win32 {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Debug|x64.ActiveCfg = Debug|x64 {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Debug|x64.Build.0 = Debug|x64 + {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Release|ARM64.ActiveCfg = Release|ARM64 + {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Release|ARM64.Build.0 = Release|ARM64 + {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Release|ARM64EC.Build.0 = Release|ARM64EC {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Release|Win32.ActiveCfg = Release|Win32 {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Release|Win32.Build.0 = Release|Win32 {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Release|x64.ActiveCfg = Release|x64 {7B90C09F-DC78-42B2-AD34-380F6D466B29}.Release|x64.Build.0 = Release|x64 + {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Debug|ARM64.Build.0 = Debug|ARM64 + {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Debug|Win32.ActiveCfg = Debug|Win32 {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Debug|Win32.Build.0 = Debug|Win32 {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Debug|x64.ActiveCfg = Debug|x64 {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Debug|x64.Build.0 = Debug|x64 + {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Release|ARM64.ActiveCfg = Release|ARM64 + {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Release|ARM64.Build.0 = Release|ARM64 + {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Release|ARM64EC.Build.0 = Release|ARM64EC {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Release|Win32.ActiveCfg = Release|Win32 {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Release|Win32.Build.0 = Release|Win32 {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Release|x64.ActiveCfg = Release|x64 {765B902B-4562-4035-8BBF-EBAB2A9602A3}.Release|x64.Build.0 = Release|x64 + {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Debug|ARM64.Build.0 = Debug|ARM64 + {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Debug|Win32.ActiveCfg = Debug|Win32 {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Debug|Win32.Build.0 = Debug|Win32 {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Debug|x64.ActiveCfg = Debug|x64 {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Debug|x64.Build.0 = Debug|x64 + {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Release|ARM64.ActiveCfg = Release|ARM64 + {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Release|ARM64.Build.0 = Release|ARM64 + {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Release|ARM64EC.Build.0 = Release|ARM64EC {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Release|Win32.ActiveCfg = Release|Win32 {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Release|Win32.Build.0 = Release|Win32 {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Release|x64.ActiveCfg = Release|x64 {14A32F02-5A5D-49F7-9156-7EA3608C5900}.Release|x64.Build.0 = Release|x64 + {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Debug|ARM64.Build.0 = Debug|ARM64 + {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Debug|Win32.ActiveCfg = Debug|Win32 {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Debug|Win32.Build.0 = Debug|Win32 {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Debug|x64.ActiveCfg = Debug|x64 {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Debug|x64.Build.0 = Debug|x64 + {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Release|ARM64.ActiveCfg = Release|ARM64 + {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Release|ARM64.Build.0 = Release|ARM64 + {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Release|ARM64EC.Build.0 = Release|ARM64EC {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Release|Win32.ActiveCfg = Release|Win32 {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Release|Win32.Build.0 = Release|Win32 {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Release|x64.ActiveCfg = Release|x64 {F6FC693F-2EDB-4DEC-936A-C15BE1195EC4}.Release|x64.Build.0 = Release|x64 + {75A90363-D54A-4C56-B4FC-900E7540331C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {75A90363-D54A-4C56-B4FC-900E7540331C}.Debug|ARM64.Build.0 = Debug|ARM64 + {75A90363-D54A-4C56-B4FC-900E7540331C}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {75A90363-D54A-4C56-B4FC-900E7540331C}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {75A90363-D54A-4C56-B4FC-900E7540331C}.Debug|Win32.ActiveCfg = Debug|Win32 {75A90363-D54A-4C56-B4FC-900E7540331C}.Debug|Win32.Build.0 = Debug|Win32 {75A90363-D54A-4C56-B4FC-900E7540331C}.Debug|x64.ActiveCfg = Debug|x64 {75A90363-D54A-4C56-B4FC-900E7540331C}.Debug|x64.Build.0 = Debug|x64 + {75A90363-D54A-4C56-B4FC-900E7540331C}.Release|ARM64.ActiveCfg = Release|ARM64 + {75A90363-D54A-4C56-B4FC-900E7540331C}.Release|ARM64.Build.0 = Release|ARM64 + {75A90363-D54A-4C56-B4FC-900E7540331C}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {75A90363-D54A-4C56-B4FC-900E7540331C}.Release|ARM64EC.Build.0 = Release|ARM64EC {75A90363-D54A-4C56-B4FC-900E7540331C}.Release|Win32.ActiveCfg = Release|Win32 {75A90363-D54A-4C56-B4FC-900E7540331C}.Release|Win32.Build.0 = Release|Win32 {75A90363-D54A-4C56-B4FC-900E7540331C}.Release|x64.ActiveCfg = Release|x64 {75A90363-D54A-4C56-B4FC-900E7540331C}.Release|x64.Build.0 = Release|x64 + {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Debug|ARM64.Build.0 = Debug|ARM64 + {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Debug|Win32.ActiveCfg = Debug|Win32 {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Debug|Win32.Build.0 = Debug|Win32 {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Debug|x64.ActiveCfg = Debug|x64 {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Debug|x64.Build.0 = Debug|x64 + {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Release|ARM64.ActiveCfg = Release|ARM64 + {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Release|ARM64.Build.0 = Release|ARM64 + {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Release|ARM64EC.Build.0 = Release|ARM64EC {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Release|Win32.ActiveCfg = Release|Win32 {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Release|Win32.Build.0 = Release|Win32 {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Release|x64.ActiveCfg = Release|x64 {1356641D-0B22-4123-B519-A69EE5CDC7F8}.Release|x64.Build.0 = Release|x64 + {23288C65-E3EB-4D09-A648-22E1636EB40F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {23288C65-E3EB-4D09-A648-22E1636EB40F}.Debug|ARM64.Build.0 = Debug|ARM64 + {23288C65-E3EB-4D09-A648-22E1636EB40F}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {23288C65-E3EB-4D09-A648-22E1636EB40F}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {23288C65-E3EB-4D09-A648-22E1636EB40F}.Debug|Win32.ActiveCfg = Debug|Win32 {23288C65-E3EB-4D09-A648-22E1636EB40F}.Debug|Win32.Build.0 = Debug|Win32 {23288C65-E3EB-4D09-A648-22E1636EB40F}.Debug|x64.ActiveCfg = Debug|x64 {23288C65-E3EB-4D09-A648-22E1636EB40F}.Debug|x64.Build.0 = Debug|x64 + {23288C65-E3EB-4D09-A648-22E1636EB40F}.Release|ARM64.ActiveCfg = Release|ARM64 + {23288C65-E3EB-4D09-A648-22E1636EB40F}.Release|ARM64.Build.0 = Release|ARM64 + {23288C65-E3EB-4D09-A648-22E1636EB40F}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {23288C65-E3EB-4D09-A648-22E1636EB40F}.Release|ARM64EC.Build.0 = Release|ARM64EC {23288C65-E3EB-4D09-A648-22E1636EB40F}.Release|Win32.ActiveCfg = Release|Win32 {23288C65-E3EB-4D09-A648-22E1636EB40F}.Release|Win32.Build.0 = Release|Win32 {23288C65-E3EB-4D09-A648-22E1636EB40F}.Release|x64.ActiveCfg = Release|x64 {23288C65-E3EB-4D09-A648-22E1636EB40F}.Release|x64.Build.0 = Release|x64 + {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Debug|ARM64.Build.0 = Debug|ARM64 + {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Debug|Win32.ActiveCfg = Debug|Win32 {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Debug|Win32.Build.0 = Debug|Win32 {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Debug|x64.ActiveCfg = Debug|x64 {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Debug|x64.Build.0 = Debug|x64 + {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Release|ARM64.ActiveCfg = Release|ARM64 + {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Release|ARM64.Build.0 = Release|ARM64 + {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Release|ARM64EC.Build.0 = Release|ARM64EC {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Release|Win32.ActiveCfg = Release|Win32 {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Release|Win32.Build.0 = Release|Win32 {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Release|x64.ActiveCfg = Release|x64 {15C98F21-2AC9-44C8-8752-25DAFA1C739F}.Release|x64.Build.0 = Release|x64 + {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Debug|ARM64.Build.0 = Debug|ARM64 + {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Debug|ARM64EC.Build.0 = Debug|ARM64EC {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Debug|Win32.ActiveCfg = Debug|Win32 {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Debug|Win32.Build.0 = Debug|Win32 {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Debug|x64.ActiveCfg = Debug|x64 {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Debug|x64.Build.0 = Debug|x64 + {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Release|ARM64.ActiveCfg = Release|ARM64 + {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Release|ARM64.Build.0 = Release|ARM64 + {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Release|ARM64EC.Build.0 = Release|ARM64EC {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Release|Win32.ActiveCfg = Release|Win32 {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Release|Win32.Build.0 = Release|Win32 {865E8D8D-8E03-4601-A7B5-A8C4094ECB8B}.Release|x64.ActiveCfg = Release|x64 diff --git a/opennurbs_public.vcxproj b/opennurbs_public.vcxproj index 55147b08..c0bd7571 100644 --- a/opennurbs_public.vcxproj +++ b/opennurbs_public.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -43,12 +59,36 @@ v142 Unicode + + DynamicLibrary + true + v142 + Unicode + + + DynamicLibrary + true + v142 + Unicode + DynamicLibrary false v142 Unicode + + DynamicLibrary + false + v142 + Unicode + + + DynamicLibrary + false + v142 + Unicode + @@ -64,14 +104,32 @@ + + + + + + + + + + + + + + + + + + Use @@ -119,6 +177,39 @@ Usp10.lib;Shlwapi.lib;Rpcrt4.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + Use + opennurbs.h + Disabled + WIN64;_DEBUG;_WINDOWS;_USRDLL;OPENNURBS_EXPORTS;%(PreprocessorDefinitions) + true + ProgramDatabase + true + + + Windows + true + Usp10.lib;Shlwapi.lib;Rpcrt4.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Use + opennurbs.h + Disabled + WIN64;_DEBUG;_WINDOWS;_USRDLL;OPENNURBS_EXPORTS;%(PreprocessorDefinitions) + true + ProgramDatabase + true + /bigobj %(AdditionalOptions) + + + Windows + true + Usp10.lib;Shlwapi.lib;Rpcrt4.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + Use @@ -135,6 +226,39 @@ Usp10.lib;Shlwapi.lib;Rpcrt4.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + Use + opennurbs.h + MaxSpeed + true + true + WIN64;NDEBUG;_WINDOWS;_USRDLL;OPENNURBS_EXPORTS;%(PreprocessorDefinitions) + true + + + Windows + true + Usp10.lib;Shlwapi.lib;Rpcrt4.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Use + opennurbs.h + MaxSpeed + true + true + WIN64;NDEBUG;_WINDOWS;_USRDLL;OPENNURBS_EXPORTS;%(PreprocessorDefinitions) + true + /bigobj %(AdditionalOptions) + + + Windows + true + Usp10.lib;Shlwapi.lib;Rpcrt4.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + diff --git a/opennurbs_public_staticlib.vcxproj b/opennurbs_public_staticlib.vcxproj index 63815130..49ffb7b4 100644 --- a/opennurbs_public_staticlib.vcxproj +++ b/opennurbs_public_staticlib.vcxproj @@ -1,10 +1,26 @@  + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -44,6 +60,18 @@ v142 Unicode + + StaticLibrary + true + v142 + Unicode + + + StaticLibrary + true + v142 + Unicode + StaticLibrary false @@ -51,6 +79,20 @@ true Unicode + + StaticLibrary + false + v142 + true + Unicode + + + StaticLibrary + false + v142 + true + Unicode + @@ -68,10 +110,26 @@ + + + + + + + + + + + + + + + + @@ -102,6 +160,36 @@ Windows + + + Use + Disabled + ON_COMPILING_OPENNURBS;WIN64;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + opennurbs.h + ProgramDatabase + true + true + + + Windows + + + + + Use + Disabled + ON_COMPILING_OPENNURBS;WIN64;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + opennurbs.h + ProgramDatabase + true + true + + + Windows + + Use @@ -136,6 +224,40 @@ true + + + Use + MaxSpeed + true + true + ON_COMPILING_OPENNURBS;WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + opennurbs.h + true + + + Windows + true + true + + + + + Use + MaxSpeed + true + true + ON_COMPILING_OPENNURBS;WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + opennurbs.h + true + + + Windows + true + true + + diff --git a/opennurbs_public_version.h b/opennurbs_public_version.h index bde30c95..e107d9de 100644 --- a/opennurbs_public_version.h +++ b/opennurbs_public_version.h @@ -6,7 +6,7 @@ // To update version numbers, edit ..\build\build_dates.msbuild #define RMA_VERSION_MAJOR 8 -#define RMA_VERSION_MINOR 12 +#define RMA_VERSION_MINOR 13 //////////////////////////////////////////////////////////////// // @@ -14,9 +14,9 @@ // first step in each build. // #define RMA_VERSION_YEAR 2024 -#define RMA_VERSION_MONTH 10 -#define RMA_VERSION_DATE 8 -#define RMA_VERSION_HOUR 7 +#define RMA_VERSION_MONTH 11 +#define RMA_VERSION_DATE 12 +#define RMA_VERSION_HOUR 13 #define RMA_VERSION_MINUTE 0 //////////////////////////////////////////////////////////////// @@ -35,8 +35,8 @@ // 3 = build system release build #define RMA_VERSION_BRANCH 0 -#define VERSION_WITH_COMMAS 8,12,24282,7000 -#define VERSION_WITH_PERIODS 8.12.24282.07000 +#define VERSION_WITH_COMMAS 8,13,24317,13000 +#define VERSION_WITH_PERIODS 8.13.24317.13000 #define COPYRIGHT "Copyright (C) 1993-2024, Robert McNeel & Associates. All Rights Reserved." #define SPECIAL_BUILD_DESCRIPTION "Public OpenNURBS C++ 3dm file IO library." @@ -44,11 +44,11 @@ #define RMA_VERSION_NUMBER_MAJOR_WSTRING L"8" #define RMA_PREVIOUS_VERSION_NUMBER_MAJOR_WSTRING L"7" -#define RMA_VERSION_NUMBER_SR_STRING "SR12" -#define RMA_VERSION_NUMBER_SR_WSTRING L"SR12" +#define RMA_VERSION_NUMBER_SR_STRING "SR13" +#define RMA_VERSION_NUMBER_SR_WSTRING L"SR13" -#define RMA_VERSION_WITH_PERIODS_STRING "8.12.24282.07000" -#define RMA_VERSION_WITH_PERIODS_WSTRING L"8.12.24282.07000" +#define RMA_VERSION_WITH_PERIODS_STRING "8.13.24317.13000" +#define RMA_VERSION_WITH_PERIODS_WSTRING L"8.13.24317.13000" diff --git a/opennurbs_system.h b/opennurbs_system.h index 31cbfd19..a114c3a6 100644 --- a/opennurbs_system.h +++ b/opennurbs_system.h @@ -360,7 +360,7 @@ typedef ON__UINT32 wchar_t; #pragma ON_PRAGMA_WARNING_AFTER_DIRTY_INCLUDE #endif -#if defined(_M_X64) && defined(WIN32) && defined(WIN64) +#if (defined(_M_X64) || defined(_M_ARM64)) && defined(WIN32) && defined(WIN64) // 23 August 2007 Dale Lear // windows.h unconditionally defines WIN32 This is a bug // and the hope is this simple undef will let us continue. diff --git a/opennurbs_system_runtime.h b/opennurbs_system_runtime.h index 2745e110..95f9c770 100644 --- a/opennurbs_system_runtime.h +++ b/opennurbs_system_runtime.h @@ -132,7 +132,7 @@ #define ON_RUNTIME_WIN_WINOS #endif -#if defined(_M_X64) || defined(_WIN64) +#if defined(_M_X64) || defined(_WIN64) || defined(_M_ARM64) #define ON_64BIT_RUNTIME #elif defined(_M_X86) || defined(_WIN32) #define ON_32BIT_RUNTIME @@ -141,7 +141,7 @@ #endif #if !defined(ON_LITTLE_ENDIAN) -#if (defined(_M_X64) || defined(_M_IX86) || defined (__i386__) || defined( __x86_64__ )) +#if (defined(_M_X64) || defined(_M_IX86) || defined (__i386__) || defined( __x86_64__ ) || defined(_M_ARM64)) #define ON_LITTLE_ENDIAN #endif #endif @@ -198,7 +198,7 @@ #error Exactly one of ON_LITTLE_ENDIAN or ON_BIG_ENDIAN should be defined. #endif -#if (!defined(ON_ARM_64) && defined(__aarch64__)) +#if (!defined(ON_ARM_64) && (defined(__aarch64__) || defined(_M_ARM64))) #define ON_ARM_64 #endif diff --git a/zlib/zlib.vcxproj b/zlib/zlib.vcxproj index c77a7908..b408fa6d 100644 --- a/zlib/zlib.vcxproj +++ b/zlib/zlib.vcxproj @@ -1,6 +1,14 @@ + + Debug + ARM64 + + + Debug + ARM64EC + Debug Win32 @@ -9,6 +17,14 @@ Debug x64 + + Release + ARM64 + + + Release + ARM64EC + Release Win32 @@ -62,6 +78,18 @@ v142 Unicode + + StaticLibrary + true + v142 + Unicode + + + StaticLibrary + true + v142 + Unicode + StaticLibrary false @@ -74,6 +102,18 @@ v142 Unicode + + StaticLibrary + false + v142 + Unicode + + + StaticLibrary + false + v142 + Unicode + @@ -85,6 +125,14 @@ + + + + + + + + @@ -93,6 +141,14 @@ + + + + + + + + @@ -120,6 +176,32 @@ true + + + + + Disabled + WIN64;_DEBUG;_LIB;%(PreprocessorDefinitions) + ProgramDatabase + + + Windows + true + + + + + + + Disabled + WIN64;_DEBUG;_LIB;%(PreprocessorDefinitions) + ProgramDatabase + + + Windows + true + + @@ -149,6 +231,36 @@ + + + + + MaxSpeed + true + true + WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions) + + + Windows + true + + + + + + + + MaxSpeed + true + true + WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions) + + + Windows + true + + +